{ "information_for_contributors": [ "This file has been converted from https://github.com/jlelong/vscode-latex-basics/blob/master/syntaxes/LaTeX.tmLanguage.json", "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], "version": "https://github.com/jlelong/vscode-latex-basics/commit/b98c2d4911652824fc990f4b26c9c30be59b78a2", "name": "latex", "scopeName": "text.tex.latex", "patterns": [ { "comment": "This scope identifies partially typed commands such as `\\tab`. We use this to trigger “Command Completion” only when it makes sense.", "match": "(?<=\\\\[\\w@]|\\\\[\\w@]{2}|\\\\[\\w@]{3}|\\\\[\\w@]{4}|\\\\[\\w@]{5}|\\\\[\\w@]{6})\\s", "name": "meta.space-after-command.latex" }, { "begin": "((\\\\)(?:usepackage|documentclass))((?:\\[[^\\[]*?\\])*)(\\{)", "beginCaptures": { "1": { "name": "keyword.control.preamble.latex" }, "2": { "name": "punctuation.definition.function.latex" }, "3": { "patterns": [ { "include": "#optional-arg" } ] }, "4": { "name": "punctuation.definition.arguments.begin.latex" } }, "contentName": "support.class.latex", "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.arguments.end.latex" } }, "name": "meta.preamble.latex", "patterns": [ { "include": "$self" } ] }, { "begin": "((\\\\)(?:include|input))(\\{)", "beginCaptures": { "1": { "name": "keyword.control.include.latex" }, "2": { "name": "punctuation.definition.function.latex" }, "3": { "name": "punctuation.definition.arguments.begin.latex" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.arguments.end.latex" } }, "name": "meta.include.latex", "patterns": [ { "include": "$self" } ] }, { "begin": "((\\\\)((?:sub){0,2}section|(?:sub)?paragraph|chapter|part|addpart|addchap|addsec|minisec|frametitle)(?:\\*)?)((?:\\[[^\\[]*?\\]){0,2})(\\{)", "beginCaptures": { "1": { "name": "support.function.section.latex" }, "2": { "name": "punctuation.definition.function.latex" }, "4": { "patterns": [ { "include": "#optional-arg" } ] }, "5": { "name": "punctuation.definition.arguments.begin.latex" } }, "comment": "this works OK with all kinds of crazy stuff as long as section is one line", "contentName": "entity.name.section.latex", "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.arguments.end.latex" } }, "name": "meta.function.section.$3.latex", "patterns": [ { "include": "text.tex#braces" }, { "include": "$base" } ] }, { "name": "meta.function.environment.songs.latex", "begin": "((?:\\s*)\\\\begin\\{songs\\}\\{.*\\})", "end": "(\\\\end\\{songs\\}(?:\\s*\\n)?)", "captures": { "1": { "patterns": [ { "include": "#env-mandatory-arg" } ] } }, "contentName": "meta.data.environment.songs.latex", "patterns": [ { "name": "meta.chord.block.latex support.class.chord.block.environment.latex", "begin": "\\\\\\[", "end": "\\]", "patterns": [ { "include": "$base" } ] }, { "name": "meta.chord.block.latex support.class.chord.block.environment.latex", "match": "\\^" }, { "include": "$self" } ] }, { "begin": "(^\\s*)?(?=\\\\begin\\{(lstlisting|minted|pyglist)\\})", "beginCaptures": { "0": { "name": "punctuation.whitespace.embedded.leading.latex" } }, "end": "(?!\\G)(\\s*$\\n?)?", "endCaptures": { "0": { "name": "punctuation.whitespace.embedded.trailing.latex" } }, "patterns": [ { "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:cpp|c)\\})", "captures": { "1": { "patterns": [ { "include": "#env-mandatory-arg" } ] } }, "contentName": "source.cpp.embedded.latex", "patterns": [ { "include": "source.cpp.embedded.latex" } ], "end": "(\\\\end\\{minted\\})" }, { "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{css\\})", "captures": { "1": { "patterns": [ { "include": "#env-mandatory-arg" } ] } }, "contentName": "source.css", "patterns": [ { "include": "source.css" } ], "end": "(\\\\end\\{minted\\})" }, { "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{html\\})", "captures": { "1": { "patterns": [ { "include": "#env-mandatory-arg" } ] } }, "contentName": "text.html", "patterns": [ { "include": "text.html.basic" } ], "end": "(\\\\end\\{minted\\})" }, { "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{java\\})", "captures": { "1": { "patterns": [ { "include": "#env-mandatory-arg" } ] } }, "contentName": "source.java", "patterns": [ { "include": "source.java" } ], "end": "(\\\\end\\{minted\\})" }, { "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:js|javascript)\\})", "captures": { "1": { "patterns": [ { "include": "#env-mandatory-arg" } ] } }, "contentName": "source.js", "patterns": [ { "include": "source.js" } ], "end": "(\\\\end\\{minted\\})" }, { "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:ts|typescript)\\})", "captures": { "1": { "patterns": [ { "include": "#env-mandatory-arg" } ] } }, "contentName": "source.ts", "patterns": [ { "include": "source.ts" } ], "end": "(\\\\end\\{minted\\})" }, { "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{lua\\})", "captures": { "1": { "patterns": [ { "include": "#env-mandatory-arg" } ] } }, "contentName": "source.lua", "patterns": [ { "include": "source.lua" } ], "end": "(\\\\end\\{minted\\})" }, { "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:python|py)\\})", "captures": { "1": { "patterns": [ { "include": "#env-mandatory-arg" } ] } }, "contentName": "source.python", "patterns": [ { "include": "source.python" } ], "end": "(\\\\end\\{minted\\})" }, { "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(julia)\\})", "captures": { "1": { "patterns": [ { "include": "#env-mandatory-arg" } ] } }, "contentName": "source.julia", "patterns": [ { "include": "source.julia" } ], "end": "(\\\\end\\{minted\\})" }, { "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(ruby)\\})", "captures": { "1": { "patterns": [ { "include": "#env-mandatory-arg" } ] } }, "contentName": "source.ruby", "patterns": [ { "include": "source.ruby" } ], "end": "(\\\\end\\{minted\\})" }, { "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{xml\\})", "captures": { "1": { "patterns": [ { "include": "#env-mandatory-arg" } ] } }, "contentName": "text.xml", "patterns": [ { "include": "text.xml" } ], "end": "(\\\\end\\{minted\\})" }, { "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{yaml\\})", "captures": { "1": { "patterns": [ { "include": "#env-mandatory-arg" } ] } }, "contentName": "source.yaml", "patterns": [ { "include": "source.yaml" } ], "end": "(\\\\end\\{minted\\})" }, { "begin": "(\\\\begin\\{(?:lstlisting|minted|pyglist)\\}(?:\\[.*\\])?)", "captures": { "1": { "patterns": [ { "include": "#env-mandatory-arg" } ] } }, "contentName": "meta.function.embedded.latex", "end": "(\\\\end\\{(?:lstlisting|minted|pyglist)\\})", "name": "meta.embedded.block.generic.latex" } ] }, { "begin": "((?:\\s*)\\\\begin\\{(cppcode(?:\\*)?)\\}(?:\\[.*\\])?)", "captures": { "1": { "patterns": [ { "include": "#code-env" } ] } }, "contentName": "source.cpp.embedded.latex", "patterns": [ { "include": "source.cpp.embedded.latex" }, { "include": "source.cpp" } ], "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)" }, { "begin": "((?:\\s*)\\\\begin\\{(hscode(?:\\*)?)\\}(?:\\[.*\\])?)", "captures": { "1": { "patterns": [ { "include": "#code-env" } ] } }, "contentName": "source.haskell", "patterns": [ { "include": "source.haskell" } ], "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)" }, { "begin": "((?:\\s*)\\\\begin\\{(luacode(?:\\*)?)\\}(?:\\[.*\\])?)", "captures": { "1": { "patterns": [ { "include": "#code-env" } ] } }, "contentName": "source.lua", "patterns": [ { "include": "source.lua" } ], "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)" }, { "begin": "((?:\\s*)\\\\begin\\{((?:julia|jl)(?:code|verbatim|block|concode|console|converbatim)(?:\\*)?)\\}(?:\\[.*\\])?)", "captures": { "1": { "patterns": [ { "include": "#code-env" } ] } }, "contentName": "source.julia", "patterns": [ { "include": "source.julia" } ], "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)" }, { "begin": "((?:\\s*)\\\\begin\\{((?:(?:(?:py|pylab|sympy)(?:code|verbatim|block|concode|console|converbatim))|sageblock|sagesilent|sageverbatim|sageexample|sagecommandline)(?:\\*)?)\\}(?:\\[.*\\])?(?:\\{.*\\})?)", "captures": { "1": { "patterns": [ { "include": "#env-mandatory-arg" } ] } }, "contentName": "source.python", "patterns": [ { "include": "source.python" } ], "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)" }, { "begin": "((?:\\s*)\\\\begin\\{(scalacode(?:\\*)?)\\}(?:\\[.*\\])?)", "captures": { "1": { "patterns": [ { "include": "#code-env" } ] } }, "contentName": "source.scala", "patterns": [ { "include": "source.scala" } ], "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)" }, { "begin": "((?:\\s*)\\\\begin\\{([a-z]*code(?:\\*)?)\\}(?:\\[.*\\])?)", "captures": { "1": { "patterns": [ { "include": "#code-env" } ] } }, "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)" }, { "begin": "((?:\\s*)\\\\begin\\{asy\\}(?:\\[.*\\])?)", "captures": { "1": { "patterns": [ { "include": "#code-env" } ] } }, "contentName": "source.asymptote", "patterns": [ { "include": "source.asymptote" } ], "end": "(\\\\end\\{asy\\}(?:\\s*\\n)?)" }, { "begin": "((?:\\s*)\\\\begin\\{dot2tex\\}(?:\\[.*\\])?)", "captures": { "1": { "patterns": [ { "include": "#code-env" } ] } }, "contentName": "source.dot", "patterns": [ { "include": "source.dot" } ], "end": "(\\\\end\\{dot2tex\\}(?:\\s*\\n)?)" }, { "begin": "((?:\\s*)\\\\begin\\{gnuplot\\}(?:\\[.*\\])?)", "captures": { "1": { "patterns": [ { "include": "#code-env" } ] } }, "contentName": "source.gnuplot", "patterns": [ { "include": "source.gnuplot" } ], "end": "(\\\\end\\{gnuplot\\}(?:\\s*\\n)?)" }, { "begin": "((\\\\)addplot)(?:\\+?)((?:\\[[^\\[]*\\]))*\\s*(gnuplot)\\s*((?:\\[[^\\[]*\\]))*\\s*(\\{)", "captures": { "1": { "name": "support.function.be.latex" }, "2": { "name": "punctuation.definition.function.latex" }, "3": { "patterns": [ { "include": "#optional-arg" } ] }, "4": { "name": "variable.parameter.function.latex" }, "5": { "patterns": [ { "include": "#optional-arg" } ] }, "6": { "name": "punctuation.definition.arguments.begin.latex" } }, "patterns": [ { "begin": "%", "beginCaptures": { "0": { "name": "punctuation.definition.comment.latex" } }, "end": "$\\n?", "name": "comment.line.percentage.latex" }, { "include": "source.gnuplot" } ], "end": "\\s*(\\};)" }, { "begin": "(?:\\s*)((\\\\)begin)(\\{)((?:fboxv|boxedv|V|v|spv)erbatim\\*?)(\\})", "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": "markup.raw.verbatim.latex", "end": "((\\\\)end)(\\{)(\\4)(\\})", "name": "meta.function.verbatim.latex" }, { "begin": "(?:\\s*)((\\\\)begin)(\\{)(VerbatimOut)(\\})(\\{)([^\\}]*)(\\})", "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" }, "6": { "name": "punctuation.definition.arguments.begin.latex" }, "7": { "name": "support.class.latex" }, "8": { "name": "punctuation.definition.arguments.end.latex" } }, "contentName": "markup.raw.verbatim.latex", "end": "((\\\\)end)(\\{)(\\VerbatimOut)(\\})", "name": "meta.function.verbatim.latex" }, { "begin": "(?:\\s*)((\\\\)begin)(\\{)(alltt)(\\})", "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": "markup.raw.verbatim.latex", "end": "((\\\\)end)(\\{)(alltt)(\\})", "name": "meta.function.alltt.latex", "patterns": [ { "captures": { "1": { "name": "punctuation.definition.function.latex" } }, "match": "(\\\\)[A-Za-z]+", "name": "support.function.general.latex" } ] }, { "begin": "(?:\\s*)((\\\\)begin)(\\{)((?:C|c)omment)(\\})", "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": "punctuation.definition.comment.latex", "end": "((\\\\)end)(\\{)(\\4)(\\})", "name": "meta.function.verbatim.latex" }, { "captures": { "1": { "name": "support.function.url.latex" }, "2": { "name": "punctuation.definition.function.latex" }, "3": { "name": "punctuation.definition.arguments.begin.latex" }, "4": { "name": "markup.underline.link.latex" }, "5": { "name": "punctuation.definition.arguments.end.latex" } }, "match": "(?:\\s*)((\\\\)(?:url|href))(\\{)([^}]*)(\\})", "name": "meta.function.link.url.latex" }, { "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" } }, "comment": "These two patterns match the \\begin{document} and \\end{document} commands, so that the environment matching pattern following them will ignore those commands.", "match": "(?:\\s*)((\\\\)begin)(\\{)(document)(\\})", "name": "meta.function.begin-document.latex" }, { "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" } }, "match": "(?:\\s*)((\\\\)end)(\\{)(document)(\\})", "name": "meta.function.end-document.latex" }, { "begin": "(?:\\s*)((\\\\)begin)(\\{)((?:array|equation|(?:IEEE)?eqnarray|multline|align|aligned|alignat|alignedat|flalign|flaligned|flalignat|split|gather|gathered|cases|(?:display)?math|[a-zA-Z]*matrix|(?:(?:arg)?(?:mini|maxi)))(?:\\*|!)?)(\\})(\\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": "meta.column-specials.latex" }, { "include": "text.tex" } ], "repository": { "optional-arg": { "patterns": [ { "captures": { "1": { "name": "punctuation.definition.optional.arguments.begin.latex" }, "2": { "name": "variable.parameter.function.latex" }, "3": { "name": "punctuation.definition.optional.arguments.end.latex" } }, "match": "(\\[)([^\\[]*?)(\\])", "name": "meta.parameter.optional.latex" } ] }, "autocites-arg": { "patterns": [ { "captures": { "1": { "name": "punctuation.definition.arguments.optional.begin.latex" }, "2": { "name": "punctuation.definition.arguments.optional.end.latex" }, "3": { "name": "punctuation.definition.arguments.optional.begin.latex" }, "4": { "name": "punctuation.definition.arguments.optional.end.latex" }, "5": { "name": "punctuation.definition.arguments.begin.latex" }, "6": { "name": "constant.other.reference.citation.latex" }, "7": { "name": "punctuation.definition.arguments.end.latex" }, "8": { "patterns": [ { "include": "#autocites-arg" } ] } }, "match": "(?:(\\()[^\\)]*(\\))){0,2}(?:(\\[)[^\\]]*(\\])){0,2}(\\{)([\\w:.]+)(\\})(.*)" } ] }, "env-mandatory-arg": { "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" }, "6": { "name": "punctuation.definition.arguments.optional.begin.latex" }, "7": { "patterns": [ { "include": "$base" } ] }, "8": { "name": "punctuation.definition.arguments.optional.end.latex" }, "9": { "name": "punctuation.definition.arguments.begin.latex" }, "10": { "name": "variable.parameter.function.latex" }, "11": { "name": "punctuation.definition.arguments.end.latex" } }, "match": "((\\\\)(?:begin|end))(\\{)([a-z]*)(\\})(?:(\\[)(.*)(\\]))?(?:(\\{)([^{}]*)(\\}))?" }, "code-env": { "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" }, "6": { "name": "punctuation.definition.arguments.optional.begin.latex" }, "7": { "name": "punctuation.definition.arguments.optional.end.latex" } }, "match": "(?:\\s*)((\\\\)(?:begin|end))(\\{)([a-z]+(?:\\*)?)(\\})(?:(\\[).*(\\]))?" }, "definition-label": { "begin": "((\\\\)label)(\\{)", "beginCaptures": { "1": { "name": "keyword.control.label.latex" }, "2": { "name": "punctuation.definition.keyword.latex" }, "3": { "name": "punctuation.definition.arguments.begin.latex" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.arguments.end.latex" } }, "name": "meta.definition.label.latex", "patterns": [ { "match": "[a-zA-Z0-9\\.,:/*!^_-]", "name": "variable.parameter.definition.label.latex" } ] } } }