sterzycom/assets/js/components/prism-latex.js
2019-01-25 13:45:36 +01:00

61 lines
1.6 KiB
JavaScript
Executable file

(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)\*?)\})([\s\S]*?)(?=\\end\{\2\})/,
lookbehind: true
},
/*
* equations can be between $ $ or \( \) or \[ \]
* (all are multiline)
*/
'equation': [
{
pattern: /\$(?:\\?[\s\S])*?\$|\\\((?:\\?[\s\S])*?\\\)|\\\[(?:\\?[\s\S])*?\\\]/,
inside: insideEqu,
alias: 'string'
},
{
pattern: /(\\begin\{((?:equation|math|eqnarray|align|multline|gather)\*?)\})([\s\S]*?)(?=\\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);