tm-grammars
Version:
Collecton of TextMate grammars in JSON
1,644 lines • 134 kB
JSON
{
"displayName": "LaTeX",
"name": "latex",
"patterns": [
{
"match": "(?<=\\\\(?:[@\\w]|[@\\w]{2}|[@\\w]{3}|[@\\w]{4}|[@\\w]{5}|[@\\w]{6}))\\s",
"name": "meta.space-after-command.latex"
},
{
"include": "#songs-env"
},
{
"include": "#embedded-code-env"
},
{
"include": "#verbatim-env"
},
{
"include": "#document-env"
},
{
"include": "#all-balanced-env"
},
{
"include": "#documentclass-usepackage-macro"
},
{
"include": "#input-macro"
},
{
"include": "#sections-macro"
},
{
"include": "#hyperref-macro"
},
{
"include": "#newcommand-macro"
},
{
"include": "#text-font-macro"
},
{
"include": "#citation-macro"
},
{
"include": "#references-macro"
},
{
"include": "#label-macro"
},
{
"include": "#verb-macro"
},
{
"include": "#inline-code-macro"
},
{
"include": "#all-other-macro"
},
{
"include": "#display-math"
},
{
"include": "#inline-math"
},
{
"include": "#column-specials"
},
{
"include": "text.tex"
}
],
"repository": {
"all-balanced-env": {
"patterns": [
{
"begin": "\\s*((\\\\)begin)(\\{)((?:\\+?array|equation|(?:IEEE|sub)?eqnarray|multline|align|aligned|alignat|alignedat|flalign|flaligned|flalignat|split|gather|gathered|(?:[+dr]|dr)?cases|(?:display)?math|\\+?[A-Za-z]*matrix|[BVbpv]?NiceMatrix|[BVbpv]?NiceArray|(?:arg)?m(?:ini|axi))[!*]?)(})(\\s*\\n)?",
"captures": {
"1": {
"name": "support.function.be.latex"
},
"2": {
"name": "punctuation.definition.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.begin.latex"
},
"4": {
"name": "variable.parameter.function.latex"
},
"5": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "meta.math.block.latex support.class.math.block.environment.latex",
"end": "\\s*((\\\\)end)(\\{)(\\4)(})(?:\\s*\\n)?",
"name": "meta.function.environment.math.latex",
"patterns": [
{
"match": "(?<!\\\\)&",
"name": "keyword.control.equation.align.latex"
},
{
"match": "\\\\\\\\",
"name": "keyword.control.equation.newline.latex"
},
{
"include": "#label-macro"
},
{
"include": "text.tex#math-content"
},
{
"include": "$self"
}
]
},
{
"begin": "\\s*(\\\\begin\\{empheq}(?:\\[.*])?)",
"captures": {
"1": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"contentName": "meta.math.block.latex support.class.math.block.environment.latex",
"end": "\\s*(\\\\end\\{empheq})",
"name": "meta.function.environment.math.latex",
"patterns": [
{
"match": "(?<!\\\\)&",
"name": "keyword.control.equation.align.latex"
},
{
"match": "\\\\\\\\",
"name": "keyword.control.equation.newline.latex"
},
{
"include": "#label-macro"
},
{
"include": "text.tex#math-content"
},
{
"include": "$self"
}
]
},
{
"begin": "(\\s*\\\\begin\\{(tabular[*xy]?|xltabular|longtable|(?:long)?tabu|(?:long|tall)?tblr|NiceTabular[*X]?|booktabs)}(\\s*\\n)?)",
"captures": {
"1": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"contentName": "meta.data.environment.tabular.latex",
"end": "(\\s*\\\\end\\{(\\2)}(?:\\s*\\n)?)",
"name": "meta.function.environment.tabular.latex",
"patterns": [
{
"match": "(?<!\\\\)&",
"name": "keyword.control.table.cell.latex"
},
{
"match": "\\\\\\\\",
"name": "keyword.control.table.newline.latex"
},
{
"include": "$self"
}
]
},
{
"begin": "(\\s*\\\\begin\\{(itemize|enumerate|description|list)})",
"captures": {
"1": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "(\\\\end\\{\\2}(?:\\s*\\n)?)",
"name": "meta.function.environment.list.latex",
"patterns": [
{
"include": "$self"
}
]
},
{
"begin": "(\\s*\\\\begin\\{tikzpicture})",
"captures": {
"1": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "(\\\\end\\{tikzpicture}(?:\\s*\\n)?)",
"name": "meta.function.environment.latex.tikz",
"patterns": [
{
"include": "$self"
}
]
},
{
"begin": "(\\s*\\\\begin\\{frame})",
"captures": {
"1": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "(\\\\end\\{frame})",
"name": "meta.function.environment.frame.latex",
"patterns": [
{
"include": "$self"
}
]
},
{
"begin": "(\\s*\\\\begin\\{(mpost\\*?)})",
"captures": {
"1": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "(\\\\end\\{\\2}(?:\\s*\\n)?)",
"name": "meta.function.environment.latex.mpost"
},
{
"begin": "(\\s*\\\\begin\\{markdown})",
"captures": {
"1": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"contentName": "meta.embedded.markdown_latex_combined",
"end": "(\\\\end\\{markdown})",
"patterns": [
{
"include": "text.tex.markdown_latex_combined"
}
]
},
{
"begin": "(\\s*\\\\begin\\{(\\p{Alphabetic}+\\*?)})",
"captures": {
"1": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "(\\\\end\\{\\2}(?:\\s*\\n)?)",
"name": "meta.function.environment.general.latex",
"patterns": [
{
"include": "$self"
}
]
}
]
},
"all-other-macro": {
"patterns": [
{
"match": "\\\\(?:newline|pagebreak|clearpage|linebreak|pause)\\b",
"name": "keyword.control.layout.latex"
},
{
"begin": "((\\\\)marginpar)((?:\\[[^\\[]*?])*)(\\{)",
"beginCaptures": {
"1": {
"name": "support.function.marginpar.latex"
},
"2": {
"name": "punctuation.definition.function.latex"
},
"3": {
"patterns": [
{
"include": "#optional-arg-bracket"
}
]
},
"4": {
"name": "punctuation.definition.marginpar.begin.latex"
}
},
"contentName": "meta.paragraph.margin.latex",
"end": "}",
"endCaptures": {
"0": {
"name": "punctuation.definition.marginpar.end.latex"
}
},
"patterns": [
{
"include": "#braces"
},
{
"include": "$self"
}
]
},
{
"begin": "((\\\\)footnote)((?:\\[[^\\[]*?])*)(\\{)",
"beginCaptures": {
"1": {
"name": "support.function.footnote.latex"
},
"2": {
"name": "punctuation.definition.function.latex"
},
"3": {
"patterns": [
{
"include": "#optional-arg-bracket"
}
]
},
"4": {
"name": "punctuation.definition.footnote.begin.latex"
}
},
"contentName": "entity.name.footnote.latex",
"end": "}",
"endCaptures": {
"0": {
"name": "punctuation.definition.footnote.end.latex"
}
},
"patterns": [
{
"include": "#braces"
},
{
"include": "$self"
}
]
},
{
"captures": {
"0": {
"name": "keyword.other.item.latex"
},
"1": {
"name": "punctuation.definition.keyword.latex"
}
},
"match": "(\\\\)item\\b",
"name": "meta.scope.item.latex"
},
{
"captures": {
"1": {
"name": "punctuation.definition.constant.latex"
}
},
"match": "(\\\\)(text(s(terling|ixoldstyle|urd|e(ction|venoldstyle|rvicemark))|yen|n(ineoldstyle|umero|aira)|c(ircledP|o(py(left|right)|lonmonetary)|urrency|e(nt(oldstyle)?|lsius))|t(hree(superior|oldstyle|quarters(emdash)?)|i(ldelow|mes)|w(o(superior|oldstyle)|elveudash)|rademark)|interrobang(down)?|zerooldstyle|o(hm|ne(superior|half|oldstyle|quarter)|penbullet|rd((?:femin|mascul)ine))|d(i(scount|ed|v(orced)?)|o(ng|wnarrow|llar(oldstyle)?)|egree|agger(dbl)?|blhyphen(char)?)|uparrow|p(ilcrow|e(so|r(t((?:|ent)housand)|iodcentered))|aragraph|m)|e(stimated|ightoldstyle|uro)|quotes(traight((?:dbl|)base)|ingle)|f(iveoldstyle|ouroldstyle|lorin|ractionsolidus)|won|l(not|ira|e(ftarrow|af)|quill|angle|brackdbl)|a(s(cii(caron|dieresis|acute|grave|macron|breve)|teriskcentered)|cutedbl)|r(ightarrow|e(cipe|ferencemark|gistered)|quill|angle|brackdbl)|g(uarani|ravedbl)|m(ho|inus|u(sicalnote)?|arried)|b(igcircle|orn|ullet|lank|a(ht|rdbl)|rokenbar)))\\b",
"name": "constant.character.latex"
},
{
"captures": {
"1": {
"name": "punctuation.definition.variable.latex"
}
},
"match": "(\\\\)(?:[cgl]_+[@_\\p{Alphabetic}]+_[a-z]+|[qs]_[@_\\p{Alphabetic}]+[@\\p{Alphabetic}])",
"name": "variable.other.latex3.latex"
}
]
},
"autocites-arg": {
"patterns": [
{
"captures": {
"1": {
"patterns": [
{
"include": "#optional-arg-parenthesis-no-highlight"
}
]
},
"2": {
"patterns": [
{
"include": "#optional-arg-bracket-no-highlight"
}
]
},
"3": {
"name": "punctuation.definition.arguments.begin.latex"
},
"4": {
"name": "constant.other.reference.citation.latex"
},
"5": {
"name": "punctuation.definition.arguments.end.latex"
},
"6": {
"patterns": [
{
"include": "#autocites-arg"
}
]
}
},
"match": "((?:\\([^)]*\\)){0,2})((?:\\[[^]]*]){0,2})(\\{)([-.:_\\p{Alphabetic}\\p{N}]+)(})(.*)"
}
]
},
"braces": {
"begin": "(?<!\\\\)\\{",
"beginCaptures": {
"0": {
"name": "punctuation.group.begin.latex"
}
},
"end": "(?<!\\\\)}",
"endCaptures": {
"0": {
"name": "punctuation.group.end.latex"
}
},
"name": "meta.group.braces.latex",
"patterns": [
{
"include": "#text-font-macro"
},
{
"include": "#citation-macro"
},
{
"include": "#references-macro"
},
{
"include": "#label-macro"
},
{
"include": "#macro-with-args-tokenizer"
},
{
"include": "#all-other-macro"
},
{
"include": "text.tex"
},
{
"include": "#braces"
}
]
},
"citation-macro": {
"begin": "((\\\\)(?:[Aa]uto|foot|full|footfull|no|ref|short|[Tt]ext|[Pp]aren|[Ss]mart|[FPfp]vol|vol)?[Cc]ite(?:al)?(?:[pst]|author|year(?:par)?|title|url|date)?[ANP]*\\*?)((?:(?:\\([^)]*\\)){0,2}(?:\\[[^]]*]){0,2}\\{[-.:_\\p{Alphabetic}\\p{N}]*})*)(<[^]<>]*>)?((?:\\[[^]]*])*)(\\{)",
"captures": {
"1": {
"name": "keyword.control.cite.latex"
},
"2": {
"name": "punctuation.definition.keyword.latex"
},
"3": {
"patterns": [
{
"include": "#autocites-arg"
}
]
},
"4": {
"patterns": [
{
"include": "#optional-arg-angle-no-highlight"
}
]
},
"5": {
"patterns": [
{
"include": "#optional-arg-bracket-no-highlight"
}
]
},
"6": {
"name": "punctuation.definition.arguments.begin.latex"
}
},
"end": "}",
"endCaptures": {
"0": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"name": "meta.citation.latex",
"patterns": [
{
"captures": {
"1": {
"name": "comment.line.percentage.tex"
},
"2": {
"name": "punctuation.definition.comment.tex"
}
},
"match": "((%).*)$"
},
{
"match": "[-.:\\p{Alphabetic}\\p{N}]+",
"name": "constant.other.reference.citation.latex"
}
]
},
"column-specials": {
"captures": {
"1": {
"name": "punctuation.definition.column-specials.begin.latex"
},
"2": {
"name": "punctuation.definition.column-specials.end.latex"
}
},
"match": "[<>](\\{)\\$(})",
"name": "meta.column-specials.latex"
},
"display-math": {
"patterns": [
{
"begin": "\\\\\\[",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.latex"
}
},
"end": "\\\\]",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.latex"
}
},
"name": "meta.math.block.latex support.class.math.block.environment.latex",
"patterns": [
{
"include": "text.tex#math-content"
},
{
"include": "$self"
}
]
},
{
"begin": "\\$\\$",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.latex"
}
},
"end": "\\$\\$",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.latex"
}
},
"name": "meta.math.block.latex support.class.math.block.environment.latex",
"patterns": [
{
"match": "\\\\\\$",
"name": "constant.character.escape.latex"
},
{
"include": "text.tex#math-content"
},
{
"include": "$self"
}
]
}
]
},
"document-env": {
"patterns": [
{
"captures": {
"1": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"match": "(\\s*\\\\begin\\{document})",
"name": "meta.function.begin-document.latex"
},
{
"captures": {
"1": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"match": "(\\s*\\\\end\\{document})",
"name": "meta.function.end-document.latex"
}
]
},
"documentclass-usepackage-macro": {
"begin": "((\\\\)(?:usepackage|documentclass))\\b(?=[\\[{])",
"beginCaptures": {
"1": {
"name": "keyword.control.preamble.latex"
},
"2": {
"name": "punctuation.definition.function.latex"
}
},
"end": "(?<=})",
"endCaptures": {
"0": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"name": "meta.preamble.latex",
"patterns": [
{
"include": "#multiline-optional-arg"
},
{
"begin": "((?:\\G|(?<=]))\\{)",
"beginCaptures": {
"0": {
"name": "punctuation.definition.arguments.begin.latex"
}
},
"contentName": "support.class.latex",
"end": "(})",
"endCaptures": {
"0": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"patterns": [
{
"include": "$self"
}
]
}
]
},
"embedded-code-env": {
"patterns": [
{
"begin": "(?:^\\s*)?\\\\begin\\{(lstlisting|minted|pyglist)}(?=[\\[{])",
"captures": {
"0": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "\\\\end\\{\\1}",
"patterns": [
{
"include": "#multiline-optional-arg-no-highlight"
},
{
"begin": "(?:\\G|(?<=]))(\\{)(asy(?:|mptote))(})",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
},
"2": {
"name": "variable.parameter.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "source.asy",
"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)})",
"patterns": [
{
"include": "source.asy"
}
]
},
{
"begin": "(?:\\G|(?<=]))(\\{)(bash)(})",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
},
"2": {
"name": "variable.parameter.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "source.shell",
"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)})",
"patterns": [
{
"include": "source.shell"
}
]
},
{
"begin": "(?:\\G|(?<=]))(\\{)(c(?:|pp))(})",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
},
"2": {
"name": "variable.parameter.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "source.cpp.embedded.latex",
"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)})",
"patterns": [
{
"include": "source.cpp.embedded.latex"
}
]
},
{
"begin": "(?:\\G|(?<=]))(\\{)(css)(})",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
},
"2": {
"name": "variable.parameter.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "source.css",
"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)})",
"patterns": [
{
"include": "source.css"
}
]
},
{
"begin": "(?:\\G|(?<=]))(\\{)(gnuplot)(})",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
},
"2": {
"name": "variable.parameter.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "source.gnuplot",
"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)})",
"patterns": [
{
"include": "source.gnuplot"
}
]
},
{
"begin": "(?:\\G|(?<=]))(\\{)(h(?:s|askell))(})",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
},
"2": {
"name": "variable.parameter.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "source.haskell",
"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)})",
"patterns": [
{
"include": "source.haskell"
}
]
},
{
"begin": "(?:\\G|(?<=]))(\\{)(html)(})",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
},
"2": {
"name": "variable.parameter.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "text.html",
"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)})",
"patterns": [
{
"include": "text.html.basic"
}
]
},
{
"begin": "(?:\\G|(?<=]))(\\{)(java)(})",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
},
"2": {
"name": "variable.parameter.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "source.java",
"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)})",
"patterns": [
{
"include": "source.java"
}
]
},
{
"begin": "(?:\\G|(?<=]))(\\{)(j(?:l|ulia))(})",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
},
"2": {
"name": "variable.parameter.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "source.julia",
"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)})",
"patterns": [
{
"include": "source.julia"
}
]
},
{
"begin": "(?:\\G|(?<=]))(\\{)(j(?:s|avascript))(})",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
},
"2": {
"name": "variable.parameter.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "source.js",
"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)})",
"patterns": [
{
"include": "source.js"
}
]
},
{
"begin": "(?:\\G|(?<=]))(\\{)(lua)(})",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
},
"2": {
"name": "variable.parameter.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "source.lua",
"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)})",
"patterns": [
{
"include": "source.lua"
}
]
},
{
"begin": "(?:\\G|(?<=]))(\\{)(py|python|sage)(})",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
},
"2": {
"name": "variable.parameter.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "source.python",
"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)})",
"patterns": [
{
"include": "source.python"
}
]
},
{
"begin": "(?:\\G|(?<=]))(\\{)(r(?:b|uby))(})",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
},
"2": {
"name": "variable.parameter.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "source.ruby",
"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)})",
"patterns": [
{
"include": "source.ruby"
}
]
},
{
"begin": "(?:\\G|(?<=]))(\\{)(rust)(})",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
},
"2": {
"name": "variable.parameter.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "source.rust",
"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)})",
"patterns": [
{
"include": "source.rust"
}
]
},
{
"begin": "(?:\\G|(?<=]))(\\{)(t(?:s|ypescript))(})",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
},
"2": {
"name": "variable.parameter.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "source.ts",
"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)})",
"patterns": [
{
"include": "source.ts"
}
]
},
{
"begin": "(?:\\G|(?<=]))(\\{)(xml)(})",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
},
"2": {
"name": "variable.parameter.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "text.xml",
"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)})",
"patterns": [
{
"include": "text.xml"
}
]
},
{
"begin": "(?:\\G|(?<=]))(\\{)(yaml)(})",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
},
"2": {
"name": "variable.parameter.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "source.yaml",
"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)})",
"patterns": [
{
"include": "source.yaml"
}
]
},
{
"begin": "(?:\\G|(?<=]))(\\{)([A-Za-z]*)(})",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
},
"2": {
"name": "variable.parameter.function.latex"
},
"3": {
"name": "punctuation.definition.arguments.end.latex"
}
},
"contentName": "meta.function.embedded.latex",
"end": "^\\s*(?=\\\\end\\{(?:lstlisting|minted|pyglist)})",
"name": "meta.embedded.block.generic.latex"
}
]
},
{
"begin": "\\s*\\\\begin\\{asy(?:|code)\\*?}(?:\\[[-0-9A-Z_a-z]*])?(?=[\\[{]|\\s*$)",
"captures": {
"0": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "\\s*\\\\end\\{asy(?:|code)\\*?}",
"patterns": [
{
"include": "#multiline-optional-arg-no-highlight"
},
{
"begin": "(?:\\G|(?<=]))(\\{)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
}
},
"contentName": "variable.parameter.function.latex",
"end": "(})",
"endCaptures": {
"1": {
"name": "punctuation.definition.arguments.end.latex"
}
}
},
{
"begin": "^(?=\\s*)",
"contentName": "source.asymptote",
"end": "^\\s*(?=\\\\end\\{asy(?:|code)\\*?})",
"patterns": [
{
"include": "source.asymptote"
}
]
}
]
},
{
"begin": "\\s*\\\\begin\\{cppcode\\*?}(?:\\[[-0-9A-Z_a-z]*])?(?=[\\[{]|\\s*$)",
"captures": {
"0": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "\\s*\\\\end\\{cppcode\\*?}",
"patterns": [
{
"include": "#multiline-optional-arg-no-highlight"
},
{
"begin": "(?:\\G|(?<=]))(\\{)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
}
},
"contentName": "variable.parameter.function.latex",
"end": "(})",
"endCaptures": {
"1": {
"name": "punctuation.definition.arguments.end.latex"
}
}
},
{
"begin": "^(?=\\s*)",
"contentName": "source.cpp.embedded.latex",
"end": "^\\s*(?=\\\\end\\{cppcode\\*?})",
"patterns": [
{
"include": "source.cpp.embedded.latex"
}
]
}
]
},
{
"begin": "\\s*\\\\begin\\{dot(?:2tex|code)\\*?}(?:\\[[-0-9A-Z_a-z]*])?(?=[\\[{]|\\s*$)",
"captures": {
"0": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "\\s*\\\\end\\{dot(?:2tex|code)\\*?}",
"patterns": [
{
"include": "#multiline-optional-arg-no-highlight"
},
{
"begin": "(?:\\G|(?<=]))(\\{)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
}
},
"contentName": "variable.parameter.function.latex",
"end": "(})",
"endCaptures": {
"1": {
"name": "punctuation.definition.arguments.end.latex"
}
}
},
{
"begin": "^(?=\\s*)",
"contentName": "source.dot",
"end": "^\\s*(?=\\\\end\\{dot(?:2tex|code)\\*?})",
"patterns": [
{
"include": "source.dot"
}
]
}
]
},
{
"begin": "\\s*\\\\begin\\{gnuplot\\*?}(?:\\[[-0-9A-Z_a-z]*])?(?=[\\[{]|\\s*$)",
"captures": {
"0": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "\\s*\\\\end\\{gnuplot\\*?}",
"patterns": [
{
"include": "#multiline-optional-arg-no-highlight"
},
{
"begin": "(?:\\G|(?<=]))(\\{)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
}
},
"contentName": "variable.parameter.function.latex",
"end": "(})",
"endCaptures": {
"1": {
"name": "punctuation.definition.arguments.end.latex"
}
}
},
{
"begin": "^(?=\\s*)",
"contentName": "source.gnuplot",
"end": "^\\s*(?=\\\\end\\{gnuplot\\*?})",
"patterns": [
{
"include": "source.gnuplot"
}
]
}
]
},
{
"begin": "\\s*\\\\begin\\{hscode\\*?}(?:\\[[-0-9A-Z_a-z]*])?(?=[\\[{]|\\s*$)",
"captures": {
"0": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "\\s*\\\\end\\{hscode\\*?}",
"patterns": [
{
"include": "#multiline-optional-arg-no-highlight"
},
{
"begin": "(?:\\G|(?<=]))(\\{)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
}
},
"contentName": "variable.parameter.function.latex",
"end": "(})",
"endCaptures": {
"1": {
"name": "punctuation.definition.arguments.end.latex"
}
}
},
{
"begin": "^(?=\\s*)",
"contentName": "source.haskell",
"end": "^\\s*(?=\\\\end\\{hscode\\*?})",
"patterns": [
{
"include": "source.haskell"
}
]
}
]
},
{
"begin": "\\s*\\\\begin\\{java(?:code|verbatim|block|concode|console|converbatim)\\*?}(?:\\[[-0-9A-Z_a-z]*])?(?=[\\[{]|\\s*$)",
"captures": {
"0": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "\\s*\\\\end\\{java(?:code|verbatim|block|concode|console|converbatim)\\*?}",
"patterns": [
{
"include": "#multiline-optional-arg-no-highlight"
},
{
"begin": "(?:\\G|(?<=]))(\\{)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
}
},
"contentName": "variable.parameter.function.latex",
"end": "(})",
"endCaptures": {
"1": {
"name": "punctuation.definition.arguments.end.latex"
}
}
},
{
"begin": "^(?=\\s*)",
"contentName": "source.java",
"end": "^\\s*(?=\\\\end\\{java(?:code|verbatim|block|concode|console|converbatim)\\*?})",
"patterns": [
{
"include": "source.java"
}
]
}
]
},
{
"begin": "\\s*\\\\begin\\{jl(?:code|verbatim|block|concode|console|converbatim)\\*?}(?:\\[[-0-9A-Z_a-z]*])?(?=[\\[{]|\\s*$)",
"captures": {
"0": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "\\s*\\\\end\\{jl(?:code|verbatim|block|concode|console|converbatim)\\*?}",
"patterns": [
{
"include": "#multiline-optional-arg-no-highlight"
},
{
"begin": "(?:\\G|(?<=]))(\\{)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
}
},
"contentName": "variable.parameter.function.latex",
"end": "(})",
"endCaptures": {
"1": {
"name": "punctuation.definition.arguments.end.latex"
}
}
},
{
"begin": "^(?=\\s*)",
"contentName": "source.julia",
"end": "^\\s*(?=\\\\end\\{jl(?:code|verbatim|block|concode|console|converbatim)\\*?})",
"patterns": [
{
"include": "source.julia"
}
]
}
]
},
{
"begin": "\\s*\\\\begin\\{julia(?:code|verbatim|block|concode|console|converbatim)\\*?}(?:\\[[-0-9A-Z_a-z]*])?(?=[\\[{]|\\s*$)",
"captures": {
"0": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "\\s*\\\\end\\{julia(?:code|verbatim|block|concode|console|converbatim)\\*?}",
"patterns": [
{
"include": "#multiline-optional-arg-no-highlight"
},
{
"begin": "(?:\\G|(?<=]))(\\{)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
}
},
"contentName": "variable.parameter.function.latex",
"end": "(})",
"endCaptures": {
"1": {
"name": "punctuation.definition.arguments.end.latex"
}
}
},
{
"begin": "^(?=\\s*)",
"contentName": "source.julia",
"end": "^\\s*(?=\\\\end\\{julia(?:code|verbatim|block|concode|console|converbatim)\\*?})",
"patterns": [
{
"include": "source.julia"
}
]
}
]
},
{
"begin": "\\s*\\\\begin\\{lua(?:code|draw)\\*?}(?:\\[[-0-9A-Z_a-z]*])?(?=[\\[{]|\\s*$)",
"captures": {
"0": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "\\s*\\\\end\\{lua(?:code|draw)\\*?}",
"patterns": [
{
"include": "#multiline-optional-arg-no-highlight"
},
{
"begin": "(?:\\G|(?<=]))(\\{)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
}
},
"contentName": "variable.parameter.function.latex",
"end": "(})",
"endCaptures": {
"1": {
"name": "punctuation.definition.arguments.end.latex"
}
}
},
{
"begin": "^(?=\\s*)",
"contentName": "source.lua",
"end": "^\\s*(?=\\\\end\\{lua(?:code|draw)\\*?})",
"patterns": [
{
"include": "source.lua"
}
]
}
]
},
{
"begin": "\\s*\\\\begin\\{py(?:code|verbatim|block|concode|console|converbatim)\\*?}(?:\\[[-0-9A-Z_a-z]*])?(?=[\\[{]|\\s*$)",
"captures": {
"0": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "\\s*\\\\end\\{py(?:code|verbatim|block|concode|console|converbatim)\\*?}",
"patterns": [
{
"include": "#multiline-optional-arg-no-highlight"
},
{
"begin": "(?:\\G|(?<=]))(\\{)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
}
},
"contentName": "variable.parameter.function.latex",
"end": "(})",
"endCaptures": {
"1": {
"name": "punctuation.definition.arguments.end.latex"
}
}
},
{
"begin": "^(?=\\s*)",
"contentName": "source.python",
"end": "^\\s*(?=\\\\end\\{py(?:code|verbatim|block|concode|console|converbatim)\\*?})",
"patterns": [
{
"include": "source.python"
}
]
}
]
},
{
"begin": "\\s*\\\\begin\\{pylab(?:code|verbatim|block|concode|console|converbatim)\\*?}(?:\\[[-0-9A-Z_a-z]*])?(?=[\\[{]|\\s*$)",
"captures": {
"0": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "\\s*\\\\end\\{pylab(?:code|verbatim|block|concode|console|converbatim)\\*?}",
"patterns": [
{
"include": "#multiline-optional-arg-no-highlight"
},
{
"begin": "(?:\\G|(?<=]))(\\{)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
}
},
"contentName": "variable.parameter.function.latex",
"end": "(})",
"endCaptures": {
"1": {
"name": "punctuation.definition.arguments.end.latex"
}
}
},
{
"begin": "^(?=\\s*)",
"contentName": "source.python",
"end": "^\\s*(?=\\\\end\\{pylab(?:code|verbatim|block|concode|console|converbatim)\\*?})",
"patterns": [
{
"include": "source.python"
}
]
}
]
},
{
"begin": "\\s*\\\\begin\\{(?:sageblock|sagesilent|sageverbatim|sageexample|sagecommandline|pythonq??|pythonrepl)\\*?}(?:\\[[-0-9A-Z_a-z]*])?(?=[\\[{]|\\s*$)",
"captures": {
"0": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "\\s*\\\\end\\{(?:sageblock|sagesilent|sageverbatim|sageexample|sagecommandline|pythonq??|pythonrepl)\\*?}",
"patterns": [
{
"include": "#multiline-optional-arg-no-highlight"
},
{
"begin": "(?:\\G|(?<=]))(\\{)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
}
},
"contentName": "variable.parameter.function.latex",
"end": "(})",
"endCaptures": {
"1": {
"name": "punctuation.definition.arguments.end.latex"
}
}
},
{
"begin": "^(?=\\s*)",
"contentName": "source.python",
"end": "^\\s*(?=\\\\end\\{(?:sageblock|sagesilent|sageverbatim|sageexample|sagecommandline|pythonq??|pythonrepl)\\*?})",
"patterns": [
{
"include": "source.python"
}
]
}
]
},
{
"begin": "\\s*\\\\begin\\{scalacode\\*?}(?:\\[[-0-9A-Z_a-z]*])?(?=[\\[{]|\\s*$)",
"captures": {
"0": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "\\s*\\\\end\\{scalacode\\*?}",
"patterns": [
{
"include": "#multiline-optional-arg-no-highlight"
},
{
"begin": "(?:\\G|(?<=]))(\\{)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.latex"
}
},
"contentName": "variable.parameter.function.latex",
"end": "(})",
"endCaptures": {
"1": {
"name": "punctuation.definition.arguments.end.latex"
}
}
},
{
"begin": "^(?=\\s*)",
"contentName": "source.scala",
"end": "^\\s*(?=\\\\end\\{scalacode\\*?})",
"patterns": [
{
"include": "source.scala"
}
]
}
]
},
{
"begin": "\\s*\\\\begin\\{sympy(?:code|verbatim|block|concode|console|converbatim)\\*?}(?:\\[[-0-9A-Z_a-z]*])?(?=[\\[{]|\\s*$)",
"captures": {
"0": {
"patterns": [
{
"include": "#macro-with-args-tokenizer"
}
]
}
},
"end": "\\s*\\\\end\\{sympy(?:code|verbatim|block|concode|console|converbatim)\\*?}",
"p