CS-Notes/docs/_style/prism-master/components/prism-latex.js
2018-12-19 14:09:39 +08:00

62 lines
1.6 KiB
JavaScript

(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);