{
	"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/3eb98ef3aeceedbe3366d6a5192ad6d2948721e8",
	"name": "LaTeX",
	"scopeName": "text.tex.latex",
	"patterns": [
		{
			"match": "(?<=\\\\[\\w@]|\\\\[\\w@]{2}|\\\\[\\w@]{3}|\\\\[\\w@]{4}|\\\\[\\w@]{5}|\\\\[\\w@]{6})\\s",
			"comment": "This scope identifies partially typed commands such as `\\tab`. We use this to trigger “Command Completion” only when it makes sense.",
			"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": {
		"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"
						}
					]
				}
			]
		},
		"document-env": {
			"patterns": [
				{
					"match": "(\\s*\\\\begin\\{document\\})",
					"captures": {
						"1": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"comment": "These two patterns match the \\begin{document} and \\end{document} commands, so that the environment matching pattern following them will ignore those commands.",
					"name": "meta.function.begin-document.latex"
				},
				{
					"match": "(\\s*\\\\end\\{document\\})",
					"captures": {
						"1": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"name": "meta.function.end-document.latex"
				}
			]
		},
		"input-macro": {
			"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"
				}
			]
		},
		"sections-macro": {
			"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-bracket"
						}
					]
				},
				"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": "#braces"
				},
				{
					"include": "$self"
				}
			]
		},
		"text-font-macro": {
			"patterns": [
				{
					"begin": "((\\\\)emph)(\\{)",
					"beginCaptures": {
						"1": {
							"name": "support.function.emph.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						},
						"3": {
							"name": "punctuation.definition.emph.begin.latex"
						}
					},
					"contentName": "markup.italic.emph.latex",
					"end": "\\}",
					"endCaptures": {
						"0": {
							"name": "punctuation.definition.emph.end.latex"
						}
					},
					"name": "meta.function.emph.latex",
					"patterns": [
						{
							"include": "#braces"
						},
						{
							"include": "$self"
						}
					]
				},
				{
					"begin": "((\\\\)textit)(\\{)",
					"captures": {
						"1": {
							"name": "support.function.textit.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						},
						"3": {
							"name": "punctuation.definition.textit.begin.latex"
						}
					},
					"comment": "We put the keyword in a capture and name this capture, so that disabling spell checking for “keyword” won't be inherited by the argument to \\textit{...}.\n\nPut specific matches for particular LaTeX keyword.functions before the last two more general functions",
					"contentName": "markup.italic.textit.latex",
					"end": "\\}",
					"endCaptures": {
						"0": {
							"name": "punctuation.definition.textit.end.latex"
						}
					},
					"name": "meta.function.textit.latex",
					"patterns": [
						{
							"include": "#braces"
						},
						{
							"include": "$self"
						}
					]
				},
				{
					"begin": "((\\\\)textbf)(\\{)",
					"captures": {
						"1": {
							"name": "support.function.textbf.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						},
						"3": {
							"name": "punctuation.definition.textbf.begin.latex"
						}
					},
					"contentName": "markup.bold.textbf.latex",
					"end": "\\}",
					"endCaptures": {
						"0": {
							"name": "punctuation.definition.textbf.end.latex"
						}
					},
					"name": "meta.function.textbf.latex",
					"patterns": [
						{
							"include": "#braces"
						},
						{
							"include": "$self"
						}
					]
				},
				{
					"begin": "((\\\\)texttt)(\\{)",
					"captures": {
						"1": {
							"name": "support.function.texttt.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						},
						"3": {
							"name": "punctuation.definition.texttt.begin.latex"
						}
					},
					"contentName": "markup.raw.texttt.latex",
					"end": "\\}",
					"endCaptures": {
						"0": {
							"name": "punctuation.definition.texttt.end.latex"
						}
					},
					"name": "meta.function.texttt.latex",
					"patterns": [
						{
							"include": "#braces"
						},
						{
							"include": "$self"
						}
					]
				}
			]
		},
		"songs-env": {
			"patterns": [
				{
					"begin": "(\\s*\\\\begin\\{songs\\}\\{.*\\})",
					"captures": {
						"1": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"contentName": "meta.data.environment.songs.latex",
					"end": "(\\\\end\\{songs\\}(?:\\s*\\n)?)",
					"name": "meta.function.environment.songs.latex",
					"patterns": [
						{
							"include": "text.tex.latex#songs-chords"
						}
					]
				},
				{
					"comment": "This scope applies songs-environment coloring between \\\\beginsong and \\\\endsong. Useful in separate files without \\\\begin{songs}.",
					"begin": "\\s*((\\\\)beginsong)(?=\\{)",
					"captures": {
						"1": {
							"name": "support.function.be.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						},
						"3": {
							"name": "punctuation.definition.arguments.begin.latex"
						},
						"4": {
							"name": "punctuation.definition.arguments.end.latex"
						}
					},
					"end": "((\\\\)endsong)(?:\\s*\\n)?",
					"name": "meta.function.environment.song.latex",
					"patterns": [
						{
							"include": "#multiline-arg-no-highlight"
						},
						{
							"include": "#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?:\\G|(?<=\\]|\\}))\\s*",
							"end": "\\s*(?=\\\\endsong)",
							"contentName": "meta.data.environment.song.latex",
							"patterns": [
								{
									"include": "text.tex.latex#songs-chords"
								}
							]
						}
					]
				}
			]
		},
		"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|asymptote))(\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								},
								"2": {
									"name": "variable.parameter.function.latex"
								},
								"3": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
							"contentName": "source.asy",
							"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"
								}
							},
							"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
							"contentName": "source.shell",
							"patterns": [
								{
									"include": "source.shell"
								}
							]
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)((?:c|cpp))(\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								},
								"2": {
									"name": "variable.parameter.function.latex"
								},
								"3": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
							"contentName": "source.cpp.embedded.latex",
							"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"
								}
							},
							"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
							"contentName": "source.css",
							"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"
								}
							},
							"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
							"contentName": "source.gnuplot",
							"patterns": [
								{
									"include": "source.gnuplot"
								}
							]
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)((?:hs|haskell))(\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								},
								"2": {
									"name": "variable.parameter.function.latex"
								},
								"3": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
							"contentName": "source.haskell",
							"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"
								}
							},
							"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
							"contentName": "text.html",
							"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"
								}
							},
							"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
							"contentName": "source.java",
							"patterns": [
								{
									"include": "source.java"
								}
							]
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)((?:jl|julia))(\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								},
								"2": {
									"name": "variable.parameter.function.latex"
								},
								"3": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
							"contentName": "source.julia",
							"patterns": [
								{
									"include": "source.julia"
								}
							]
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)((?:js|javascript))(\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								},
								"2": {
									"name": "variable.parameter.function.latex"
								},
								"3": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
							"contentName": "source.js",
							"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"
								}
							},
							"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
							"contentName": "source.lua",
							"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"
								}
							},
							"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
							"contentName": "source.python",
							"patterns": [
								{
									"include": "source.python"
								}
							]
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)((?:rb|ruby))(\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								},
								"2": {
									"name": "variable.parameter.function.latex"
								},
								"3": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
							"contentName": "source.ruby",
							"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"
								}
							},
							"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
							"contentName": "source.rust",
							"patterns": [
								{
									"include": "source.rust"
								}
							]
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)((?:ts|typescript))(\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								},
								"2": {
									"name": "variable.parameter.function.latex"
								},
								"3": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
							"contentName": "source.ts",
							"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"
								}
							},
							"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
							"contentName": "text.xml",
							"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"
								}
							},
							"end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
							"contentName": "source.yaml",
							"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|asycode)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
					"end": "\\s*\\\\end\\{(?:asy|asycode)\\*?\\}",
					"captures": {
						"0": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"patterns": [
						{
							"include": "#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"end": "(\\})",
							"endCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "variable.parameter.function.latex"
						},
						{
							"begin": "^(?=\\s*)",
							"end": "^\\s*(?=\\\\end\\{(?:asy|asycode)\\*?\\})",
							"contentName": "source.asymptote",
							"patterns": [
								{
									"include": "source.asymptote"
								}
							]
						}
					]
				},
				{
					"begin": "\\s*\\\\begin\\{(?:cppcode)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
					"end": "\\s*\\\\end\\{(?:cppcode)\\*?\\}",
					"captures": {
						"0": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"patterns": [
						{
							"include": "#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"end": "(\\})",
							"endCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "variable.parameter.function.latex"
						},
						{
							"begin": "^(?=\\s*)",
							"end": "^\\s*(?=\\\\end\\{(?:cppcode)\\*?\\})",
							"contentName": "source.cpp.embedded.latex",
							"patterns": [
								{
									"include": "source.cpp.embedded.latex"
								}
							]
						}
					]
				},
				{
					"begin": "\\s*\\\\begin\\{(?:dot2tex|dotcode)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
					"end": "\\s*\\\\end\\{(?:dot2tex|dotcode)\\*?\\}",
					"captures": {
						"0": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"patterns": [
						{
							"include": "#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"end": "(\\})",
							"endCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "variable.parameter.function.latex"
						},
						{
							"begin": "^(?=\\s*)",
							"end": "^\\s*(?=\\\\end\\{(?:dot2tex|dotcode)\\*?\\})",
							"contentName": "source.dot",
							"patterns": [
								{
									"include": "source.dot"
								}
							]
						}
					]
				},
				{
					"begin": "\\s*\\\\begin\\{(?:gnuplot)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
					"end": "\\s*\\\\end\\{(?:gnuplot)\\*?\\}",
					"captures": {
						"0": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"patterns": [
						{
							"include": "#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"end": "(\\})",
							"endCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "variable.parameter.function.latex"
						},
						{
							"begin": "^(?=\\s*)",
							"end": "^\\s*(?=\\\\end\\{(?:gnuplot)\\*?\\})",
							"contentName": "source.gnuplot",
							"patterns": [
								{
									"include": "source.gnuplot"
								}
							]
						}
					]
				},
				{
					"begin": "\\s*\\\\begin\\{(?:hscode)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
					"end": "\\s*\\\\end\\{(?:hscode)\\*?\\}",
					"captures": {
						"0": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"patterns": [
						{
							"include": "#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"end": "(\\})",
							"endCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "variable.parameter.function.latex"
						},
						{
							"begin": "^(?=\\s*)",
							"end": "^\\s*(?=\\\\end\\{(?:hscode)\\*?\\})",
							"contentName": "source.haskell",
							"patterns": [
								{
									"include": "source.haskell"
								}
							]
						}
					]
				},
				{
					"begin": "\\s*\\\\begin\\{(?:javacode|javaverbatim|javablock|javaconcode|javaconsole|javaconverbatim)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
					"end": "\\s*\\\\end\\{(?:javacode|javaverbatim|javablock|javaconcode|javaconsole|javaconverbatim)\\*?\\}",
					"captures": {
						"0": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"patterns": [
						{
							"include": "#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"end": "(\\})",
							"endCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "variable.parameter.function.latex"
						},
						{
							"begin": "^(?=\\s*)",
							"end": "^\\s*(?=\\\\end\\{(?:javacode|javaverbatim|javablock|javaconcode|javaconsole|javaconverbatim)\\*?\\})",
							"contentName": "source.java",
							"patterns": [
								{
									"include": "source.java"
								}
							]
						}
					]
				},
				{
					"begin": "\\s*\\\\begin\\{(?:jlcode|jlverbatim|jlblock|jlconcode|jlconsole|jlconverbatim)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
					"end": "\\s*\\\\end\\{(?:jlcode|jlverbatim|jlblock|jlconcode|jlconsole|jlconverbatim)\\*?\\}",
					"captures": {
						"0": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"patterns": [
						{
							"include": "#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"end": "(\\})",
							"endCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "variable.parameter.function.latex"
						},
						{
							"begin": "^(?=\\s*)",
							"end": "^\\s*(?=\\\\end\\{(?:jlcode|jlverbatim|jlblock|jlconcode|jlconsole|jlconverbatim)\\*?\\})",
							"contentName": "source.julia",
							"patterns": [
								{
									"include": "source.julia"
								}
							]
						}
					]
				},
				{
					"begin": "\\s*\\\\begin\\{(?:juliacode|juliaverbatim|juliablock|juliaconcode|juliaconsole|juliaconverbatim)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
					"end": "\\s*\\\\end\\{(?:juliacode|juliaverbatim|juliablock|juliaconcode|juliaconsole|juliaconverbatim)\\*?\\}",
					"captures": {
						"0": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"patterns": [
						{
							"include": "#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"end": "(\\})",
							"endCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "variable.parameter.function.latex"
						},
						{
							"begin": "^(?=\\s*)",
							"end": "^\\s*(?=\\\\end\\{(?:juliacode|juliaverbatim|juliablock|juliaconcode|juliaconsole|juliaconverbatim)\\*?\\})",
							"contentName": "source.julia",
							"patterns": [
								{
									"include": "source.julia"
								}
							]
						}
					]
				},
				{
					"begin": "\\s*\\\\begin\\{(?:luacode|luadraw)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
					"end": "\\s*\\\\end\\{(?:luacode|luadraw)\\*?\\}",
					"captures": {
						"0": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"patterns": [
						{
							"include": "#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"end": "(\\})",
							"endCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "variable.parameter.function.latex"
						},
						{
							"begin": "^(?=\\s*)",
							"end": "^\\s*(?=\\\\end\\{(?:luacode|luadraw)\\*?\\})",
							"contentName": "source.lua",
							"patterns": [
								{
									"include": "source.lua"
								}
							]
						}
					]
				},
				{
					"begin": "\\s*\\\\begin\\{(?:pycode|pyverbatim|pyblock|pyconcode|pyconsole|pyconverbatim)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
					"end": "\\s*\\\\end\\{(?:pycode|pyverbatim|pyblock|pyconcode|pyconsole|pyconverbatim)\\*?\\}",
					"captures": {
						"0": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"patterns": [
						{
							"include": "#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"end": "(\\})",
							"endCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "variable.parameter.function.latex"
						},
						{
							"begin": "^(?=\\s*)",
							"end": "^\\s*(?=\\\\end\\{(?:pycode|pyverbatim|pyblock|pyconcode|pyconsole|pyconverbatim)\\*?\\})",
							"contentName": "source.python",
							"patterns": [
								{
									"include": "source.python"
								}
							]
						}
					]
				},
				{
					"begin": "\\s*\\\\begin\\{(?:pylabcode|pylabverbatim|pylabblock|pylabconcode|pylabconsole|pylabconverbatim)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
					"end": "\\s*\\\\end\\{(?:pylabcode|pylabverbatim|pylabblock|pylabconcode|pylabconsole|pylabconverbatim)\\*?\\}",
					"captures": {
						"0": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"patterns": [
						{
							"include": "#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"end": "(\\})",
							"endCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "variable.parameter.function.latex"
						},
						{
							"begin": "^(?=\\s*)",
							"end": "^\\s*(?=\\\\end\\{(?:pylabcode|pylabverbatim|pylabblock|pylabconcode|pylabconsole|pylabconverbatim)\\*?\\})",
							"contentName": "source.python",
							"patterns": [
								{
									"include": "source.python"
								}
							]
						}
					]
				},
				{
					"begin": "\\s*\\\\begin\\{(?:sageblock|sagesilent|sageverbatim|sageexample|sagecommandline|python|pythonq|pythonrepl)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
					"end": "\\s*\\\\end\\{(?:sageblock|sagesilent|sageverbatim|sageexample|sagecommandline|python|pythonq|pythonrepl)\\*?\\}",
					"captures": {
						"0": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"patterns": [
						{
							"include": "#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"end": "(\\})",
							"endCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "variable.parameter.function.latex"
						},
						{
							"begin": "^(?=\\s*)",
							"end": "^\\s*(?=\\\\end\\{(?:sageblock|sagesilent|sageverbatim|sageexample|sagecommandline|python|pythonq|pythonrepl)\\*?\\})",
							"contentName": "source.python",
							"patterns": [
								{
									"include": "source.python"
								}
							]
						}
					]
				},
				{
					"begin": "\\s*\\\\begin\\{(?:scalacode)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
					"end": "\\s*\\\\end\\{(?:scalacode)\\*?\\}",
					"captures": {
						"0": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"patterns": [
						{
							"include": "#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"end": "(\\})",
							"endCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "variable.parameter.function.latex"
						},
						{
							"begin": "^(?=\\s*)",
							"end": "^\\s*(?=\\\\end\\{(?:scalacode)\\*?\\})",
							"contentName": "source.scala",
							"patterns": [
								{
									"include": "source.scala"
								}
							]
						}
					]
				},
				{
					"begin": "\\s*\\\\begin\\{(?:sympycode|sympyverbatim|sympyblock|sympyconcode|sympyconsole|sympyconverbatim)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
					"end": "\\s*\\\\end\\{(?:sympycode|sympyverbatim|sympyblock|sympyconcode|sympyconsole|sympyconverbatim)\\*?\\}",
					"captures": {
						"0": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"patterns": [
						{
							"include": "#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"end": "(\\})",
							"endCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "variable.parameter.function.latex"
						},
						{
							"begin": "^(?=\\s*)",
							"end": "^\\s*(?=\\\\end\\{(?:sympycode|sympyverbatim|sympyblock|sympyconcode|sympyconsole|sympyconverbatim)\\*?\\})",
							"contentName": "source.python",
							"patterns": [
								{
									"include": "source.python"
								}
							]
						}
					]
				},
				{
					"begin": "\\s*\\\\begin\\{((?:[a-zA-Z]*code|lstlisting|minted|pyglist)\\*?)\\}(?:\\[.*\\])?(?:\\{.*\\})?",
					"captures": {
						"0": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"contentName": "meta.function.embedded.latex",
					"end": "\\\\end\\{\\1\\}(?:\\s*\\n)?",
					"name": "meta.embedded.block.generic.latex"
				},
				{
					"begin": "((?:^\\s*)?\\\\begin\\{((?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?))\\})(?:\\[[^\\]]*\\]){,2}(?=\\{)",
					"captures": {
						"1": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"end": "(\\\\end\\{\\2\\})",
					"patterns": [
						{
							"begin": "\\G(\\{)(?:__|[a-z\\s]*)(?i:asy|asymptote)",
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"contentName": "source.asy",
									"patterns": [
										{
											"include": "source.asy"
										}
									]
								}
							]
						},
						{
							"begin": "\\G(\\{)(?:__|[a-z\\s]*)(?i:bash)",
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"contentName": "source.shell",
									"patterns": [
										{
											"include": "source.shell"
										}
									]
								}
							]
						},
						{
							"begin": "\\G(\\{)(?:__|[a-z\\s]*)(?i:c|cpp)",
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"contentName": "source.cpp.embedded.latex",
									"patterns": [
										{
											"include": "source.cpp.embedded.latex"
										}
									]
								}
							]
						},
						{
							"begin": "\\G(\\{)(?:__|[a-z\\s]*)(?i:css)",
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"contentName": "source.css",
									"patterns": [
										{
											"include": "source.css"
										}
									]
								}
							]
						},
						{
							"begin": "\\G(\\{)(?:__|[a-z\\s]*)(?i:gnuplot)",
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"contentName": "source.gnuplot",
									"patterns": [
										{
											"include": "source.gnuplot"
										}
									]
								}
							]
						},
						{
							"begin": "\\G(\\{)(?:__|[a-z\\s]*)(?i:hs|haskell)",
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"contentName": "source.haskell",
									"patterns": [
										{
											"include": "source.haskell"
										}
									]
								}
							]
						},
						{
							"begin": "\\G(\\{)(?:__|[a-z\\s]*)(?i:html)",
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"contentName": "text.html",
									"patterns": [
										{
											"include": "text.html.basic"
										}
									]
								}
							]
						},
						{
							"begin": "\\G(\\{)(?:__|[a-z\\s]*)(?i:java)",
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"contentName": "source.java",
									"patterns": [
										{
											"include": "source.java"
										}
									]
								}
							]
						},
						{
							"begin": "\\G(\\{)(?:__|[a-z\\s]*)(?i:jl|julia)",
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"contentName": "source.julia",
									"patterns": [
										{
											"include": "source.julia"
										}
									]
								}
							]
						},
						{
							"begin": "\\G(\\{)(?:__|[a-z\\s]*)(?i:js|javascript)",
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"contentName": "source.js",
									"patterns": [
										{
											"include": "source.js"
										}
									]
								}
							]
						},
						{
							"begin": "\\G(\\{)(?:__|[a-z\\s]*)(?i:lua)",
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"contentName": "source.lua",
									"patterns": [
										{
											"include": "source.lua"
										}
									]
								}
							]
						},
						{
							"begin": "\\G(\\{)(?:__|[a-z\\s]*)(?i:py|python|sage)",
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"contentName": "source.python",
									"patterns": [
										{
											"include": "source.python"
										}
									]
								}
							]
						},
						{
							"begin": "\\G(\\{)(?:__|[a-z\\s]*)(?i:rb|ruby)",
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"contentName": "source.ruby",
									"patterns": [
										{
											"include": "source.ruby"
										}
									]
								}
							]
						},
						{
							"begin": "\\G(\\{)(?:__|[a-z\\s]*)(?i:rust)",
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"contentName": "source.rust",
									"patterns": [
										{
											"include": "source.rust"
										}
									]
								}
							]
						},
						{
							"begin": "\\G(\\{)(?:__|[a-z\\s]*)(?i:ts|typescript)",
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"contentName": "source.ts",
									"patterns": [
										{
											"include": "source.ts"
										}
									]
								}
							]
						},
						{
							"begin": "\\G(\\{)(?:__|[a-z\\s]*)(?i:xml)",
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"contentName": "text.xml",
									"patterns": [
										{
											"include": "text.xml"
										}
									]
								}
							]
						},
						{
							"begin": "\\G(\\{)(?:__|[a-z\\s]*)(?i:yaml)",
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"contentName": "source.yaml",
									"patterns": [
										{
											"include": "source.yaml"
										}
									]
								}
							]
						},
						{
							"begin": "\\G(\\{)(?:__|[a-z\\s]*)(?i:tikz|tikzpicture)",
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"contentName": "text.tex.latex",
									"patterns": [
										{
											"include": "text.tex.latex"
										}
									]
								}
							]
						},
						{
							"begin": "\\G(\\{)",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"end": "(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
							"patterns": [
								{
									"begin": "\\G",
									"end": "(\\})\\s*$",
									"endCaptures": {
										"1": {
											"name": "punctuation.definition.arguments.end.latex"
										}
									},
									"patterns": [
										{
											"include": "text.tex#braces"
										},
										{
											"include": "$self"
										}
									]
								},
								{
									"begin": "^(\\s*)",
									"contentName": "meta.function.embedded.latex",
									"end": "^\\s*(?=\\\\end\\{(?:RobExt)?(?:CacheMeCode|PlaceholderPathFromCode\\*?|PlaceholderFromCode\\*?|SetPlaceholderCode\\*?)\\})",
									"name": "meta.embedded.block.generic.latex"
								}
							]
						}
					]
				},
				{
					"begin": "(?:^\\s*)?\\\\begin\\{(terminal\\*?)\\}(?=\\[|\\{)",
					"captures": {
						"0": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"end": "\\\\end\\{\\1\\}",
					"patterns": [
						{
							"include": "#multiline-optional-arg-no-highlight"
						},
						{
							"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\\{terminal\\*?\\})",
							"name": "meta.embedded.block.generic.latex"
						}
					]
				}
			]
		},
		"verbatim-env": {
			"patterns": [
				{
					"begin": "(\\s*\\\\begin\\{((?:fboxv|boxedv|V|v|spv)erbatim\\*?)\\})",
					"captures": {
						"1": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"contentName": "markup.raw.verbatim.latex",
					"end": "(\\\\end\\{\\2\\})",
					"name": "meta.function.verbatim.latex"
				},
				{
					"begin": "(\\s*\\\\begin\\{VerbatimOut\\}\\{[^\\}]*\\})",
					"captures": {
						"1": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"contentName": "markup.raw.verbatim.latex",
					"end": "(\\\\end\\{\\VerbatimOut\\})",
					"name": "meta.function.verbatim.latex"
				},
				{
					"begin": "(\\s*\\\\begin\\{alltt\\})",
					"captures": {
						"1": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"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\\{([Cc]omment)\\})",
					"captures": {
						"1": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"contentName": "comment.line.percentage.latex",
					"end": "(\\\\end\\{\\2\\})",
					"name": "meta.function.verbatim.latex"
				}
			]
		},
		"hyperref-macro": {
			"patterns": [
				{
					"begin": "(?:\\s*)((\\\\)(?:href|hyperref|hyperimage))(?=\\[|\\{)",
					"beginCaptures": {
						"1": {
							"name": "support.function.url.latex"
						}
					},
					"comment": "Captures \\command[option]{url}{optional category}{optional name}{text}",
					"end": "(\\})",
					"endCaptures": {
						"1": {
							"name": "punctuation.definition.arguments.end.latex"
						}
					},
					"name": "meta.function.hyperlink.latex",
					"patterns": [
						{
							"include": "#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?:\\G|(?<=\\]))(\\{)([^}]*)(\\})(?:\\{[^}]*\\}){2}?(\\{)",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								},
								"2": {
									"name": "markup.underline.link.latex"
								},
								"3": {
									"name": "punctuation.definition.arguments.end.latex"
								},
								"4": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"contentName": "meta.variable.parameter.function.latex",
							"end": "(?=\\})",
							"patterns": [
								{
									"include": "$self"
								}
							]
						},
						{
							"begin": "(?:\\G|(?<=\\]))(?:(\\{)[^}]*(\\}))?(\\{)",
							"beginCaptures": {
								"1": {
									"name": "punctuation.definition.arguments.begin.latex"
								},
								"2": {
									"name": "punctuation.definition.arguments.end.latex"
								},
								"3": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"contentName": "meta.variable.parameter.function.latex",
							"end": "(?=\\})",
							"patterns": [
								{
									"include": "$self"
								}
							]
						}
					]
				},
				{
					"match": "(?:\\s*)((\\\\)(?:url|path))(\\{)([^}]*)(\\})",
					"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"
						}
					},
					"name": "meta.function.link.url.latex"
				}
			]
		},
		"inline-code-macro": {
			"patterns": [
				{
					"begin": "((\\\\)addplot)(?:\\+?)((?:\\[[^\\[]*\\]))*\\s*(gnuplot)\\s*((?:\\[[^\\[]*\\]))*\\s*(\\{)",
					"captures": {
						"1": {
							"name": "support.function.be.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						},
						"3": {
							"patterns": [
								{
									"include": "#optional-arg-bracket"
								}
							]
						},
						"4": {
							"name": "variable.parameter.function.latex"
						},
						"5": {
							"patterns": [
								{
									"include": "#optional-arg-bracket"
								}
							]
						},
						"6": {
							"name": "punctuation.definition.arguments.begin.latex"
						}
					},
					"end": "\\s*(\\};)",
					"patterns": [
						{
							"begin": "%",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.comment.latex"
								}
							},
							"end": "$\\n?",
							"name": "comment.line.percentage.latex"
						},
						{
							"include": "source.gnuplot"
						}
					]
				},
				{
					"match": "((\\\\)(?:mint|mintinline))((?:\\[[^\\[]*?\\])?)(\\{)[a-zA-Z]*(\\})(?:(?:([^a-zA-Z\\{])(.*?)(\\6))|(?:(\\{)(.*?)(\\})))",
					"captures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						},
						"3": {
							"patterns": [
								{
									"include": "#optional-arg-bracket"
								}
							]
						},
						"4": {
							"name": "punctuation.definition.arguments.begin.latex"
						},
						"5": {
							"name": "punctuation.definition.arguments.end.latex"
						},
						"6": {
							"name": "punctuation.definition.verb.latex"
						},
						"7": {
							"name": "markup.raw.verb.latex"
						},
						"8": {
							"name": "punctuation.definition.verb.latex"
						},
						"9": {
							"name": "punctuation.definition.verb.latex"
						},
						"10": {
							"name": "markup.raw.verb.latex"
						},
						"11": {
							"name": "punctuation.definition.verb.latex"
						}
					},
					"name": "meta.function.verb.latex"
				},
				{
					"match": "((\\\\)[a-z]+inline)((?:\\[[^\\[]*?\\])?)(?:(?:([^a-zA-Z\\{])(.*?)(\\4))|(?:(\\{)(.*?)(\\})))",
					"captures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						},
						"3": {
							"patterns": [
								{
									"include": "#optional-arg-bracket"
								}
							]
						},
						"4": {
							"name": "punctuation.definition.verb.latex"
						},
						"5": {
							"name": "markup.raw.verb.latex"
						},
						"6": {
							"name": "punctuation.definition.verb.latex"
						},
						"7": {
							"name": "punctuation.definition.verb.latex"
						},
						"8": {
							"name": "markup.raw.verb.latex"
						},
						"9": {
							"name": "punctuation.definition.verb.latex"
						}
					},
					"name": "meta.function.verb.latex"
				},
				{
					"match": "((\\\\)(?:(?:py|pycon|pylab|pylabcon|sympy|sympycon)[cv]?|pyq|pycq|pyif))((?:\\[[^\\[]*?\\])?)(?:(?:([^a-zA-Z\\{\\}\\[\\](),;\\s])(.*?)(\\4))|(?:(\\{)(.*?)(\\})))",
					"captures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						},
						"3": {
							"patterns": [
								{
									"include": "#optional-arg-bracket"
								}
							]
						},
						"4": {
							"name": "punctuation.definition.verb.latex"
						},
						"5": {
							"name": "source.python",
							"patterns": [
								{
									"include": "source.python"
								}
							]
						},
						"6": {
							"name": "punctuation.definition.verb.latex"
						},
						"7": {
							"name": "punctuation.definition.verb.latex"
						},
						"8": {
							"name": "source.python",
							"patterns": [
								{
									"include": "source.python"
								}
							]
						},
						"9": {
							"name": "punctuation.definition.verb.latex"
						}
					},
					"name": "meta.function.verb.latex"
				},
				{
					"match": "((\\\\)(?:jl|julia)[cv]?)((?:\\[[^\\[]*?\\])?)(?:(?:([^a-zA-Z\\{])(.*?)(\\4))|(?:(\\{)(.*?)(\\})))",
					"captures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						},
						"3": {
							"patterns": [
								{
									"include": "#optional-arg-bracket"
								}
							]
						},
						"4": {
							"name": "punctuation.definition.verb.latex"
						},
						"5": {
							"name": "source.julia",
							"patterns": [
								{
									"include": "source.julia"
								}
							]
						},
						"6": {
							"name": "punctuation.definition.verb.latex"
						},
						"7": {
							"name": "punctuation.definition.verb.latex"
						},
						"8": {
							"name": "source.julia",
							"patterns": [
								{
									"include": "source.julia"
								}
							]
						},
						"9": {
							"name": "punctuation.definition.verb.latex"
						}
					},
					"name": "meta.function.verb.latex"
				},
				{
					"begin": "((\\\\)(?:directlua|luadirect|luaexec))(\\{)",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						},
						"3": {
							"name": "punctuation.definition.arguments.begin.latex"
						}
					},
					"end": "\\}",
					"endCaptures": {
						"0": {
							"name": "punctuation.definition.arguments.end.latex"
						}
					},
					"contentName": "source.lua",
					"patterns": [
						{
							"include": "source.lua"
						},
						{
							"include": "text.tex#braces"
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[(?i:asy|asymptote)\\b|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "source.asy",
							"patterns": [
								{
									"include": "source.asy"
								}
							]
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[(?i:bash)\\b|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "source.shell",
							"patterns": [
								{
									"include": "source.shell"
								}
							]
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[(?i:c|cpp)\\b|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "source.cpp.embedded.latex",
							"patterns": [
								{
									"include": "source.cpp.embedded.latex"
								}
							]
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[(?i:css)\\b|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "source.css",
							"patterns": [
								{
									"include": "source.css"
								}
							]
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[(?i:gnuplot)\\b|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "source.gnuplot",
							"patterns": [
								{
									"include": "source.gnuplot"
								}
							]
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[(?i:hs|haskell)\\b|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "source.haskell",
							"patterns": [
								{
									"include": "source.haskell"
								}
							]
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[(?i:html)\\b|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "text.html",
							"patterns": [
								{
									"include": "text.html.basic"
								}
							]
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[(?i:java)\\b|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "source.java",
							"patterns": [
								{
									"include": "source.java"
								}
							]
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[(?i:jl|julia)\\b|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "source.julia",
							"patterns": [
								{
									"include": "source.julia"
								}
							]
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[(?i:js|javascript)\\b|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "source.js",
							"patterns": [
								{
									"include": "source.js"
								}
							]
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[(?i:lua)\\b|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "source.lua",
							"patterns": [
								{
									"include": "source.lua"
								}
							]
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[(?i:py|python|sage)\\b|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "source.python",
							"patterns": [
								{
									"include": "source.python"
								}
							]
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[(?i:rb|ruby)\\b|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "source.ruby",
							"patterns": [
								{
									"include": "source.ruby"
								}
							]
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[(?i:rust)\\b|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "source.rust",
							"patterns": [
								{
									"include": "source.rust"
								}
							]
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[(?i:ts|typescript)\\b|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "source.ts",
							"patterns": [
								{
									"include": "source.ts"
								}
							]
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[(?i:xml)\\b|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "text.xml",
							"patterns": [
								{
									"include": "text.xml"
								}
							]
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[(?i:yaml)\\b|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "source.yaml",
							"patterns": [
								{
									"include": "source.yaml"
								}
							]
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[(?i:tikz|tikzpicture)\\b|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "text.tex.latex",
							"patterns": [
								{
									"include": "text.tex.latex"
								}
							]
						}
					]
				},
				{
					"begin": "((\\\\)cacheMeCode)(?=\\[|\\{)",
					"end": "(?<=\\})",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						}
					},
					"patterns": [
						{
							"include": "text.tex.latex#multiline-optional-arg-no-highlight"
						},
						{
							"begin": "(?<=\\])(\\{)",
							"end": "\\}",
							"beginCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.begin.latex"
								}
							},
							"endCaptures": {
								"0": {
									"name": "punctuation.definition.arguments.end.latex"
								}
							},
							"contentName": "meta.embedded.block.generic.latex",
							"patterns": [
								{
									"include": "text.tex#braces"
								}
							]
						}
					]
				}
			]
		},
		"citation-macro": {
			"begin": "((\\\\)(?:[aA]uto|foot|full|footfull|no|ref|short|[tT]ext|[pP]aren|[sS]mart|[fFpP]vol|vol)?[cC]ite(?:al)?(?:p|s|t|author|year(?:par)?|title|url|date)?[ANP]*\\*?)((?:(?:\\([^\\)]*\\)){0,2}(?:\\[[^\\]]*\\]){0,2}\\{[\\p{Alphabetic}\\p{Number}_:.-]*\\})*)(<[^\\]<>]*>)?((?:\\[[^\\]]*\\])*)(\\{)",
			"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": [
				{
					"match": "((%).*)$",
					"captures": {
						"1": {
							"name": "comment.line.percentage.tex"
						},
						"2": {
							"name": "punctuation.definition.comment.tex"
						}
					}
				},
				{
					"match": "[\\p{Alphabetic}\\p{Number}:.-]+",
					"name": "constant.other.reference.citation.latex"
				}
			]
		},
		"references-macro": {
			"patterns": [
				{
					"begin": "((\\\\)(?:\\w*[rR]ef\\*?))(?:\\[[^\\]]*\\])?(\\{)",
					"beginCaptures": {
						"1": {
							"name": "keyword.control.ref.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.reference.label.latex",
					"patterns": [
						{
							"match": "[\\p{Alphabetic}\\p{Number}\\.,:/*!^_-]+",
							"name": "constant.other.reference.label.latex"
						}
					]
				},
				{
					"match": "((\\\\)(?:\\w*[rR]efrange\\*?))(?:\\[[^\\]]*\\])?(\\{)([\\p{Alphabetic}\\p{Number}\\.,:/*!^_-]+)(\\})(\\{)([\\p{Alphabetic}\\p{Number}\\.,:/*!^_-]+)(\\})",
					"captures": {
						"1": {
							"name": "keyword.control.ref.latex"
						},
						"2": {
							"name": "punctuation.definition.keyword.latex"
						},
						"3": {
							"name": "punctuation.definition.arguments.begin.latex"
						},
						"4": {
							"name": "constant.other.reference.label.latex"
						},
						"5": {
							"name": "punctuation.definition.arguments.end.latex"
						},
						"6": {
							"name": "punctuation.definition.arguments.begin.latex"
						},
						"7": {
							"name": "constant.other.reference.label.latex"
						},
						"8": {
							"name": "punctuation.definition.arguments.end.latex"
						}
					}
				},
				{
					"begin": "((\\\\)bibentry)(\\{)",
					"captures": {
						"1": {
							"name": "keyword.control.cite.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.citation.latex",
					"patterns": [
						{
							"match": "[\\p{Alphabetic}\\p{Number}:.]+",
							"name": "constant.other.reference.citation.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"
						}
					]
				}
			]
		},
		"inline-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.tex"
						}
					},
					"end": "(?<!\\$)\\$",
					"endCaptures": {
						"0": {
							"name": "punctuation.definition.string.end.tex"
						}
					},
					"name": "meta.math.block.tex support.class.math.block.tex",
					"patterns": [
						{
							"match": "\\\\\\$",
							"name": "constant.character.escape.latex"
						},
						{
							"include": "text.tex#math-content"
						},
						{
							"include": "$self"
						}
					]
				}
			]
		},
		"verb-macro": {
			"patterns": [
				{
					"begin": "((\\\\)(?:verb|Verb|spverb)\\*?)\\s*((\\\\)scantokens)(\\{)",
					"beginCaptures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						},
						"3": {
							"name": "support.function.verb.latex"
						},
						"4": {
							"name": "punctuation.definition.verb.latex"
						},
						"5": {
							"name": "punctuation.definition.begin.latex"
						}
					},
					"contentName": "markup.raw.verb.latex",
					"end": "(\\})",
					"endCaptures": {
						"1": {
							"name": "punctuation.definition.end.latex"
						}
					},
					"name": "meta.function.verb.latex",
					"patterns": [
						{
							"include": "$self"
						}
					]
				},
				{
					"match": "((\\\\)(?:verb|Verb|spverb)\\*?)\\s*((?<=\\s)\\S|[^a-zA-Z])(.*?)(\\3|$)",
					"captures": {
						"1": {
							"name": "support.function.verb.latex"
						},
						"2": {
							"name": "punctuation.definition.function.latex"
						},
						"3": {
							"name": "punctuation.definition.verb.latex"
						},
						"4": {
							"name": "markup.raw.verb.latex"
						},
						"5": {
							"name": "punctuation.definition.verb.latex"
						}
					},
					"name": "meta.function.verb.latex"
				}
			]
		},
		"unbalanced-env": {
			"patterns": [
				{
					"match": "(\\s*\\\\(?:begin|end)\\{(\\p{Alphabetic}+\\*?)\\})",
					"captures": {
						"1": {
							"patterns": [
								{
									"include": "#macro-with-args-tokenizer"
								}
							]
						}
					},
					"name": "meta.function.environment.general.latex"
				}
			]
		},
		"all-balanced-env": {
			"patterns": [
				{
					"begin": "(?:\\s*)((\\\\)begin)(\\{)((?:\\+?array|equation|(?:IEEE|sub)?eqnarray|multline|align|aligned|alignat|alignedat|flalign|flaligned|flalignat|split|gather|gathered|(?:\\+|d|r|dr)?cases|(?:display)?math|\\+?[a-zA-Z]*matrix|[pbBvV]?NiceMatrix|[pbBvV]?NiceArray|(?:(?: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": "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"
						}
					]
				}
			]
		},
		"newcommand-macro": {
			"begin": "((\\\\)(?:newcommand|renewcommand|(?:re)?newrobustcmd|DeclareRobustCommand)\\*?)(\\{)((\\\\)\\p{Alphabetic}+\\*?)(\\})(?:(\\[)[^\\]]*(\\])){0,2}(\\{)",
			"beginCaptures": {
				"1": {
					"name": "storage.type.function.latex"
				},
				"2": {
					"name": "punctuation.definition.function.latex"
				},
				"3": {
					"name": "punctuation.definition.begin.latex"
				},
				"4": {
					"name": "support.function.general.latex"
				},
				"5": {
					"name": "punctuation.definition.function.latex"
				},
				"6": {
					"name": "punctuation.definition.end.latex"
				},
				"7": {
					"name": "punctuation.definition.arguments.optional.begin.latex"
				},
				"8": {
					"name": "punctuation.definition.arguments.optional.end.latex"
				},
				"9": {
					"name": "punctuation.definition.arguments.begin.latex"
				}
			},
			"end": "\\}",
			"endCaptures": {
				"0": {
					"name": "punctuation.definition.arguments.end.latex"
				}
			},
			"name": "meta.parameter.newcommand.latex",
			"patterns": [
				{
					"include": "#documentclass-usepackage-macro"
				},
				{
					"include": "#unbalanced-env"
				},
				{
					"include": "#input-macro"
				},
				{
					"include": "#sections-macro"
				},
				{
					"include": "#hyperref-macro"
				},
				{
					"include": "#text-font-macro"
				},
				{
					"include": "#citation-macro"
				},
				{
					"include": "#references-macro"
				},
				{
					"include": "#label-macro"
				},
				{
					"include": "#verb-macro"
				},
				{
					"include": "#inline-code-macro"
				},
				{
					"include": "#macro-with-args-tokenizer"
				},
				{
					"include": "#all-other-macro"
				},
				{
					"include": "#display-math"
				},
				{
					"include": "#inline-math"
				},
				{
					"include": "#column-specials"
				},
				{
					"include": "#braces"
				},
				{
					"include": "text.tex"
				}
			]
		},
		"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"
				}
			]
		},
		"label-macro": {
			"begin": "((\\\\)z?label)((?:\\[[^\\[]*?\\])*)(\\{)",
			"beginCaptures": {
				"1": {
					"name": "keyword.control.label.latex"
				},
				"2": {
					"name": "punctuation.definition.keyword.latex"
				},
				"3": {
					"patterns": [
						{
							"include": "#optional-arg-bracket"
						}
					]
				},
				"4": {
					"name": "punctuation.definition.arguments.begin.latex"
				}
			},
			"end": "\\}",
			"endCaptures": {
				"0": {
					"name": "punctuation.definition.arguments.end.latex"
				}
			},
			"name": "meta.definition.label.latex",
			"patterns": [
				{
					"match": "[\\p{Alphabetic}\\p{Number}\\.,:/*!^_-]+",
					"name": "variable.parameter.definition.label.latex"
				}
			]
		},
		"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"
						}
					]
				},
				{
					"match": "(\\\\)item\\b",
					"captures": {
						"0": {
							"name": "keyword.other.item.latex"
						},
						"1": {
							"name": "punctuation.definition.keyword.latex"
						}
					},
					"name": "meta.scope.item.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(feminine|masculine))|d(i(scount|ed|v(orced)?)|o(ng|wnarrow|llar(oldstyle)?)|egree|agger(dbl)?|blhyphen(char)?)|uparrow|p(ilcrow|e(so|r(t(housand|enthousand)|iodcentered))|aragraph|m)|e(stimated|ightoldstyle|uro)|quotes(traight(dblbase|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",
					"captures": {
						"1": {
							"name": "punctuation.definition.constant.latex"
						}
					},
					"name": "constant.character.latex"
				},
				{
					"match": "(\\\\)(?:[cgl]_+[_\\p{Alphabetic}@]+_[a-z]+|[qs]_[_\\p{Alphabetic}@]+[\\p{Alphabetic}@])",
					"captures": {
						"1": {
							"name": "punctuation.definition.variable.latex"
						}
					},
					"name": "variable.other.latex3.latex"
				}
			]
		},
		"column-specials": {
			"match": "(?:<|>)(\\{)\\$(\\})",
			"captures": {
				"1": {
					"name": "punctuation.definition.column-specials.begin.latex"
				},
				"2": {
					"name": "punctuation.definition.column-specials.end.latex"
				}
			},
			"name": "meta.column-specials.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{Number}_:.-]+)(\\})(.*)"
				}
			]
		},
		"macro-with-args-tokenizer": {
			"match": "\\s*((\\\\)(?:\\p{Alphabetic}+))(\\{)(\\\\?\\p{Alphabetic}+\\*?)(\\})(?:(\\[)([^\\]]*)(\\])){,2}(?:(\\{)([^{}]*)(\\}))?",
			"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": "$self"
						}
					]
				},
				"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"
				}
			}
		},
		"multiline-optional-arg": {
			"begin": "\\G\\[",
			"beginCaptures": {
				"0": {
					"name": "punctuation.definition.arguments.optional.begin.latex"
				}
			},
			"contentName": "variable.parameter.function.latex",
			"end": "\\]",
			"endCaptures": {
				"0": {
					"name": "punctuation.definition.arguments.optional.end.latex"
				}
			},
			"name": "meta.parameter.optional.latex",
			"patterns": [
				{
					"include": "$self"
				}
			]
		},
		"multiline-optional-arg-no-highlight": {
			"begin": "(?:\\G|(?<=\\}))\\s*\\[",
			"beginCaptures": {
				"0": {
					"name": "punctuation.definition.arguments.optional.begin.latex"
				}
			},
			"end": "\\]",
			"endCaptures": {
				"0": {
					"name": "punctuation.definition.arguments.optional.end.latex"
				}
			},
			"name": "meta.parameter.optional.latex",
			"patterns": [
				{
					"include": "$self"
				}
			]
		},
		"multiline-arg-no-highlight": {
			"begin": "\\G\\{",
			"beginCaptures": {
				"0": {
					"name": "punctuation.definition.arguments.begin.latex"
				}
			},
			"end": "\\}",
			"endCaptures": {
				"0": {
					"name": "punctuation.definition.arguments.end.latex"
				}
			},
			"name": "meta.parameter.latex",
			"comment": "Do not look for balanced expressions, ie environments, inside a command argument",
			"patterns": [
				{
					"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": "#braces"
				},
				{
					"include": "text.tex"
				}
			]
		},
		"optional-arg-bracket": {
			"patterns": [
				{
					"captures": {
						"1": {
							"name": "punctuation.definition.arguments.optional.begin.latex"
						},
						"2": {
							"name": "variable.parameter.function.latex"
						},
						"3": {
							"name": "punctuation.definition.arguments.optional.end.latex"
						}
					},
					"match": "(\\[)([^\\[]*?)(\\])",
					"name": "meta.parameter.optional.latex"
				}
			]
		},
		"optional-arg-parenthesis": {
			"patterns": [
				{
					"captures": {
						"1": {
							"name": "punctuation.definition.arguments.optional.begin.latex"
						},
						"2": {
							"name": "variable.parameter.function.latex"
						},
						"3": {
							"name": "punctuation.definition.arguments.optional.end.latex"
						}
					},
					"match": "(\\()([^\\(]*?)(\\))",
					"name": "meta.parameter.optional.latex"
				}
			]
		},
		"optional-arg-bracket-no-highlight": {
			"patterns": [
				{
					"captures": {
						"1": {
							"name": "punctuation.definition.arguments.optional.begin.latex"
						},
						"2": {
							"name": "punctuation.definition.arguments.optional.end.latex"
						}
					},
					"match": "(\\[)[^\\[]*?(\\])",
					"name": "meta.parameter.optional.latex"
				}
			]
		},
		"optional-arg-angle-no-highlight": {
			"patterns": [
				{
					"captures": {
						"1": {
							"name": "punctuation.definition.arguments.optional.begin.latex"
						},
						"2": {
							"name": "punctuation.definition.arguments.optional.end.latex"
						}
					},
					"match": "(<)[^<]*?(>)",
					"name": "meta.parameter.optional.latex"
				}
			]
		},
		"optional-arg-parenthesis-no-highlight": {
			"patterns": [
				{
					"captures": {
						"1": {
							"name": "punctuation.definition.arguments.optional.begin.latex"
						},
						"2": {
							"name": "punctuation.definition.arguments.optional.end.latex"
						}
					},
					"match": "(\\()[^\\(]*?(\\))",
					"name": "meta.parameter.optional.latex"
				}
			]
		},
		"songs-chords": {
			"patterns": [
				{
					"begin": "\\\\\\[",
					"end": "\\]",
					"name": "meta.chord.block.latex support.class.chord.block.environment.latex",
					"patterns": [
						{
							"include": "$self"
						}
					]
				},
				{
					"match": "\\^",
					"name": "meta.chord.block.latex support.class.chord.block.environment.latex"
				},
				{
					"include": "$self"
				}
			]
		}
	}
}