Index: lib/src/prism/components/prism-latex.js |
diff --git a/lib/src/prism/components/prism-latex.js b/lib/src/prism/components/prism-latex.js |
index faeec076d744d63acefa3ffc7ffec8c1b6977dea..d736eadf4f1ad8ea9e9a54b95c7ac3d0a6597838 100644 |
--- a/lib/src/prism/components/prism-latex.js |
+++ b/lib/src/prism/components/prism-latex.js |
@@ -1,6 +1,61 @@ |
-Prism.languages.latex = { |
- 'comment': /%.*?(\r?\n|$)$/m, |
- 'string': /(\$)(\\?.)*?\1/, |
- 'punctuation': /[{}]/, |
- 'selector': /\\[a-z;,:\.]*/i |
-}; |
+(function(Prism) { |
+ var funcPattern = /\\([^a-z()[\]]|[a-z\*]+)/i, |
+ insideEqu = { |
+ 'equation-command': { |
+ pattern: funcPattern, |
+ alias: 'regex' |
+ } |
+ }; |
+ |
+ Prism.languages.latex = { |
+ 'comment': /%.*/m, |
+ // the verbatim environment prints whitespace to the document |
+ 'cdata': { |
+ pattern: /(\\begin\{((?:verbatim|lstlisting)\*?)\})([\w\W]*?)(?=\\end\{\2\})/, |
+ lookbehind: true |
+ }, |
+ /* |
+ * equations can be between $ $ or \( \) or \[ \] |
+ * (all are multiline) |
+ */ |
+ 'equation': [ |
+ { |
+ pattern: /\$(?:\\?[\w\W])*?\$|\\\((?:\\?[\w\W])*?\\\)|\\\[(?:\\?[\w\W])*?\\\]/, |
+ inside: insideEqu, |
+ alias: 'string' |
+ }, |
+ { |
+ pattern: /(\\begin\{((?:equation|math|eqnarray|align|multline|gather)\*?)\})([\w\W]*?)(?=\\end\{\2\})/, |
+ lookbehind: true, |
+ inside: insideEqu, |
+ alias: 'string' |
+ } |
+ ], |
+ /* |
+ * arguments which are keywords or references are highlighted |
+ * as keywords |
+ */ |
+ 'keyword': { |
+ pattern: /(\\(?:begin|end|ref|cite|label|usepackage|documentclass)(?:\[[^\]]+\])?\{)[^}]+(?=\})/, |
+ lookbehind: true |
+ }, |
+ 'url': { |
+ pattern: /(\\url\{)[^}]+(?=\})/, |
+ lookbehind: true |
+ }, |
+ /* |
+ * section or chapter headlines are highlighted as bold so that |
+ * they stand out more |
+ */ |
+ 'headline': { |
+ pattern: /(\\(?:part|chapter|section|subsection|frametitle|subsubsection|paragraph|subparagraph|subsubparagraph|subsubsubparagraph)\*?(?:\[[^\]]+\])?\{)[^}]+(?=\}(?:\[[^\]]+\])?)/, |
+ lookbehind: true, |
+ alias: 'class-name' |
+ }, |
+ 'function': { |
+ pattern: funcPattern, |
+ alias: 'selector' |
+ }, |
+ 'punctuation': /[[\]{}&]/ |
+ }; |
+})(Prism); |