PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.9.0
Code Block Pro – Beautiful Syntax Highlighting v1.9.0
1.27.1 1.27.2 1.27.3 1.27.4 1.27.5 1.27.6 1.27.7 1.28.0 1.3.0 1.4.0 1.5.0 1.5.1 1.5.2 1.6.0 1.7.0 1.8.0 1.9.0 1.9.1 1.9.2 1.9.3 trunk 1.1.0 1.10.0 1.11.0 1.11.1 All 63 releases
code-block-pro / build / shiki / languages / latex.tmLanguage.json

latex.tmLanguage.json in Code Block Pro – Beautiful Syntax Highlighting 1.9.0, at build/shiki/languages/latex.tmLanguage.json

1,918 lines 48.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 {
2 "information_for_contributors": [
3 "This file has been converted from https://github.com/jlelong/vscode-latex-basics/blob/master/syntaxes/LaTeX.tmLanguage.json",
4 "If you want to provide a fix or improvement, please create a pull request against the original repository.",
5 "Once accepted there, we are happy to receive an update request."
6 ],
7 "version": "https://github.com/jlelong/vscode-latex-basics/commit/6fc051150e918f8e5df7b102977d8d72eedf66f6",
8 "name": "latex",
9 "scopeName": "text.tex.latex",
10 "patterns": [
11 {
12 "comment": "This scope identifies partially typed commands such as `\\tab`. We use this to trigger “Command Completion” only when it makes sense.",
13 "match": "(?<=\\\\[\\w@]|\\\\[\\w@]{2}|\\\\[\\w@]{3}|\\\\[\\w@]{4}|\\\\[\\w@]{5}|\\\\[\\w@]{6})\\s",
14 "name": "meta.space-after-command.latex"
15 },
16 {
17 "begin": "((\\\\)(?:usepackage|documentclass))((?:\\[[^\\[]*?\\])*)(\\{)",
18 "beginCaptures": {
19 "1": {
20 "name": "keyword.control.preamble.latex"
21 },
22 "2": {
23 "name": "punctuation.definition.function.latex"
24 },
25 "3": {
26 "patterns": [
27 {
28 "include": "#optional-arg"
29 }
30 ]
31 },
32 "4": {
33 "name": "punctuation.definition.arguments.begin.latex"
34 }
35 },
36 "contentName": "support.class.latex",
37 "end": "\\}",
38 "endCaptures": {
39 "0": {
40 "name": "punctuation.definition.arguments.end.latex"
41 }
42 },
43 "name": "meta.preamble.latex",
44 "patterns": [
45 {
46 "include": "$self"
47 }
48 ]
49 },
50 {
51 "begin": "((\\\\)(?:include|input))(\\{)",
52 "beginCaptures": {
53 "1": {
54 "name": "keyword.control.include.latex"
55 },
56 "2": {
57 "name": "punctuation.definition.function.latex"
58 },
59 "3": {
60 "name": "punctuation.definition.arguments.begin.latex"
61 }
62 },
63 "end": "\\}",
64 "endCaptures": {
65 "0": {
66 "name": "punctuation.definition.arguments.end.latex"
67 }
68 },
69 "name": "meta.include.latex",
70 "patterns": [
71 {
72 "include": "$self"
73 }
74 ]
75 },
76 {
77 "begin": "((\\\\)((?:sub){0,2}section|(?:sub)?paragraph|chapter|part|addpart|addchap|addsec|minisec|frametitle)(?:\\*)?)((?:\\[[^\\[]*?\\]){0,2})(\\{)",
78 "beginCaptures": {
79 "1": {
80 "name": "support.function.section.latex"
81 },
82 "2": {
83 "name": "punctuation.definition.function.latex"
84 },
85 "4": {
86 "patterns": [
87 {
88 "include": "#optional-arg"
89 }
90 ]
91 },
92 "5": {
93 "name": "punctuation.definition.arguments.begin.latex"
94 }
95 },
96 "comment": "this works OK with all kinds of crazy stuff as long as section is one line",
97 "contentName": "entity.name.section.latex",
98 "end": "\\}",
99 "endCaptures": {
100 "0": {
101 "name": "punctuation.definition.arguments.end.latex"
102 }
103 },
104 "name": "meta.function.section.$3.latex",
105 "patterns": [
106 {
107 "include": "text.tex#braces"
108 },
109 {
110 "include": "$base"
111 }
112 ]
113 },
114 {
115 "name": "meta.function.environment.songs.latex",
116 "begin": "((?:\\s*)\\\\begin\\{songs\\}\\{.*\\})",
117 "end": "(\\\\end\\{songs\\}(?:\\s*\\n)?)",
118 "captures": {
119 "1": {
120 "patterns": [
121 {
122 "include": "#begin-env-tokenizer"
123 }
124 ]
125 }
126 },
127 "contentName": "meta.data.environment.songs.latex",
128 "patterns": [
129 {
130 "name": "meta.chord.block.latex support.class.chord.block.environment.latex",
131 "begin": "\\\\\\[",
132 "end": "\\]",
133 "patterns": [
134 {
135 "include": "$base"
136 }
137 ]
138 },
139 {
140 "name": "meta.chord.block.latex support.class.chord.block.environment.latex",
141 "match": "\\^"
142 },
143 {
144 "include": "$self"
145 }
146 ]
147 },
148 {
149 "begin": "(^\\s*)?(?=\\\\begin\\{(lstlisting|minted|pyglist)\\})",
150 "beginCaptures": {
151 "0": {
152 "name": "punctuation.whitespace.embedded.leading.latex"
153 }
154 },
155 "end": "(?!\\G)(\\s*$\\n?)?",
156 "endCaptures": {
157 "0": {
158 "name": "punctuation.whitespace.embedded.trailing.latex"
159 }
160 },
161 "patterns": [
162 {
163 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:c|cpp)\\})",
164 "captures": {
165 "1": {
166 "patterns": [
167 {
168 "include": "#begin-env-tokenizer"
169 }
170 ]
171 }
172 },
173 "contentName": "source.cpp.embedded.latex",
174 "patterns": [
175 {
176 "include": "source.cpp.embedded.latex"
177 }
178 ],
179 "end": "(\\\\end\\{minted\\})"
180 },
181 {
182 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:asy|asymptote)\\})",
183 "captures": {
184 "1": {
185 "patterns": [
186 {
187 "include": "#begin-env-tokenizer"
188 }
189 ]
190 }
191 },
192 "contentName": "source.asy",
193 "patterns": [
194 {
195 "include": "source.asy"
196 }
197 ],
198 "end": "(\\\\end\\{minted\\})"
199 },
200 {
201 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:css)\\})",
202 "captures": {
203 "1": {
204 "patterns": [
205 {
206 "include": "#begin-env-tokenizer"
207 }
208 ]
209 }
210 },
211 "contentName": "source.css",
212 "patterns": [
213 {
214 "include": "source.css"
215 }
216 ],
217 "end": "(\\\\end\\{minted\\})"
218 },
219 {
220 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:hs|haskell)\\})",
221 "captures": {
222 "1": {
223 "patterns": [
224 {
225 "include": "#begin-env-tokenizer"
226 }
227 ]
228 }
229 },
230 "contentName": "source.haskell",
231 "patterns": [
232 {
233 "include": "source.haskell"
234 }
235 ],
236 "end": "(\\\\end\\{minted\\})"
237 },
238 {
239 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:html)\\})",
240 "captures": {
241 "1": {
242 "patterns": [
243 {
244 "include": "#begin-env-tokenizer"
245 }
246 ]
247 }
248 },
249 "contentName": "text.html",
250 "patterns": [
251 {
252 "include": "text.html.basic"
253 }
254 ],
255 "end": "(\\\\end\\{minted\\})"
256 },
257 {
258 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:xml)\\})",
259 "captures": {
260 "1": {
261 "patterns": [
262 {
263 "include": "#begin-env-tokenizer"
264 }
265 ]
266 }
267 },
268 "contentName": "text.xml",
269 "patterns": [
270 {
271 "include": "text.xml"
272 }
273 ],
274 "end": "(\\\\end\\{minted\\})"
275 },
276 {
277 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:java)\\})",
278 "captures": {
279 "1": {
280 "patterns": [
281 {
282 "include": "#begin-env-tokenizer"
283 }
284 ]
285 }
286 },
287 "contentName": "source.java",
288 "patterns": [
289 {
290 "include": "source.java"
291 }
292 ],
293 "end": "(\\\\end\\{minted\\})"
294 },
295 {
296 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:lua)\\})",
297 "captures": {
298 "1": {
299 "patterns": [
300 {
301 "include": "#begin-env-tokenizer"
302 }
303 ]
304 }
305 },
306 "contentName": "source.lua",
307 "patterns": [
308 {
309 "include": "source.lua"
310 }
311 ],
312 "end": "(\\\\end\\{minted\\})"
313 },
314 {
315 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:jl|julia)\\})",
316 "captures": {
317 "1": {
318 "patterns": [
319 {
320 "include": "#begin-env-tokenizer"
321 }
322 ]
323 }
324 },
325 "contentName": "source.julia",
326 "patterns": [
327 {
328 "include": "source.julia"
329 }
330 ],
331 "end": "(\\\\end\\{minted\\})"
332 },
333 {
334 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:rb|ruby)\\})",
335 "captures": {
336 "1": {
337 "patterns": [
338 {
339 "include": "#begin-env-tokenizer"
340 }
341 ]
342 }
343 },
344 "contentName": "source.ruby",
345 "patterns": [
346 {
347 "include": "source.ruby"
348 }
349 ],
350 "end": "(\\\\end\\{minted\\})"
351 },
352 {
353 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:js|javascript)\\})",
354 "captures": {
355 "1": {
356 "patterns": [
357 {
358 "include": "#begin-env-tokenizer"
359 }
360 ]
361 }
362 },
363 "contentName": "source.js",
364 "patterns": [
365 {
366 "include": "source.js"
367 }
368 ],
369 "end": "(\\\\end\\{minted\\})"
370 },
371 {
372 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:ts|typescript)\\})",
373 "captures": {
374 "1": {
375 "patterns": [
376 {
377 "include": "#begin-env-tokenizer"
378 }
379 ]
380 }
381 },
382 "contentName": "source.ts",
383 "patterns": [
384 {
385 "include": "source.ts"
386 }
387 ],
388 "end": "(\\\\end\\{minted\\})"
389 },
390 {
391 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:py|python)\\})",
392 "captures": {
393 "1": {
394 "patterns": [
395 {
396 "include": "#begin-env-tokenizer"
397 }
398 ]
399 }
400 },
401 "contentName": "source.python",
402 "patterns": [
403 {
404 "include": "source.python"
405 }
406 ],
407 "end": "(\\\\end\\{minted\\})"
408 },
409 {
410 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:yaml)\\})",
411 "captures": {
412 "1": {
413 "patterns": [
414 {
415 "include": "#begin-env-tokenizer"
416 }
417 ]
418 }
419 },
420 "contentName": "source.yaml",
421 "patterns": [
422 {
423 "include": "source.yaml"
424 }
425 ],
426 "end": "(\\\\end\\{minted\\})"
427 },
428 {
429 "begin": "(\\\\begin\\{(?:lstlisting|minted|pyglist)\\}(?:\\[.*\\])?)",
430 "captures": {
431 "1": {
432 "patterns": [
433 {
434 "include": "#begin-env-tokenizer"
435 }
436 ]
437 }
438 },
439 "contentName": "meta.function.embedded.latex",
440 "end": "(\\\\end\\{(?:lstlisting|minted|pyglist)\\})",
441 "name": "meta.embedded.block.generic.latex"
442 }
443 ]
444 },
445 {
446 "begin": "(\\s*\\\\begin\\{((?:cppcode)\\*?)\\}(?:\\[.*\\])?(?:\\{.*\\})?)",
447 "captures": {
448 "1": {
449 "patterns": [
450 {
451 "include": "#begin-env-tokenizer"
452 }
453 ]
454 }
455 },
456 "contentName": "source.cpp.embedded.latex",
457 "patterns": [
458 {
459 "include": "source.cpp.embedded.latex"
460 }
461 ],
462 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
463 },
464 {
465 "begin": "(\\s*\\\\begin\\{((?:hscode)\\*?)\\}(?:\\[.*\\])?(?:\\{.*\\})?)",
466 "captures": {
467 "1": {
468 "patterns": [
469 {
470 "include": "#begin-env-tokenizer"
471 }
472 ]
473 }
474 },
475 "contentName": "source.haskell",
476 "patterns": [
477 {
478 "include": "source.haskell"
479 }
480 ],
481 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
482 },
483 {
484 "begin": "(\\s*\\\\begin\\{((?:luacode)\\*?)\\}(?:\\[.*\\])?(?:\\{.*\\})?)",
485 "captures": {
486 "1": {
487 "patterns": [
488 {
489 "include": "#begin-env-tokenizer"
490 }
491 ]
492 }
493 },
494 "contentName": "source.lua",
495 "patterns": [
496 {
497 "include": "source.lua"
498 }
499 ],
500 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
501 },
502 {
503 "begin": "(\\s*\\\\begin\\{((?:jlcode|jlverbatim|jlblock|jlconcode|jlconsole|jlconverbatim)\\*?)\\}(?:\\[.*\\])?(?:\\{.*\\})?)",
504 "captures": {
505 "1": {
506 "patterns": [
507 {
508 "include": "#begin-env-tokenizer"
509 }
510 ]
511 }
512 },
513 "contentName": "source.julia",
514 "patterns": [
515 {
516 "include": "source.julia"
517 }
518 ],
519 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
520 },
521 {
522 "begin": "(\\s*\\\\begin\\{((?:juliacode|juliaverbatim|juliablock|juliaconcode|juliaconsole|juliaconverbatim)\\*?)\\}(?:\\[.*\\])?(?:\\{.*\\})?)",
523 "captures": {
524 "1": {
525 "patterns": [
526 {
527 "include": "#begin-env-tokenizer"
528 }
529 ]
530 }
531 },
532 "contentName": "source.julia",
533 "patterns": [
534 {
535 "include": "source.julia"
536 }
537 ],
538 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
539 },
540 {
541 "begin": "(\\s*\\\\begin\\{((?:sageblock|sagesilent|sageverbatim|sageexample|sagecommandline|python|pythonq|pythonrepl)\\*?)\\}(?:\\[.*\\])?(?:\\{.*\\})?)",
542 "captures": {
543 "1": {
544 "patterns": [
545 {
546 "include": "#begin-env-tokenizer"
547 }
548 ]
549 }
550 },
551 "contentName": "source.python",
552 "patterns": [
553 {
554 "include": "source.python"
555 }
556 ],
557 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
558 },
559 {
560 "begin": "(\\s*\\\\begin\\{((?:pycode|pyverbatim|pyblock|pyconcode|pyconsole|pyconverbatim)\\*?)\\}(?:\\[.*\\])?(?:\\{.*\\})?)",
561 "captures": {
562 "1": {
563 "patterns": [
564 {
565 "include": "#begin-env-tokenizer"
566 }
567 ]
568 }
569 },
570 "contentName": "source.python",
571 "patterns": [
572 {
573 "include": "source.python"
574 }
575 ],
576 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
577 },
578 {
579 "begin": "(\\s*\\\\begin\\{((?:pylabcode|pylabverbatim|pylabblock|pylabconcode|pylabconsole|pylabconverbatim)\\*?)\\}(?:\\[.*\\])?(?:\\{.*\\})?)",
580 "captures": {
581 "1": {
582 "patterns": [
583 {
584 "include": "#begin-env-tokenizer"
585 }
586 ]
587 }
588 },
589 "contentName": "source.python",
590 "patterns": [
591 {
592 "include": "source.python"
593 }
594 ],
595 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
596 },
597 {
598 "begin": "(\\s*\\\\begin\\{((?:sympycode|sympyverbatim|sympyblock|sympyconcode|sympyconsole|sympyconverbatim)\\*?)\\}(?:\\[.*\\])?(?:\\{.*\\})?)",
599 "captures": {
600 "1": {
601 "patterns": [
602 {
603 "include": "#begin-env-tokenizer"
604 }
605 ]
606 }
607 },
608 "contentName": "source.python",
609 "patterns": [
610 {
611 "include": "source.python"
612 }
613 ],
614 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
615 },
616 {
617 "begin": "(\\s*\\\\begin\\{((?:scalacode)\\*?)\\}(?:\\[.*\\])?(?:\\{.*\\})?)",
618 "captures": {
619 "1": {
620 "patterns": [
621 {
622 "include": "#begin-env-tokenizer"
623 }
624 ]
625 }
626 },
627 "contentName": "source.scala",
628 "patterns": [
629 {
630 "include": "source.scala"
631 }
632 ],
633 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
634 },
635 {
636 "begin": "(\\s*\\\\begin\\{((?:asy|asycode)\\*?)\\}(?:\\[.*\\])?(?:\\{.*\\})?)",
637 "captures": {
638 "1": {
639 "patterns": [
640 {
641 "include": "#begin-env-tokenizer"
642 }
643 ]
644 }
645 },
646 "contentName": "source.asymptote",
647 "patterns": [
648 {
649 "include": "source.asymptote"
650 }
651 ],
652 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
653 },
654 {
655 "begin": "(\\s*\\\\begin\\{((?:dot2tex|dotcode)\\*?)\\}(?:\\[.*\\])?(?:\\{.*\\})?)",
656 "captures": {
657 "1": {
658 "patterns": [
659 {
660 "include": "#begin-env-tokenizer"
661 }
662 ]
663 }
664 },
665 "contentName": "source.dot",
666 "patterns": [
667 {
668 "include": "source.dot"
669 }
670 ],
671 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
672 },
673 {
674 "begin": "(\\s*\\\\begin\\{((?:gnuplot)\\*?)\\}(?:\\[.*\\])?(?:\\{.*\\})?)",
675 "captures": {
676 "1": {
677 "patterns": [
678 {
679 "include": "#begin-env-tokenizer"
680 }
681 ]
682 }
683 },
684 "contentName": "source.gnuplot",
685 "patterns": [
686 {
687 "include": "source.gnuplot"
688 }
689 ],
690 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
691 },
692 {
693 "begin": "((?:\\s*)\\\\begin\\{([a-z]*code(?:\\*)?)\\}(?:\\[.*\\])?(?:\\{.*\\})?)",
694 "captures": {
695 "1": {
696 "patterns": [
697 {
698 "include": "#begin-env-tokenizer"
699 }
700 ]
701 }
702 },
703 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
704 },
705 {
706 "begin": "((\\\\)addplot)(?:\\+?)((?:\\[[^\\[]*\\]))*\\s*(gnuplot)\\s*((?:\\[[^\\[]*\\]))*\\s*(\\{)",
707 "captures": {
708 "1": {
709 "name": "support.function.be.latex"
710 },
711 "2": {
712 "name": "punctuation.definition.function.latex"
713 },
714 "3": {
715 "patterns": [
716 {
717 "include": "#optional-arg"
718 }
719 ]
720 },
721 "4": {
722 "name": "variable.parameter.function.latex"
723 },
724 "5": {
725 "patterns": [
726 {
727 "include": "#optional-arg"
728 }
729 ]
730 },
731 "6": {
732 "name": "punctuation.definition.arguments.begin.latex"
733 }
734 },
735 "patterns": [
736 {
737 "begin": "%",
738 "beginCaptures": {
739 "0": {
740 "name": "punctuation.definition.comment.latex"
741 }
742 },
743 "end": "$\\n?",
744 "name": "comment.line.percentage.latex"
745 },
746 {
747 "include": "source.gnuplot"
748 }
749 ],
750 "end": "\\s*(\\};)"
751 },
752 {
753 "begin": "(\\s*\\\\begin\\{((?:fboxv|boxedv|V|v|spv)erbatim\\*?)\\})",
754 "captures": {
755 "1": {
756 "patterns": [
757 {
758 "include": "#begin-env-tokenizer"
759 }
760 ]
761 }
762 },
763 "contentName": "markup.raw.verbatim.latex",
764 "end": "(\\\\end\\{\\2\\})",
765 "name": "meta.function.verbatim.latex"
766 },
767 {
768 "begin": "(\\s*\\\\begin\\{VerbatimOut\\}\\{[^\\}]*\\})",
769 "captures": {
770 "1": {
771 "patterns": [
772 {
773 "include": "#begin-env-tokenizer"
774 }
775 ]
776 }
777 },
778 "contentName": "markup.raw.verbatim.latex",
779 "end": "(\\\\end\\{\\VerbatimOut\\})",
780 "name": "meta.function.verbatim.latex"
781 },
782 {
783 "begin": "(\\s*\\\\begin\\{alltt\\})",
784 "captures": {
785 "1": {
786 "patterns": [
787 {
788 "include": "#begin-env-tokenizer"
789 }
790 ]
791 }
792 },
793 "contentName": "markup.raw.verbatim.latex",
794 "end": "(\\\\end\\{alltt\\})",
795 "name": "meta.function.alltt.latex",
796 "patterns": [
797 {
798 "captures": {
799 "1": {
800 "name": "punctuation.definition.function.latex"
801 }
802 },
803 "match": "(\\\\)[A-Za-z]+",
804 "name": "support.function.general.latex"
805 }
806 ]
807 },
808 {
809 "begin": "(\\s*\\\\begin\\{([Cc]omment)\\})",
810 "captures": {
811 "1": {
812 "patterns": [
813 {
814 "include": "#begin-env-tokenizer"
815 }
816 ]
817 }
818 },
819 "contentName": "punctuation.definition.comment.latex",
820 "end": "(\\\\end\\{\\2\\})",
821 "name": "meta.function.verbatim.latex"
822 },
823 {
824 "captures": {
825 "1": {
826 "name": "support.function.url.latex"
827 },
828 "2": {
829 "name": "punctuation.definition.function.latex"
830 },
831 "3": {
832 "name": "punctuation.definition.arguments.begin.latex"
833 },
834 "4": {
835 "name": "markup.underline.link.latex"
836 },
837 "5": {
838 "name": "punctuation.definition.arguments.end.latex"
839 }
840 },
841 "match": "(?:\\s*)((\\\\)(?:url|href))(\\{)([^}]*)(\\})",
842 "name": "meta.function.link.url.latex"
843 },
844 {
845 "comment": "These two patterns match the \\begin{document} and \\end{document} commands, so that the environment matching pattern following them will ignore those commands.",
846 "match": "(\\s*\\\\begin\\{document\\})",
847 "name": "meta.function.begin-document.latex",
848 "captures": {
849 "1": {
850 "patterns": [
851 {
852 "include": "#begin-env-tokenizer"
853 }
854 ]
855 }
856 }
857 },
858 {
859 "match": "(\\s*\\\\end\\{document\\})",
860 "name": "meta.function.end-document.latex",
861 "captures": {
862 "1": {
863 "patterns": [
864 {
865 "include": "#begin-env-tokenizer"
866 }
867 ]
868 }
869 }
870 },
871 {
872 "begin": "(?:\\s*)((\\\\)begin)(\\{)((?:array|equation|(?:IEEE)?eqnarray|multline|align|aligned|alignat|alignedat|flalign|flaligned|flalignat|split|gather|gathered|cases|(?:display)?math|[a-zA-Z]*matrix|[pbBvV]?NiceMatrix|[pbBvV]?NiceArray|(?:(?:arg)?(?:mini|maxi)))(?:\\*|!)?)(\\})(\\s*\\n)?",
873 "captures": {
874 "1": {
875 "name": "support.function.be.latex"
876 },
877 "2": {
878 "name": "punctuation.definition.function.latex"
879 },
880 "3": {
881 "name": "punctuation.definition.arguments.begin.latex"
882 },
883 "4": {
884 "name": "variable.parameter.function.latex"
885 },
886 "5": {
887 "name": "punctuation.definition.arguments.end.latex"
888 }
889 },
890 "contentName": "meta.math.block.latex support.class.math.block.environment.latex",
891 "end": "(?:\\s*)((\\\\)end)(\\{)(\\4)(\\})(?:\\s*\\n)?",
892 "name": "meta.function.environment.math.latex",
893 "patterns": [
894 {
895 "match": "(?<!\\\\)&",
896 "name": "keyword.control.equation.align.latex"
897 },
898 {
899 "match": "\\\\\\\\",
900 "name": "keyword.control.equation.newline.latex"
901 },
902 {
903 "include": "#definition-label"
904 },
905 {
906 "include": "text.tex#math"
907 },
908 {
909 "include": "$base"
910 }
911 ]
912 },
913 {
914 "begin": "(?:\\s*)(\\\\begin\\{empheq\\}(?:\\[.*\\])?)",
915 "captures": {
916 "1": {
917 "patterns": [
918 {
919 "include": "#begin-env-tokenizer"
920 }
921 ]
922 }
923 },
924 "contentName": "meta.math.block.latex support.class.math.block.environment.latex",
925 "end": "(?:\\s*)(\\\\end\\{empheq\\})",
926 "name": "meta.function.environment.math.latex",
927 "patterns": [
928 {
929 "match": "(?<!\\\\)&",
930 "name": "keyword.control.equation.align.latex"
931 },
932 {
933 "match": "\\\\\\\\",
934 "name": "keyword.control.equation.newline.latex"
935 },
936 {
937 "include": "#definition-label"
938 },
939 {
940 "include": "text.tex#math"
941 },
942 {
943 "include": "$base"
944 }
945 ]
946 },
947 {
948 "begin": "(\\s*\\\\begin\\{(tabular[xy*]?|xltabular|longtable|(?:long)?tabu|(?:long|tall)?tblr|NiceTabular[X*]?)\\}(\\s*\\n)?)",
949 "captures": {
950 "1": {
951 "patterns": [
952 {
953 "include": "#begin-env-tokenizer"
954 }
955 ]
956 }
957 },
958 "contentName": "meta.data.environment.tabular.latex",
959 "end": "(\\s*\\\\end\\{(\\2)\\}(?:\\s*\\n)?)",
960 "name": "meta.function.environment.tabular.latex",
961 "patterns": [
962 {
963 "match": "(?<!\\\\)&",
964 "name": "keyword.control.table.cell.latex"
965 },
966 {
967 "match": "\\\\\\\\",
968 "name": "keyword.control.table.newline.latex"
969 },
970 {
971 "include": "$base"
972 }
973 ]
974 },
975 {
976 "begin": "(\\s*\\\\begin\\{(itemize|enumerate|description|list)\\})",
977 "captures": {
978 "1": {
979 "patterns": [
980 {
981 "include": "#begin-env-tokenizer"
982 }
983 ]
984 }
985 },
986 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)",
987 "name": "meta.function.environment.list.latex",
988 "patterns": [
989 {
990 "include": "$base"
991 }
992 ]
993 },
994 {
995 "begin": "(\\s*\\\\begin\\{tikzpicture\\})",
996 "captures": {
997 "1": {
998 "patterns": [
999 {
1000 "include": "#begin-env-tokenizer"
1001 }
1002 ]
1003 }
1004 },
1005 "end": "(\\\\end\\{tikzpicture\\}(?:\\s*\\n)?)",
1006 "name": "meta.function.environment.latex.tikz",
1007 "patterns": [
1008 {
1009 "include": "$base"
1010 }
1011 ]
1012 },
1013 {
1014 "begin": "(\\s*\\\\begin\\{frame\\})",
1015 "captures": {
1016 "1": {
1017 "patterns": [
1018 {
1019 "include": "#begin-env-tokenizer"
1020 }
1021 ]
1022 }
1023 },
1024 "end": "(\\\\end\\{frame\\})",
1025 "name": "meta.function.environment.frame.latex",
1026 "patterns": [
1027 {
1028 "include": "$base"
1029 }
1030 ]
1031 },
1032 {
1033 "begin": "(\\s*\\\\begin\\{(mpost\\*?)\\})",
1034 "captures": {
1035 "1": {
1036 "patterns": [
1037 {
1038 "include": "#begin-env-tokenizer"
1039 }
1040 ]
1041 }
1042 },
1043 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)",
1044 "name": "meta.function.environment.latex.mpost"
1045 },
1046 {
1047 "begin": "(\\s*\\\\begin\\{markdown\\})",
1048 "captures": {
1049 "1": {
1050 "patterns": [
1051 {
1052 "include": "#begin-env-tokenizer"
1053 }
1054 ]
1055 }
1056 },
1057 "end": "(\\\\end\\{markdown\\})",
1058 "contentName": "meta.embedded.markdown_latex_combined",
1059 "patterns": [
1060 {
1061 "include": "text.tex.markdown_latex_combined"
1062 }
1063 ]
1064 },
1065 {
1066 "begin": "(\\s*\\\\begin\\{(\\w+\\*?)\\})",
1067 "captures": {
1068 "1": {
1069 "patterns": [
1070 {
1071 "include": "#begin-env-tokenizer"
1072 }
1073 ]
1074 }
1075 },
1076 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)",
1077 "name": "meta.function.environment.general.latex",
1078 "patterns": [
1079 {
1080 "include": "$base"
1081 }
1082 ]
1083 },
1084 {
1085 "captures": {
1086 "1": {
1087 "name": "storage.type.function.latex"
1088 },
1089 "2": {
1090 "name": "punctuation.definition.function.latex"
1091 },
1092 "3": {
1093 "name": "punctuation.definition.begin.latex"
1094 },
1095 "4": {
1096 "name": "support.function.general.latex"
1097 },
1098 "5": {
1099 "name": "punctuation.definition.function.latex"
1100 },
1101 "6": {
1102 "name": "punctuation.definition.end.latex"
1103 }
1104 },
1105 "match": "((\\\\)(?:newcommand|renewcommand|(?:re)?newrobustcmd|DeclareRobustCommand))\\*?({)((\\\\)[^}]*)(})"
1106 },
1107 {
1108 "begin": "((\\\\)marginpar)((?:\\[[^\\[]*?\\])*)(\\{)",
1109 "beginCaptures": {
1110 "1": {
1111 "name": "support.function.marginpar.latex"
1112 },
1113 "2": {
1114 "name": "punctuation.definition.function.latex"
1115 },
1116 "3": {
1117 "patterns": [
1118 {
1119 "include": "#optional-arg"
1120 }
1121 ]
1122 },
1123 "4": {
1124 "name": "punctuation.definition.marginpar.begin.latex"
1125 }
1126 },
1127 "contentName": "meta.paragraph.margin.latex",
1128 "end": "\\}",
1129 "endCaptures": {
1130 "0": {
1131 "name": "punctuation.definition.marginpar.end.latex"
1132 }
1133 },
1134 "patterns": [
1135 {
1136 "include": "text.tex#braces"
1137 },
1138 {
1139 "include": "$base"
1140 }
1141 ]
1142 },
1143 {
1144 "begin": "((\\\\)footnote)((?:\\[[^\\[]*?\\])*)(\\{)",
1145 "beginCaptures": {
1146 "1": {
1147 "name": "support.function.footnote.latex"
1148 },
1149 "2": {
1150 "name": "punctuation.definition.function.latex"
1151 },
1152 "3": {
1153 "patterns": [
1154 {
1155 "include": "#optional-arg"
1156 }
1157 ]
1158 },
1159 "4": {
1160 "name": "punctuation.definition.footnote.begin.latex"
1161 }
1162 },
1163 "contentName": "entity.name.footnote.latex",
1164 "end": "\\}",
1165 "endCaptures": {
1166 "0": {
1167 "name": "punctuation.definition.footnote.end.latex"
1168 }
1169 },
1170 "patterns": [
1171 {
1172 "include": "text.tex#braces"
1173 },
1174 {
1175 "include": "$base"
1176 }
1177 ]
1178 },
1179 {
1180 "begin": "((\\\\)emph)(\\{)",
1181 "beginCaptures": {
1182 "1": {
1183 "name": "support.function.emph.latex"
1184 },
1185 "2": {
1186 "name": "punctuation.definition.function.latex"
1187 },
1188 "3": {
1189 "name": "punctuation.definition.emph.begin.latex"
1190 }
1191 },
1192 "contentName": "markup.italic.emph.latex",
1193 "end": "\\}",
1194 "endCaptures": {
1195 "0": {
1196 "name": "punctuation.definition.emph.end.latex"
1197 }
1198 },
1199 "name": "meta.function.emph.latex",
1200 "patterns": [
1201 {
1202 "include": "text.tex#braces"
1203 },
1204 {
1205 "include": "$base"
1206 }
1207 ]
1208 },
1209 {
1210 "begin": "((\\\\)textit)(\\{)",
1211 "captures": {
1212 "1": {
1213 "name": "support.function.textit.latex"
1214 },
1215 "2": {
1216 "name": "punctuation.definition.function.latex"
1217 },
1218 "3": {
1219 "name": "punctuation.definition.textit.begin.latex"
1220 }
1221 },
1222 "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",
1223 "contentName": "markup.italic.textit.latex",
1224 "end": "\\}",
1225 "endCaptures": {
1226 "0": {
1227 "name": "punctuation.definition.textit.end.latex"
1228 }
1229 },
1230 "name": "meta.function.textit.latex",
1231 "patterns": [
1232 {
1233 "include": "text.tex#braces"
1234 },
1235 {
1236 "include": "$base"
1237 }
1238 ]
1239 },
1240 {
1241 "begin": "((\\\\)textbf)(\\{)",
1242 "captures": {
1243 "1": {
1244 "name": "support.function.textbf.latex"
1245 },
1246 "2": {
1247 "name": "punctuation.definition.function.latex"
1248 },
1249 "3": {
1250 "name": "punctuation.definition.textbf.begin.latex"
1251 }
1252 },
1253 "contentName": "markup.bold.textbf.latex",
1254 "end": "\\}",
1255 "endCaptures": {
1256 "0": {
1257 "name": "punctuation.definition.textbf.end.latex"
1258 }
1259 },
1260 "name": "meta.function.textbf.latex",
1261 "patterns": [
1262 {
1263 "include": "text.tex#braces"
1264 },
1265 {
1266 "include": "$base"
1267 }
1268 ]
1269 },
1270 {
1271 "begin": "((\\\\)texttt)(\\{)",
1272 "captures": {
1273 "1": {
1274 "name": "support.function.texttt.latex"
1275 },
1276 "2": {
1277 "name": "punctuation.definition.function.latex"
1278 },
1279 "3": {
1280 "name": "punctuation.definition.texttt.begin.latex"
1281 }
1282 },
1283 "contentName": "markup.raw.texttt.latex",
1284 "end": "\\}",
1285 "endCaptures": {
1286 "0": {
1287 "name": "punctuation.definition.texttt.end.latex"
1288 }
1289 },
1290 "name": "meta.function.texttt.latex",
1291 "patterns": [
1292 {
1293 "include": "text.tex#braces"
1294 },
1295 {
1296 "include": "$base"
1297 }
1298 ]
1299 },
1300 {
1301 "captures": {
1302 "0": {
1303 "name": "keyword.other.item.latex"
1304 },
1305 "1": {
1306 "name": "punctuation.definition.keyword.latex"
1307 }
1308 },
1309 "match": "(\\\\)item\\b",
1310 "name": "meta.scope.item.latex"
1311 },
1312 {
1313 "begin": "((\\\\)(?:[aA]uto|foot|full|no|short|[tT]ext|[pP]aren|[sS]mart)?[cC]ite(?:al)?(?:p|s|t|author|year(?:par)?|title)?[ANP]*\\*?)((?:(?:\\([^\\)]*\\)){0,2}(?:\\[[^\\]]*\\]){0,2}\\{[\\w:.]*\\})*)(?:([<\\[])[^\\]<>]*([>\\]]))?(?:(\\[)[^\\]]*(\\]))?(\\{)",
1314 "captures": {
1315 "1": {
1316 "name": "keyword.control.cite.latex"
1317 },
1318 "2": {
1319 "name": "punctuation.definition.keyword.latex"
1320 },
1321 "3": {
1322 "patterns": [
1323 {
1324 "include": "#autocites-arg"
1325 }
1326 ]
1327 },
1328 "4": {
1329 "name": "punctuation.definition.arguments.optional.begin.latex"
1330 },
1331 "5": {
1332 "name": "punctuation.definition.arguments.optional.end.latex"
1333 },
1334 "6": {
1335 "name": "punctuation.definition.arguments.optional.begin.latex"
1336 },
1337 "7": {
1338 "name": "punctuation.definition.arguments.optional.end.latex"
1339 },
1340 "8": {
1341 "name": "punctuation.definition.arguments.begin.latex"
1342 }
1343 },
1344 "end": "\\}",
1345 "endCaptures": {
1346 "0": {
1347 "name": "punctuation.definition.arguments.end.latex"
1348 }
1349 },
1350 "name": "meta.citation.latex",
1351 "patterns": [
1352 {
1353 "captures": {
1354 "1": {
1355 "name": "comment.line.percentage.tex"
1356 },
1357 "2": {
1358 "name": "punctuation.definition.comment.tex"
1359 }
1360 },
1361 "match": "((%).*)$"
1362 },
1363 {
1364 "match": "[\\w:.-]+",
1365 "name": "constant.other.reference.citation.latex"
1366 }
1367 ]
1368 },
1369 {
1370 "begin": "((\\\\)bibentry)(\\{)",
1371 "captures": {
1372 "1": {
1373 "name": "keyword.control.cite.latex"
1374 },
1375 "2": {
1376 "name": "punctuation.definition.keyword.latex"
1377 },
1378 "3": {
1379 "name": "punctuation.definition.arguments.begin.latex"
1380 }
1381 },
1382 "end": "\\}",
1383 "endCaptures": {
1384 "0": {
1385 "name": "punctuation.definition.arguments.end.latex"
1386 }
1387 },
1388 "name": "meta.citation.latex",
1389 "patterns": [
1390 {
1391 "match": "[\\w:.]+",
1392 "name": "constant.other.reference.citation.latex"
1393 }
1394 ]
1395 },
1396 {
1397 "begin": "((\\\\)(?:\\w*[rR]ef\\*?))(\\{)",
1398 "beginCaptures": {
1399 "1": {
1400 "name": "keyword.control.ref.latex"
1401 },
1402 "2": {
1403 "name": "punctuation.definition.keyword.latex"
1404 },
1405 "3": {
1406 "name": "punctuation.definition.arguments.begin.latex"
1407 }
1408 },
1409 "end": "\\}",
1410 "endCaptures": {
1411 "0": {
1412 "name": "punctuation.definition.arguments.end.latex"
1413 }
1414 },
1415 "name": "meta.reference.label.latex",
1416 "patterns": [
1417 {
1418 "match": "[a-zA-Z0-9\\.,:/*!^_-]",
1419 "name": "constant.other.reference.label.latex"
1420 }
1421 ]
1422 },
1423 {
1424 "include": "#definition-label"
1425 },
1426 {
1427 "begin": "((\\\\)(?:verb|Verb|spverb)\\*?)\\s*((\\\\)scantokens)(\\{)",
1428 "beginCaptures": {
1429 "1": {
1430 "name": "support.function.verb.latex"
1431 },
1432 "2": {
1433 "name": "punctuation.definition.function.latex"
1434 },
1435 "3": {
1436 "name": "support.function.verb.latex"
1437 },
1438 "4": {
1439 "name": "punctuation.definition.verb.latex"
1440 },
1441 "5": {
1442 "name": "punctuation.definition.begin.latex"
1443 }
1444 },
1445 "contentName": "markup.raw.verb.latex",
1446 "end": "(\\})",
1447 "endCaptures": {
1448 "1": {
1449 "name": "punctuation.definition.end.latex"
1450 }
1451 },
1452 "name": "meta.function.verb.latex",
1453 "patterns": [
1454 {
1455 "include": "$self"
1456 }
1457 ]
1458 },
1459 {
1460 "captures": {
1461 "1": {
1462 "name": "support.function.verb.latex"
1463 },
1464 "2": {
1465 "name": "punctuation.definition.function.latex"
1466 },
1467 "3": {
1468 "name": "punctuation.definition.verb.latex"
1469 },
1470 "4": {
1471 "name": "markup.raw.verb.latex"
1472 },
1473 "5": {
1474 "name": "punctuation.definition.verb.latex"
1475 }
1476 },
1477 "match": "((\\\\)(?:verb|Verb|spverb)\\*?)\\s*((?<=\\s)\\S|[^a-zA-Z])(.*?)(\\3|$)",
1478 "name": "meta.function.verb.latex"
1479 },
1480 {
1481 "captures": {
1482 "1": {
1483 "name": "support.function.verb.latex"
1484 },
1485 "2": {
1486 "name": "punctuation.definition.function.latex"
1487 },
1488 "3": {
1489 "patterns": [
1490 {
1491 "include": "#optional-arg"
1492 }
1493 ]
1494 },
1495 "4": {
1496 "name": "punctuation.definition.arguments.begin.latex"
1497 },
1498 "5": {
1499 "name": "punctuation.definition.arguments.end.latex"
1500 },
1501 "6": {
1502 "name": "punctuation.definition.verb.latex"
1503 },
1504 "7": {
1505 "name": "markup.raw.verb.latex"
1506 },
1507 "8": {
1508 "name": "punctuation.definition.verb.latex"
1509 },
1510 "9": {
1511 "name": "punctuation.definition.verb.latex"
1512 },
1513 "10": {
1514 "name": "markup.raw.verb.latex"
1515 },
1516 "11": {
1517 "name": "punctuation.definition.verb.latex"
1518 }
1519 },
1520 "match": "((\\\\)(?:mint|mintinline))((?:\\[[^\\[]*?\\])?)(\\{)[a-zA-Z]*(\\})(?:(?:([^a-zA-Z\\{])(.*?)(\\6))|(?:(\\{)(.*?)(\\})))",
1521 "name": "meta.function.verb.latex"
1522 },
1523 {
1524 "captures": {
1525 "1": {
1526 "name": "support.function.verb.latex"
1527 },
1528 "2": {
1529 "name": "punctuation.definition.function.latex"
1530 },
1531 "3": {
1532 "patterns": [
1533 {
1534 "include": "#optional-arg"
1535 }
1536 ]
1537 },
1538 "4": {
1539 "name": "punctuation.definition.verb.latex"
1540 },
1541 "5": {
1542 "name": "markup.raw.verb.latex"
1543 },
1544 "6": {
1545 "name": "punctuation.definition.verb.latex"
1546 },
1547 "7": {
1548 "name": "punctuation.definition.verb.latex"
1549 },
1550 "8": {
1551 "name": "markup.raw.verb.latex"
1552 },
1553 "9": {
1554 "name": "punctuation.definition.verb.latex"
1555 }
1556 },
1557 "match": "((\\\\)[a-z]+inline)((?:\\[[^\\[]*?\\])?)(?:(?:([^a-zA-Z\\{])(.*?)(\\4))|(?:(\\{)(.*?)(\\})))",
1558 "name": "meta.function.verb.latex"
1559 },
1560 {
1561 "captures": {
1562 "1": {
1563 "name": "support.function.verb.latex"
1564 },
1565 "2": {
1566 "name": "punctuation.definition.function.latex"
1567 },
1568 "3": {
1569 "patterns": [
1570 {
1571 "include": "#optional-arg"
1572 }
1573 ]
1574 },
1575 "4": {
1576 "name": "punctuation.definition.verb.latex"
1577 },
1578 "5": {
1579 "name": "source.python",
1580 "patterns": [
1581 {
1582 "include": "source.python"
1583 }
1584 ]
1585 },
1586 "6": {
1587 "name": "punctuation.definition.verb.latex"
1588 },
1589 "7": {
1590 "name": "punctuation.definition.verb.latex"
1591 },
1592 "8": {
1593 "name": "source.python",
1594 "patterns": [
1595 {
1596 "include": "source.python"
1597 }
1598 ]
1599 },
1600 "9": {
1601 "name": "punctuation.definition.verb.latex"
1602 }
1603 },
1604 "match": "((\\\\)(?:(?:py|pycon|pylab|pylabcon|sympy|sympycon)[cv]?|pyq|pycq|pyif))((?:\\[[^\\[]*?\\])?)(?:(?:([^a-zA-Z\\{])(.*?)(\\4))|(?:(\\{)(.*?)(\\})))",
1605 "name": "meta.function.verb.latex"
1606 },
1607 {
1608 "captures": {
1609 "1": {
1610 "name": "support.function.verb.latex"
1611 },
1612 "2": {
1613 "name": "punctuation.definition.function.latex"
1614 },
1615 "3": {
1616 "patterns": [
1617 {
1618 "include": "#optional-arg"
1619 }
1620 ]
1621 },
1622 "4": {
1623 "name": "punctuation.definition.verb.latex"
1624 },
1625 "5": {
1626 "name": "source.julia",
1627 "patterns": [
1628 {
1629 "include": "source.julia"
1630 }
1631 ]
1632 },
1633 "6": {
1634 "name": "punctuation.definition.verb.latex"
1635 },
1636 "7": {
1637 "name": "punctuation.definition.verb.latex"
1638 },
1639 "8": {
1640 "name": "source.julia",
1641 "patterns": [
1642 {
1643 "include": "source.julia"
1644 }
1645 ]
1646 },
1647 "9": {
1648 "name": "punctuation.definition.verb.latex"
1649 }
1650 },
1651 "match": "((\\\\)(?:jl|julia)[cv]?)((?:\\[[^\\[]*?\\])?)(?:(?:([^a-zA-Z\\{])(.*?)(\\4))|(?:(\\{)(.*?)(\\})))",
1652 "name": "meta.function.verb.latex"
1653 },
1654 {
1655 "match": "\\\\(?:newline|pagebreak|clearpage|linebreak|pause)(?:\\b)",
1656 "name": "keyword.control.layout.latex"
1657 },
1658 {
1659 "begin": "\\\\\\(",
1660 "beginCaptures": {
1661 "0": {
1662 "name": "punctuation.definition.string.begin.latex"
1663 }
1664 },
1665 "end": "\\\\\\)",
1666 "endCaptures": {
1667 "0": {
1668 "name": "punctuation.definition.string.end.latex"
1669 }
1670 },
1671 "name": "meta.math.block.latex support.class.math.block.environment.latex",
1672 "patterns": [
1673 {
1674 "include": "text.tex#math"
1675 },
1676 {
1677 "include": "$base"
1678 }
1679 ]
1680 },
1681 {
1682 "begin": "\\$\\$",
1683 "beginCaptures": {
1684 "0": {
1685 "name": "punctuation.definition.string.begin.latex"
1686 }
1687 },
1688 "end": "\\$\\$",
1689 "endCaptures": {
1690 "0": {
1691 "name": "punctuation.definition.string.end.latex"
1692 }
1693 },
1694 "name": "meta.math.block.latex support.class.math.block.environment.latex",
1695 "patterns": [
1696 {
1697 "match": "\\\\\\$",
1698 "name": "constant.character.escape.latex"
1699 },
1700 {
1701 "include": "text.tex#math"
1702 },
1703 {
1704 "include": "$base"
1705 }
1706 ]
1707 },
1708 {
1709 "begin": "\\$",
1710 "beginCaptures": {
1711 "0": {
1712 "name": "punctuation.definition.string.begin.tex"
1713 }
1714 },
1715 "end": "\\$",
1716 "endCaptures": {
1717 "0": {
1718 "name": "punctuation.definition.string.end.tex"
1719 }
1720 },
1721 "name": "meta.math.block.tex support.class.math.block.tex",
1722 "patterns": [
1723 {
1724 "match": "\\\\\\$",
1725 "name": "constant.character.escape.latex"
1726 },
1727 {
1728 "include": "text.tex#math"
1729 },
1730 {
1731 "include": "$base"
1732 }
1733 ]
1734 },
1735 {
1736 "begin": "\\\\\\[",
1737 "beginCaptures": {
1738 "0": {
1739 "name": "punctuation.definition.string.begin.latex"
1740 }
1741 },
1742 "end": "\\\\\\]",
1743 "endCaptures": {
1744 "0": {
1745 "name": "punctuation.definition.string.end.latex"
1746 }
1747 },
1748 "name": "meta.math.block.latex support.class.math.block.environment.latex",
1749 "patterns": [
1750 {
1751 "include": "text.tex#math"
1752 },
1753 {
1754 "include": "$base"
1755 }
1756 ]
1757 },
1758 {
1759 "captures": {
1760 "1": {
1761 "name": "punctuation.definition.constant.latex"
1762 }
1763 },
1764 "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",
1765 "name": "constant.character.latex"
1766 },
1767 {
1768 "captures": {
1769 "1": {
1770 "name": "punctuation.definition.column-specials.begin.latex"
1771 },
1772 "2": {
1773 "name": "punctuation.definition.column-specials.end.latex"
1774 }
1775 },
1776 "match": "(?:<|>)(\\{)\\$(\\})",
1777 "name": "meta.column-specials.latex"
1778 },
1779 {
1780 "include": "text.tex"
1781 }
1782 ],
1783 "repository": {
1784 "optional-arg": {
1785 "patterns": [
1786 {
1787 "captures": {
1788 "1": {
1789 "name": "punctuation.definition.optional.arguments.begin.latex"
1790 },
1791 "2": {
1792 "name": "variable.parameter.function.latex"
1793 },
1794 "3": {
1795 "name": "punctuation.definition.optional.arguments.end.latex"
1796 }
1797 },
1798 "match": "(\\[)([^\\[]*?)(\\])",
1799 "name": "meta.parameter.optional.latex"
1800 }
1801 ]
1802 },
1803 "autocites-arg": {
1804 "patterns": [
1805 {
1806 "captures": {
1807 "1": {
1808 "name": "punctuation.definition.arguments.optional.begin.latex"
1809 },
1810 "2": {
1811 "name": "punctuation.definition.arguments.optional.end.latex"
1812 },
1813 "3": {
1814 "name": "punctuation.definition.arguments.optional.begin.latex"
1815 },
1816 "4": {
1817 "name": "punctuation.definition.arguments.optional.end.latex"
1818 },
1819 "5": {
1820 "name": "punctuation.definition.arguments.begin.latex"
1821 },
1822 "6": {
1823 "name": "constant.other.reference.citation.latex"
1824 },
1825 "7": {
1826 "name": "punctuation.definition.arguments.end.latex"
1827 },
1828 "8": {
1829 "patterns": [
1830 {
1831 "include": "#autocites-arg"
1832 }
1833 ]
1834 }
1835 },
1836 "match": "(?:(\\()[^\\)]*(\\))){0,2}(?:(\\[)[^\\]]*(\\])){0,2}(\\{)([\\w:.]+)(\\})(.*)"
1837 }
1838 ]
1839 },
1840 "begin-env-tokenizer": {
1841 "captures": {
1842 "1": {
1843 "name": "support.function.be.latex"
1844 },
1845 "2": {
1846 "name": "punctuation.definition.function.latex"
1847 },
1848 "3": {
1849 "name": "punctuation.definition.arguments.begin.latex"
1850 },
1851 "4": {
1852 "name": "variable.parameter.function.latex"
1853 },
1854 "5": {
1855 "name": "punctuation.definition.arguments.end.latex"
1856 },
1857 "6": {
1858 "name": "punctuation.definition.arguments.optional.begin.latex"
1859 },
1860 "7": {
1861 "patterns": [
1862 {
1863 "include": "$base"
1864 }
1865 ]
1866 },
1867 "8": {
1868 "name": "punctuation.definition.arguments.optional.end.latex"
1869 },
1870 "9": {
1871 "name": "punctuation.definition.arguments.begin.latex"
1872 },
1873 "10": {
1874 "name": "variable.parameter.function.latex"
1875 },
1876 "11": {
1877 "name": "punctuation.definition.arguments.end.latex"
1878 }
1879 },
1880 "match": "\\s*((\\\\)(?:begin|end))(\\{)([a-zA-Z]*\\*?)(\\})(?:(\\[)(.*)(\\]))?(?:(\\{)([^{}]*)(\\}))?"
1881 },
1882 "definition-label": {
1883 "begin": "((\\\\)label)((?:\\[[^\\[]*?\\])*)(\\{)",
1884 "beginCaptures": {
1885 "1": {
1886 "name": "keyword.control.label.latex"
1887 },
1888 "2": {
1889 "name": "punctuation.definition.keyword.latex"
1890 },
1891 "3": {
1892 "patterns": [
1893 {
1894 "include": "#optional-arg"
1895 }
1896 ]
1897 },
1898 "4": {
1899 "name": "punctuation.definition.arguments.begin.latex"
1900 }
1901 },
1902 "end": "\\}",
1903 "endCaptures": {
1904 "0": {
1905 "name": "punctuation.definition.arguments.end.latex"
1906 }
1907 },
1908 "name": "meta.definition.label.latex",
1909 "patterns": [
1910 {
1911 "match": "[a-zA-Z0-9\\.,:/*!^_-]",
1912 "name": "variable.parameter.definition.label.latex"
1913 }
1914 ]
1915 }
1916 }
1917 }
1918