PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.27.6
Code Block Pro – Beautiful Syntax Highlighting v1.27.6
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.27.6, at build/shiki/languages/latex.tmLanguage.json

2,401 lines 64.4 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/e0f2c26cdc94a9439acc565215c7bdbf379afb1f",
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))\\b(?=\\[|\\{)",
18 "beginCaptures": {
19 "1": {
20 "name": "keyword.control.preamble.latex"
21 },
22 "2": {
23 "name": "punctuation.definition.function.latex"
24 }
25 },
26 "end": "(?<=\\})",
27 "endCaptures": {
28 "0": {
29 "name": "punctuation.definition.arguments.end.latex"
30 }
31 },
32 "name": "meta.preamble.latex",
33 "patterns": [
34 {
35 "include": "#multiline-optional-arg"
36 },
37 {
38 "begin": "((?:\\G|(?<=\\]))\\{)",
39 "beginCaptures": {
40 "0": {
41 "name": "punctuation.definition.arguments.begin.latex"
42 }
43 },
44 "end": "(\\})",
45 "endCaptures": {
46 "0": {
47 "name": "punctuation.definition.arguments.end.latex"
48 }
49 },
50 "contentName": "support.class.latex",
51 "patterns": [
52 {
53 "include": "$self"
54 }
55 ]
56 }
57 ]
58 },
59 {
60 "begin": "((\\\\)(?:include|input))(\\{)",
61 "beginCaptures": {
62 "1": {
63 "name": "keyword.control.include.latex"
64 },
65 "2": {
66 "name": "punctuation.definition.function.latex"
67 },
68 "3": {
69 "name": "punctuation.definition.arguments.begin.latex"
70 }
71 },
72 "end": "\\}",
73 "endCaptures": {
74 "0": {
75 "name": "punctuation.definition.arguments.end.latex"
76 }
77 },
78 "name": "meta.include.latex",
79 "patterns": [
80 {
81 "include": "$self"
82 }
83 ]
84 },
85 {
86 "begin": "((\\\\)((?:sub){0,2}section|(?:sub)?paragraph|chapter|part|addpart|addchap|addsec|minisec|frametitle)(?:\\*)?)((?:\\[[^\\[]*?\\]){0,2})(\\{)",
87 "beginCaptures": {
88 "1": {
89 "name": "support.function.section.latex"
90 },
91 "2": {
92 "name": "punctuation.definition.function.latex"
93 },
94 "4": {
95 "patterns": [
96 {
97 "include": "#optional-arg"
98 }
99 ]
100 },
101 "5": {
102 "name": "punctuation.definition.arguments.begin.latex"
103 }
104 },
105 "comment": "this works OK with all kinds of crazy stuff as long as section is one line",
106 "contentName": "entity.name.section.latex",
107 "end": "\\}",
108 "endCaptures": {
109 "0": {
110 "name": "punctuation.definition.arguments.end.latex"
111 }
112 },
113 "name": "meta.function.section.$3.latex",
114 "patterns": [
115 {
116 "include": "text.tex#braces"
117 },
118 {
119 "include": "$base"
120 }
121 ]
122 },
123 {
124 "name": "meta.function.environment.songs.latex",
125 "begin": "((?:\\s*)\\\\begin\\{songs\\}\\{.*\\})",
126 "end": "(\\\\end\\{songs\\}(?:\\s*\\n)?)",
127 "captures": {
128 "1": {
129 "patterns": [
130 {
131 "include": "#begin-env-tokenizer"
132 }
133 ]
134 }
135 },
136 "contentName": "meta.data.environment.songs.latex",
137 "patterns": [
138 {
139 "name": "meta.chord.block.latex support.class.chord.block.environment.latex",
140 "begin": "\\\\\\[",
141 "end": "\\]",
142 "patterns": [
143 {
144 "include": "$base"
145 }
146 ]
147 },
148 {
149 "name": "meta.chord.block.latex support.class.chord.block.environment.latex",
150 "match": "\\^"
151 },
152 {
153 "include": "$self"
154 }
155 ]
156 },
157 {
158 "begin": "(^\\s*)?\\\\begin\\{(lstlisting|minted|pyglist)\\}(?=\\[|\\{)",
159 "end": "\\\\end\\{(?:minted|lstlisting|pyglist)\\}",
160 "captures": {
161 "0": {
162 "patterns": [
163 {
164 "include": "#begin-env-tokenizer"
165 }
166 ]
167 }
168 },
169 "patterns": [
170 {
171 "include": "#multiline-optional-arg-no-highlight"
172 },
173 {
174 "begin": "(?:\\G|(?<=\\]))(\\{)((?:c|cpp))(\\})",
175 "beginCaptures": {
176 "1": {
177 "name": "punctuation.definition.arguments.begin.latex"
178 },
179 "2": {
180 "name": "variable.parameter.function.latex"
181 },
182 "3": {
183 "name": "punctuation.definition.arguments.end.latex"
184 }
185 },
186 "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
187 "contentName": "source.cpp.embedded.latex",
188 "patterns": [
189 {
190 "include": "source.cpp.embedded.latex"
191 }
192 ]
193 },
194 {
195 "begin": "(?:\\G|(?<=\\]))(\\{)((?:asy|asymptote))(\\})",
196 "beginCaptures": {
197 "1": {
198 "name": "punctuation.definition.arguments.begin.latex"
199 },
200 "2": {
201 "name": "variable.parameter.function.latex"
202 },
203 "3": {
204 "name": "punctuation.definition.arguments.end.latex"
205 }
206 },
207 "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
208 "contentName": "source.asy",
209 "patterns": [
210 {
211 "include": "source.asy"
212 }
213 ]
214 },
215 {
216 "begin": "(?:\\G|(?<=\\]))(\\{)((?:css))(\\})",
217 "beginCaptures": {
218 "1": {
219 "name": "punctuation.definition.arguments.begin.latex"
220 },
221 "2": {
222 "name": "variable.parameter.function.latex"
223 },
224 "3": {
225 "name": "punctuation.definition.arguments.end.latex"
226 }
227 },
228 "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
229 "contentName": "source.css",
230 "patterns": [
231 {
232 "include": "source.css"
233 }
234 ]
235 },
236 {
237 "begin": "(?:\\G|(?<=\\]))(\\{)((?:hs|haskell))(\\})",
238 "beginCaptures": {
239 "1": {
240 "name": "punctuation.definition.arguments.begin.latex"
241 },
242 "2": {
243 "name": "variable.parameter.function.latex"
244 },
245 "3": {
246 "name": "punctuation.definition.arguments.end.latex"
247 }
248 },
249 "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
250 "contentName": "source.haskell",
251 "patterns": [
252 {
253 "include": "source.haskell"
254 }
255 ]
256 },
257 {
258 "begin": "(?:\\G|(?<=\\]))(\\{)((?:html))(\\})",
259 "beginCaptures": {
260 "1": {
261 "name": "punctuation.definition.arguments.begin.latex"
262 },
263 "2": {
264 "name": "variable.parameter.function.latex"
265 },
266 "3": {
267 "name": "punctuation.definition.arguments.end.latex"
268 }
269 },
270 "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
271 "contentName": "text.html",
272 "patterns": [
273 {
274 "include": "text.html.basic"
275 }
276 ]
277 },
278 {
279 "begin": "(?:\\G|(?<=\\]))(\\{)((?:xml))(\\})",
280 "beginCaptures": {
281 "1": {
282 "name": "punctuation.definition.arguments.begin.latex"
283 },
284 "2": {
285 "name": "variable.parameter.function.latex"
286 },
287 "3": {
288 "name": "punctuation.definition.arguments.end.latex"
289 }
290 },
291 "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
292 "contentName": "text.xml",
293 "patterns": [
294 {
295 "include": "text.xml"
296 }
297 ]
298 },
299 {
300 "begin": "(?:\\G|(?<=\\]))(\\{)((?:java))(\\})",
301 "beginCaptures": {
302 "1": {
303 "name": "punctuation.definition.arguments.begin.latex"
304 },
305 "2": {
306 "name": "variable.parameter.function.latex"
307 },
308 "3": {
309 "name": "punctuation.definition.arguments.end.latex"
310 }
311 },
312 "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
313 "contentName": "source.java",
314 "patterns": [
315 {
316 "include": "source.java"
317 }
318 ]
319 },
320 {
321 "begin": "(?:\\G|(?<=\\]))(\\{)((?:lua))(\\})",
322 "beginCaptures": {
323 "1": {
324 "name": "punctuation.definition.arguments.begin.latex"
325 },
326 "2": {
327 "name": "variable.parameter.function.latex"
328 },
329 "3": {
330 "name": "punctuation.definition.arguments.end.latex"
331 }
332 },
333 "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
334 "contentName": "source.lua",
335 "patterns": [
336 {
337 "include": "source.lua"
338 }
339 ]
340 },
341 {
342 "begin": "(?:\\G|(?<=\\]))(\\{)((?:jl|julia))(\\})",
343 "beginCaptures": {
344 "1": {
345 "name": "punctuation.definition.arguments.begin.latex"
346 },
347 "2": {
348 "name": "variable.parameter.function.latex"
349 },
350 "3": {
351 "name": "punctuation.definition.arguments.end.latex"
352 }
353 },
354 "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
355 "contentName": "source.julia",
356 "patterns": [
357 {
358 "include": "source.julia"
359 }
360 ]
361 },
362 {
363 "begin": "(?:\\G|(?<=\\]))(\\{)((?:rb|ruby))(\\})",
364 "beginCaptures": {
365 "1": {
366 "name": "punctuation.definition.arguments.begin.latex"
367 },
368 "2": {
369 "name": "variable.parameter.function.latex"
370 },
371 "3": {
372 "name": "punctuation.definition.arguments.end.latex"
373 }
374 },
375 "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
376 "contentName": "source.ruby",
377 "patterns": [
378 {
379 "include": "source.ruby"
380 }
381 ]
382 },
383 {
384 "begin": "(?:\\G|(?<=\\]))(\\{)((?:js|javascript))(\\})",
385 "beginCaptures": {
386 "1": {
387 "name": "punctuation.definition.arguments.begin.latex"
388 },
389 "2": {
390 "name": "variable.parameter.function.latex"
391 },
392 "3": {
393 "name": "punctuation.definition.arguments.end.latex"
394 }
395 },
396 "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
397 "contentName": "source.js",
398 "patterns": [
399 {
400 "include": "source.js"
401 }
402 ]
403 },
404 {
405 "begin": "(?:\\G|(?<=\\]))(\\{)((?:ts|typescript))(\\})",
406 "beginCaptures": {
407 "1": {
408 "name": "punctuation.definition.arguments.begin.latex"
409 },
410 "2": {
411 "name": "variable.parameter.function.latex"
412 },
413 "3": {
414 "name": "punctuation.definition.arguments.end.latex"
415 }
416 },
417 "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
418 "contentName": "source.ts",
419 "patterns": [
420 {
421 "include": "source.ts"
422 }
423 ]
424 },
425 {
426 "begin": "(?:\\G|(?<=\\]))(\\{)((?:py|python))(\\})",
427 "beginCaptures": {
428 "1": {
429 "name": "punctuation.definition.arguments.begin.latex"
430 },
431 "2": {
432 "name": "variable.parameter.function.latex"
433 },
434 "3": {
435 "name": "punctuation.definition.arguments.end.latex"
436 }
437 },
438 "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
439 "contentName": "source.python",
440 "patterns": [
441 {
442 "include": "source.python"
443 }
444 ]
445 },
446 {
447 "begin": "(?:\\G|(?<=\\]))(\\{)((?:yaml))(\\})",
448 "beginCaptures": {
449 "1": {
450 "name": "punctuation.definition.arguments.begin.latex"
451 },
452 "2": {
453 "name": "variable.parameter.function.latex"
454 },
455 "3": {
456 "name": "punctuation.definition.arguments.end.latex"
457 }
458 },
459 "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
460 "contentName": "source.yaml",
461 "patterns": [
462 {
463 "include": "source.yaml"
464 }
465 ]
466 },
467 {
468 "begin": "(?:\\G|(?<=\\]))(\\{)((?:rust))(\\})",
469 "beginCaptures": {
470 "1": {
471 "name": "punctuation.definition.arguments.begin.latex"
472 },
473 "2": {
474 "name": "variable.parameter.function.latex"
475 },
476 "3": {
477 "name": "punctuation.definition.arguments.end.latex"
478 }
479 },
480 "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
481 "contentName": "source.rust",
482 "patterns": [
483 {
484 "include": "source.rust"
485 }
486 ]
487 },
488 {
489 "begin": "(?:\\G|(?<=\\]))(\\{)([a-zA-Z]*)(\\})",
490 "beginCaptures": {
491 "1": {
492 "name": "punctuation.definition.arguments.begin.latex"
493 },
494 "2": {
495 "name": "variable.parameter.function.latex"
496 },
497 "3": {
498 "name": "punctuation.definition.arguments.end.latex"
499 }
500 },
501 "contentName": "meta.function.embedded.latex",
502 "end": "^\\s*(?=\\\\end\\{(?:lstlisting|minted|pyglist)\\})",
503 "name": "meta.embedded.block.generic.latex"
504 }
505 ]
506 },
507 {
508 "begin": "\\s*\\\\begin\\{(?:cppcode)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
509 "end": "\\s*\\\\end\\{(?:cppcode)\\*?\\}",
510 "captures": {
511 "0": {
512 "patterns": [
513 {
514 "include": "#begin-env-tokenizer"
515 }
516 ]
517 }
518 },
519 "patterns": [
520 {
521 "include": "#multiline-optional-arg-no-highlight"
522 },
523 {
524 "begin": "(?:\\G|(?<=\\]))(\\{)",
525 "beginCaptures": {
526 "1": {
527 "name": "punctuation.definition.arguments.begin.latex"
528 }
529 },
530 "end": "(\\})",
531 "endCaptures": {
532 "1": {
533 "name": "punctuation.definition.arguments.end.latex"
534 }
535 },
536 "contentName": "variable.parameter.function.latex"
537 },
538 {
539 "begin": "^(?=\\s*)",
540 "end": "^\\s*(?=\\\\end\\{(?:cppcode)\\*?\\})",
541 "contentName": "source.cpp.embedded.latex",
542 "patterns": [
543 {
544 "include": "source.cpp.embedded.latex"
545 }
546 ]
547 }
548 ]
549 },
550 {
551 "begin": "\\s*\\\\begin\\{(?:hscode)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
552 "end": "\\s*\\\\end\\{(?:hscode)\\*?\\}",
553 "captures": {
554 "0": {
555 "patterns": [
556 {
557 "include": "#begin-env-tokenizer"
558 }
559 ]
560 }
561 },
562 "patterns": [
563 {
564 "include": "#multiline-optional-arg-no-highlight"
565 },
566 {
567 "begin": "(?:\\G|(?<=\\]))(\\{)",
568 "beginCaptures": {
569 "1": {
570 "name": "punctuation.definition.arguments.begin.latex"
571 }
572 },
573 "end": "(\\})",
574 "endCaptures": {
575 "1": {
576 "name": "punctuation.definition.arguments.end.latex"
577 }
578 },
579 "contentName": "variable.parameter.function.latex"
580 },
581 {
582 "begin": "^(?=\\s*)",
583 "end": "^\\s*(?=\\\\end\\{(?:hscode)\\*?\\})",
584 "contentName": "source.haskell",
585 "patterns": [
586 {
587 "include": "source.haskell"
588 }
589 ]
590 }
591 ]
592 },
593 {
594 "begin": "\\s*\\\\begin\\{(?:luacode)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
595 "end": "\\s*\\\\end\\{(?:luacode)\\*?\\}",
596 "captures": {
597 "0": {
598 "patterns": [
599 {
600 "include": "#begin-env-tokenizer"
601 }
602 ]
603 }
604 },
605 "patterns": [
606 {
607 "include": "#multiline-optional-arg-no-highlight"
608 },
609 {
610 "begin": "(?:\\G|(?<=\\]))(\\{)",
611 "beginCaptures": {
612 "1": {
613 "name": "punctuation.definition.arguments.begin.latex"
614 }
615 },
616 "end": "(\\})",
617 "endCaptures": {
618 "1": {
619 "name": "punctuation.definition.arguments.end.latex"
620 }
621 },
622 "contentName": "variable.parameter.function.latex"
623 },
624 {
625 "begin": "^(?=\\s*)",
626 "end": "^\\s*(?=\\\\end\\{(?:luacode)\\*?\\})",
627 "contentName": "source.lua",
628 "patterns": [
629 {
630 "include": "source.lua"
631 }
632 ]
633 }
634 ]
635 },
636 {
637 "begin": "\\s*\\\\begin\\{(?:jlcode|jlverbatim|jlblock|jlconcode|jlconsole|jlconverbatim)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
638 "end": "\\s*\\\\end\\{(?:jlcode|jlverbatim|jlblock|jlconcode|jlconsole|jlconverbatim)\\*?\\}",
639 "captures": {
640 "0": {
641 "patterns": [
642 {
643 "include": "#begin-env-tokenizer"
644 }
645 ]
646 }
647 },
648 "patterns": [
649 {
650 "include": "#multiline-optional-arg-no-highlight"
651 },
652 {
653 "begin": "(?:\\G|(?<=\\]))(\\{)",
654 "beginCaptures": {
655 "1": {
656 "name": "punctuation.definition.arguments.begin.latex"
657 }
658 },
659 "end": "(\\})",
660 "endCaptures": {
661 "1": {
662 "name": "punctuation.definition.arguments.end.latex"
663 }
664 },
665 "contentName": "variable.parameter.function.latex"
666 },
667 {
668 "begin": "^(?=\\s*)",
669 "end": "^\\s*(?=\\\\end\\{(?:jlcode|jlverbatim|jlblock|jlconcode|jlconsole|jlconverbatim)\\*?\\})",
670 "contentName": "source.julia",
671 "patterns": [
672 {
673 "include": "source.julia"
674 }
675 ]
676 }
677 ]
678 },
679 {
680 "begin": "\\s*\\\\begin\\{(?:juliacode|juliaverbatim|juliablock|juliaconcode|juliaconsole|juliaconverbatim)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
681 "end": "\\s*\\\\end\\{(?:juliacode|juliaverbatim|juliablock|juliaconcode|juliaconsole|juliaconverbatim)\\*?\\}",
682 "captures": {
683 "0": {
684 "patterns": [
685 {
686 "include": "#begin-env-tokenizer"
687 }
688 ]
689 }
690 },
691 "patterns": [
692 {
693 "include": "#multiline-optional-arg-no-highlight"
694 },
695 {
696 "begin": "(?:\\G|(?<=\\]))(\\{)",
697 "beginCaptures": {
698 "1": {
699 "name": "punctuation.definition.arguments.begin.latex"
700 }
701 },
702 "end": "(\\})",
703 "endCaptures": {
704 "1": {
705 "name": "punctuation.definition.arguments.end.latex"
706 }
707 },
708 "contentName": "variable.parameter.function.latex"
709 },
710 {
711 "begin": "^(?=\\s*)",
712 "end": "^\\s*(?=\\\\end\\{(?:juliacode|juliaverbatim|juliablock|juliaconcode|juliaconsole|juliaconverbatim)\\*?\\})",
713 "contentName": "source.julia",
714 "patterns": [
715 {
716 "include": "source.julia"
717 }
718 ]
719 }
720 ]
721 },
722 {
723 "begin": "\\s*\\\\begin\\{(?:sageblock|sagesilent|sageverbatim|sageexample|sagecommandline|python|pythonq|pythonrepl)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
724 "end": "\\s*\\\\end\\{(?:sageblock|sagesilent|sageverbatim|sageexample|sagecommandline|python|pythonq|pythonrepl)\\*?\\}",
725 "captures": {
726 "0": {
727 "patterns": [
728 {
729 "include": "#begin-env-tokenizer"
730 }
731 ]
732 }
733 },
734 "patterns": [
735 {
736 "include": "#multiline-optional-arg-no-highlight"
737 },
738 {
739 "begin": "(?:\\G|(?<=\\]))(\\{)",
740 "beginCaptures": {
741 "1": {
742 "name": "punctuation.definition.arguments.begin.latex"
743 }
744 },
745 "end": "(\\})",
746 "endCaptures": {
747 "1": {
748 "name": "punctuation.definition.arguments.end.latex"
749 }
750 },
751 "contentName": "variable.parameter.function.latex"
752 },
753 {
754 "begin": "^(?=\\s*)",
755 "end": "^\\s*(?=\\\\end\\{(?:sageblock|sagesilent|sageverbatim|sageexample|sagecommandline|python|pythonq|pythonrepl)\\*?\\})",
756 "contentName": "source.python",
757 "patterns": [
758 {
759 "include": "source.python"
760 }
761 ]
762 }
763 ]
764 },
765 {
766 "begin": "\\s*\\\\begin\\{(?:pycode|pyverbatim|pyblock|pyconcode|pyconsole|pyconverbatim)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
767 "end": "\\s*\\\\end\\{(?:pycode|pyverbatim|pyblock|pyconcode|pyconsole|pyconverbatim)\\*?\\}",
768 "captures": {
769 "0": {
770 "patterns": [
771 {
772 "include": "#begin-env-tokenizer"
773 }
774 ]
775 }
776 },
777 "patterns": [
778 {
779 "include": "#multiline-optional-arg-no-highlight"
780 },
781 {
782 "begin": "(?:\\G|(?<=\\]))(\\{)",
783 "beginCaptures": {
784 "1": {
785 "name": "punctuation.definition.arguments.begin.latex"
786 }
787 },
788 "end": "(\\})",
789 "endCaptures": {
790 "1": {
791 "name": "punctuation.definition.arguments.end.latex"
792 }
793 },
794 "contentName": "variable.parameter.function.latex"
795 },
796 {
797 "begin": "^(?=\\s*)",
798 "end": "^\\s*(?=\\\\end\\{(?:pycode|pyverbatim|pyblock|pyconcode|pyconsole|pyconverbatim)\\*?\\})",
799 "contentName": "source.python",
800 "patterns": [
801 {
802 "include": "source.python"
803 }
804 ]
805 }
806 ]
807 },
808 {
809 "begin": "\\s*\\\\begin\\{(?:pylabcode|pylabverbatim|pylabblock|pylabconcode|pylabconsole|pylabconverbatim)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
810 "end": "\\s*\\\\end\\{(?:pylabcode|pylabverbatim|pylabblock|pylabconcode|pylabconsole|pylabconverbatim)\\*?\\}",
811 "captures": {
812 "0": {
813 "patterns": [
814 {
815 "include": "#begin-env-tokenizer"
816 }
817 ]
818 }
819 },
820 "patterns": [
821 {
822 "include": "#multiline-optional-arg-no-highlight"
823 },
824 {
825 "begin": "(?:\\G|(?<=\\]))(\\{)",
826 "beginCaptures": {
827 "1": {
828 "name": "punctuation.definition.arguments.begin.latex"
829 }
830 },
831 "end": "(\\})",
832 "endCaptures": {
833 "1": {
834 "name": "punctuation.definition.arguments.end.latex"
835 }
836 },
837 "contentName": "variable.parameter.function.latex"
838 },
839 {
840 "begin": "^(?=\\s*)",
841 "end": "^\\s*(?=\\\\end\\{(?:pylabcode|pylabverbatim|pylabblock|pylabconcode|pylabconsole|pylabconverbatim)\\*?\\})",
842 "contentName": "source.python",
843 "patterns": [
844 {
845 "include": "source.python"
846 }
847 ]
848 }
849 ]
850 },
851 {
852 "begin": "\\s*\\\\begin\\{(?:sympycode|sympyverbatim|sympyblock|sympyconcode|sympyconsole|sympyconverbatim)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
853 "end": "\\s*\\\\end\\{(?:sympycode|sympyverbatim|sympyblock|sympyconcode|sympyconsole|sympyconverbatim)\\*?\\}",
854 "captures": {
855 "0": {
856 "patterns": [
857 {
858 "include": "#begin-env-tokenizer"
859 }
860 ]
861 }
862 },
863 "patterns": [
864 {
865 "include": "#multiline-optional-arg-no-highlight"
866 },
867 {
868 "begin": "(?:\\G|(?<=\\]))(\\{)",
869 "beginCaptures": {
870 "1": {
871 "name": "punctuation.definition.arguments.begin.latex"
872 }
873 },
874 "end": "(\\})",
875 "endCaptures": {
876 "1": {
877 "name": "punctuation.definition.arguments.end.latex"
878 }
879 },
880 "contentName": "variable.parameter.function.latex"
881 },
882 {
883 "begin": "^(?=\\s*)",
884 "end": "^\\s*(?=\\\\end\\{(?:sympycode|sympyverbatim|sympyblock|sympyconcode|sympyconsole|sympyconverbatim)\\*?\\})",
885 "contentName": "source.python",
886 "patterns": [
887 {
888 "include": "source.python"
889 }
890 ]
891 }
892 ]
893 },
894 {
895 "begin": "\\s*\\\\begin\\{(?:scalacode)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
896 "end": "\\s*\\\\end\\{(?:scalacode)\\*?\\}",
897 "captures": {
898 "0": {
899 "patterns": [
900 {
901 "include": "#begin-env-tokenizer"
902 }
903 ]
904 }
905 },
906 "patterns": [
907 {
908 "include": "#multiline-optional-arg-no-highlight"
909 },
910 {
911 "begin": "(?:\\G|(?<=\\]))(\\{)",
912 "beginCaptures": {
913 "1": {
914 "name": "punctuation.definition.arguments.begin.latex"
915 }
916 },
917 "end": "(\\})",
918 "endCaptures": {
919 "1": {
920 "name": "punctuation.definition.arguments.end.latex"
921 }
922 },
923 "contentName": "variable.parameter.function.latex"
924 },
925 {
926 "begin": "^(?=\\s*)",
927 "end": "^\\s*(?=\\\\end\\{(?:scalacode)\\*?\\})",
928 "contentName": "source.scala",
929 "patterns": [
930 {
931 "include": "source.scala"
932 }
933 ]
934 }
935 ]
936 },
937 {
938 "begin": "\\s*\\\\begin\\{(?:asy|asycode)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
939 "end": "\\s*\\\\end\\{(?:asy|asycode)\\*?\\}",
940 "captures": {
941 "0": {
942 "patterns": [
943 {
944 "include": "#begin-env-tokenizer"
945 }
946 ]
947 }
948 },
949 "patterns": [
950 {
951 "include": "#multiline-optional-arg-no-highlight"
952 },
953 {
954 "begin": "(?:\\G|(?<=\\]))(\\{)",
955 "beginCaptures": {
956 "1": {
957 "name": "punctuation.definition.arguments.begin.latex"
958 }
959 },
960 "end": "(\\})",
961 "endCaptures": {
962 "1": {
963 "name": "punctuation.definition.arguments.end.latex"
964 }
965 },
966 "contentName": "variable.parameter.function.latex"
967 },
968 {
969 "begin": "^(?=\\s*)",
970 "end": "^\\s*(?=\\\\end\\{(?:asy|asycode)\\*?\\})",
971 "contentName": "source.asymptote",
972 "patterns": [
973 {
974 "include": "source.asymptote"
975 }
976 ]
977 }
978 ]
979 },
980 {
981 "begin": "\\s*\\\\begin\\{(?:dot2tex|dotcode)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
982 "end": "\\s*\\\\end\\{(?:dot2tex|dotcode)\\*?\\}",
983 "captures": {
984 "0": {
985 "patterns": [
986 {
987 "include": "#begin-env-tokenizer"
988 }
989 ]
990 }
991 },
992 "patterns": [
993 {
994 "include": "#multiline-optional-arg-no-highlight"
995 },
996 {
997 "begin": "(?:\\G|(?<=\\]))(\\{)",
998 "beginCaptures": {
999 "1": {
1000 "name": "punctuation.definition.arguments.begin.latex"
1001 }
1002 },
1003 "end": "(\\})",
1004 "endCaptures": {
1005 "1": {
1006 "name": "punctuation.definition.arguments.end.latex"
1007 }
1008 },
1009 "contentName": "variable.parameter.function.latex"
1010 },
1011 {
1012 "begin": "^(?=\\s*)",
1013 "end": "^\\s*(?=\\\\end\\{(?:dot2tex|dotcode)\\*?\\})",
1014 "contentName": "source.dot",
1015 "patterns": [
1016 {
1017 "include": "source.dot"
1018 }
1019 ]
1020 }
1021 ]
1022 },
1023 {
1024 "begin": "\\s*\\\\begin\\{(?:gnuplot)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
1025 "end": "\\s*\\\\end\\{(?:gnuplot)\\*?\\}",
1026 "captures": {
1027 "0": {
1028 "patterns": [
1029 {
1030 "include": "#begin-env-tokenizer"
1031 }
1032 ]
1033 }
1034 },
1035 "patterns": [
1036 {
1037 "include": "#multiline-optional-arg-no-highlight"
1038 },
1039 {
1040 "begin": "(?:\\G|(?<=\\]))(\\{)",
1041 "beginCaptures": {
1042 "1": {
1043 "name": "punctuation.definition.arguments.begin.latex"
1044 }
1045 },
1046 "end": "(\\})",
1047 "endCaptures": {
1048 "1": {
1049 "name": "punctuation.definition.arguments.end.latex"
1050 }
1051 },
1052 "contentName": "variable.parameter.function.latex"
1053 },
1054 {
1055 "begin": "^(?=\\s*)",
1056 "end": "^\\s*(?=\\\\end\\{(?:gnuplot)\\*?\\})",
1057 "contentName": "source.gnuplot",
1058 "patterns": [
1059 {
1060 "include": "source.gnuplot"
1061 }
1062 ]
1063 }
1064 ]
1065 },
1066 {
1067 "begin": "((?:\\s*)\\\\begin\\{([a-zA-Z]*code|lstlisting|minted|pyglist)(?:\\*)?\\}(?:\\[.*\\])?(?:\\{.*\\})?)",
1068 "captures": {
1069 "1": {
1070 "patterns": [
1071 {
1072 "include": "#begin-env-tokenizer"
1073 }
1074 ]
1075 }
1076 },
1077 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)",
1078 "contentName": "meta.function.embedded.latex",
1079 "name": "meta.embedded.block.generic.latex"
1080 },
1081 {
1082 "begin": "((\\\\)addplot)(?:\\+?)((?:\\[[^\\[]*\\]))*\\s*(gnuplot)\\s*((?:\\[[^\\[]*\\]))*\\s*(\\{)",
1083 "captures": {
1084 "1": {
1085 "name": "support.function.be.latex"
1086 },
1087 "2": {
1088 "name": "punctuation.definition.function.latex"
1089 },
1090 "3": {
1091 "patterns": [
1092 {
1093 "include": "#optional-arg"
1094 }
1095 ]
1096 },
1097 "4": {
1098 "name": "variable.parameter.function.latex"
1099 },
1100 "5": {
1101 "patterns": [
1102 {
1103 "include": "#optional-arg"
1104 }
1105 ]
1106 },
1107 "6": {
1108 "name": "punctuation.definition.arguments.begin.latex"
1109 }
1110 },
1111 "patterns": [
1112 {
1113 "begin": "%",
1114 "beginCaptures": {
1115 "0": {
1116 "name": "punctuation.definition.comment.latex"
1117 }
1118 },
1119 "end": "$\\n?",
1120 "name": "comment.line.percentage.latex"
1121 },
1122 {
1123 "include": "source.gnuplot"
1124 }
1125 ],
1126 "end": "\\s*(\\};)"
1127 },
1128 {
1129 "begin": "(\\s*\\\\begin\\{((?:fboxv|boxedv|V|v|spv)erbatim\\*?)\\})",
1130 "captures": {
1131 "1": {
1132 "patterns": [
1133 {
1134 "include": "#begin-env-tokenizer"
1135 }
1136 ]
1137 }
1138 },
1139 "contentName": "markup.raw.verbatim.latex",
1140 "end": "(\\\\end\\{\\2\\})",
1141 "name": "meta.function.verbatim.latex"
1142 },
1143 {
1144 "begin": "(\\s*\\\\begin\\{VerbatimOut\\}\\{[^\\}]*\\})",
1145 "captures": {
1146 "1": {
1147 "patterns": [
1148 {
1149 "include": "#begin-env-tokenizer"
1150 }
1151 ]
1152 }
1153 },
1154 "contentName": "markup.raw.verbatim.latex",
1155 "end": "(\\\\end\\{\\VerbatimOut\\})",
1156 "name": "meta.function.verbatim.latex"
1157 },
1158 {
1159 "begin": "(\\s*\\\\begin\\{alltt\\})",
1160 "captures": {
1161 "1": {
1162 "patterns": [
1163 {
1164 "include": "#begin-env-tokenizer"
1165 }
1166 ]
1167 }
1168 },
1169 "contentName": "markup.raw.verbatim.latex",
1170 "end": "(\\\\end\\{alltt\\})",
1171 "name": "meta.function.alltt.latex",
1172 "patterns": [
1173 {
1174 "captures": {
1175 "1": {
1176 "name": "punctuation.definition.function.latex"
1177 }
1178 },
1179 "match": "(\\\\)[A-Za-z]+",
1180 "name": "support.function.general.latex"
1181 }
1182 ]
1183 },
1184 {
1185 "begin": "(\\s*\\\\begin\\{([Cc]omment)\\})",
1186 "captures": {
1187 "1": {
1188 "patterns": [
1189 {
1190 "include": "#begin-env-tokenizer"
1191 }
1192 ]
1193 }
1194 },
1195 "contentName": "punctuation.definition.comment.latex",
1196 "end": "(\\\\end\\{\\2\\})",
1197 "name": "meta.function.verbatim.latex"
1198 },
1199 {
1200 "comment": "Captures \\command[option]{url}{optional category}{optional name}{text}",
1201 "begin": "(?:\\s*)((\\\\)(?:href|hyperref|hyperimage))(?=\\[|\\{)",
1202 "beginCaptures": {
1203 "1": {
1204 "name": "support.function.url.latex"
1205 }
1206 },
1207 "end": "(\\})",
1208 "endCaptures": {
1209 "1": {
1210 "name": "punctuation.definition.arguments.end.latex"
1211 }
1212 },
1213 "name": "meta.function.hyperlink.latex",
1214 "patterns": [
1215 {
1216 "include": "#multiline-optional-arg-no-highlight"
1217 },
1218 {
1219 "begin": "(?:\\G|(?<=\\]))(\\{)([^}]*)(\\})(?:\\{[^}]*\\}){2}?(\\{)",
1220 "beginCaptures": {
1221 "1": {
1222 "name": "punctuation.definition.arguments.begin.latex"
1223 },
1224 "2": {
1225 "name": "markup.underline.link.latex"
1226 },
1227 "3": {
1228 "name": "punctuation.definition.arguments.end.latex"
1229 },
1230 "4": {
1231 "name": "punctuation.definition.arguments.begin.latex"
1232 }
1233 },
1234 "end": "(?=\\})",
1235 "patterns": [
1236 {
1237 "include": "$base"
1238 }
1239 ],
1240 "contentName": "meta.variable.parameter.function.latex"
1241 },
1242 {
1243 "begin": "(?:\\G|(?<=\\]))(?:(\\{)[^}]*(\\}))?(\\{)",
1244 "beginCaptures": {
1245 "1": {
1246 "name": "punctuation.definition.arguments.begin.latex"
1247 },
1248 "2": {
1249 "name": "punctuation.definition.arguments.end.latex"
1250 },
1251 "3": {
1252 "name": "punctuation.definition.arguments.begin.latex"
1253 }
1254 },
1255 "end": "(?=\\})",
1256 "patterns": [
1257 {
1258 "include": "$base"
1259 }
1260 ],
1261 "contentName": "meta.variable.parameter.function.latex"
1262 }
1263 ]
1264 },
1265 {
1266 "match": "(?:\\s*)((\\\\)url)(\\{)([^}]*)(\\})",
1267 "name": "meta.function.link.url.latex",
1268 "captures": {
1269 "1": {
1270 "name": "support.function.url.latex"
1271 },
1272 "2": {
1273 "name": "punctuation.definition.function.latex"
1274 },
1275 "3": {
1276 "name": "punctuation.definition.arguments.begin.latex"
1277 },
1278 "5": {
1279 "name": "punctuation.definition.arguments.end.latex"
1280 },
1281 "'": {
1282 "name": "markup.underline.link.latex"
1283 }
1284 }
1285 },
1286 {
1287 "comment": "These two patterns match the \\begin{document} and \\end{document} commands, so that the environment matching pattern following them will ignore those commands.",
1288 "match": "(\\s*\\\\begin\\{document\\})",
1289 "name": "meta.function.begin-document.latex",
1290 "captures": {
1291 "1": {
1292 "patterns": [
1293 {
1294 "include": "#begin-env-tokenizer"
1295 }
1296 ]
1297 }
1298 }
1299 },
1300 {
1301 "match": "(\\s*\\\\end\\{document\\})",
1302 "name": "meta.function.end-document.latex",
1303 "captures": {
1304 "1": {
1305 "patterns": [
1306 {
1307 "include": "#begin-env-tokenizer"
1308 }
1309 ]
1310 }
1311 }
1312 },
1313 {
1314 "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)?",
1315 "captures": {
1316 "1": {
1317 "name": "support.function.be.latex"
1318 },
1319 "2": {
1320 "name": "punctuation.definition.function.latex"
1321 },
1322 "3": {
1323 "name": "punctuation.definition.arguments.begin.latex"
1324 },
1325 "4": {
1326 "name": "variable.parameter.function.latex"
1327 },
1328 "5": {
1329 "name": "punctuation.definition.arguments.end.latex"
1330 }
1331 },
1332 "contentName": "meta.math.block.latex support.class.math.block.environment.latex",
1333 "end": "(?:\\s*)((\\\\)end)(\\{)(\\4)(\\})(?:\\s*\\n)?",
1334 "name": "meta.function.environment.math.latex",
1335 "patterns": [
1336 {
1337 "match": "(?<!\\\\)&",
1338 "name": "keyword.control.equation.align.latex"
1339 },
1340 {
1341 "match": "\\\\\\\\",
1342 "name": "keyword.control.equation.newline.latex"
1343 },
1344 {
1345 "include": "#definition-label"
1346 },
1347 {
1348 "include": "text.tex#math"
1349 },
1350 {
1351 "include": "$base"
1352 }
1353 ]
1354 },
1355 {
1356 "begin": "(?:\\s*)(\\\\begin\\{empheq\\}(?:\\[.*\\])?)",
1357 "captures": {
1358 "1": {
1359 "patterns": [
1360 {
1361 "include": "#begin-env-tokenizer"
1362 }
1363 ]
1364 }
1365 },
1366 "contentName": "meta.math.block.latex support.class.math.block.environment.latex",
1367 "end": "(?:\\s*)(\\\\end\\{empheq\\})",
1368 "name": "meta.function.environment.math.latex",
1369 "patterns": [
1370 {
1371 "match": "(?<!\\\\)&",
1372 "name": "keyword.control.equation.align.latex"
1373 },
1374 {
1375 "match": "\\\\\\\\",
1376 "name": "keyword.control.equation.newline.latex"
1377 },
1378 {
1379 "include": "#definition-label"
1380 },
1381 {
1382 "include": "text.tex#math"
1383 },
1384 {
1385 "include": "$base"
1386 }
1387 ]
1388 },
1389 {
1390 "begin": "(\\s*\\\\begin\\{(tabular[xy*]?|xltabular|longtable|(?:long)?tabu|(?:long|tall)?tblr|NiceTabular[X*]?|booktabs)\\}(\\s*\\n)?)",
1391 "captures": {
1392 "1": {
1393 "patterns": [
1394 {
1395 "include": "#begin-env-tokenizer"
1396 }
1397 ]
1398 }
1399 },
1400 "contentName": "meta.data.environment.tabular.latex",
1401 "end": "(\\s*\\\\end\\{(\\2)\\}(?:\\s*\\n)?)",
1402 "name": "meta.function.environment.tabular.latex",
1403 "patterns": [
1404 {
1405 "match": "(?<!\\\\)&",
1406 "name": "keyword.control.table.cell.latex"
1407 },
1408 {
1409 "match": "\\\\\\\\",
1410 "name": "keyword.control.table.newline.latex"
1411 },
1412 {
1413 "include": "$base"
1414 }
1415 ]
1416 },
1417 {
1418 "begin": "(\\s*\\\\begin\\{(itemize|enumerate|description|list)\\})",
1419 "captures": {
1420 "1": {
1421 "patterns": [
1422 {
1423 "include": "#begin-env-tokenizer"
1424 }
1425 ]
1426 }
1427 },
1428 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)",
1429 "name": "meta.function.environment.list.latex",
1430 "patterns": [
1431 {
1432 "include": "$base"
1433 }
1434 ]
1435 },
1436 {
1437 "begin": "(\\s*\\\\begin\\{tikzpicture\\})",
1438 "captures": {
1439 "1": {
1440 "patterns": [
1441 {
1442 "include": "#begin-env-tokenizer"
1443 }
1444 ]
1445 }
1446 },
1447 "end": "(\\\\end\\{tikzpicture\\}(?:\\s*\\n)?)",
1448 "name": "meta.function.environment.latex.tikz",
1449 "patterns": [
1450 {
1451 "include": "$base"
1452 }
1453 ]
1454 },
1455 {
1456 "begin": "(\\s*\\\\begin\\{frame\\})",
1457 "captures": {
1458 "1": {
1459 "patterns": [
1460 {
1461 "include": "#begin-env-tokenizer"
1462 }
1463 ]
1464 }
1465 },
1466 "end": "(\\\\end\\{frame\\})",
1467 "name": "meta.function.environment.frame.latex",
1468 "patterns": [
1469 {
1470 "include": "$base"
1471 }
1472 ]
1473 },
1474 {
1475 "begin": "(\\s*\\\\begin\\{(mpost\\*?)\\})",
1476 "captures": {
1477 "1": {
1478 "patterns": [
1479 {
1480 "include": "#begin-env-tokenizer"
1481 }
1482 ]
1483 }
1484 },
1485 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)",
1486 "name": "meta.function.environment.latex.mpost"
1487 },
1488 {
1489 "begin": "(\\s*\\\\begin\\{markdown\\})",
1490 "captures": {
1491 "1": {
1492 "patterns": [
1493 {
1494 "include": "#begin-env-tokenizer"
1495 }
1496 ]
1497 }
1498 },
1499 "end": "(\\\\end\\{markdown\\})",
1500 "contentName": "meta.embedded.markdown_latex_combined",
1501 "patterns": [
1502 {
1503 "include": "text.tex.markdown_latex_combined"
1504 }
1505 ]
1506 },
1507 {
1508 "begin": "(\\s*\\\\begin\\{(\\w+\\*?)\\})",
1509 "captures": {
1510 "1": {
1511 "patterns": [
1512 {
1513 "include": "#begin-env-tokenizer"
1514 }
1515 ]
1516 }
1517 },
1518 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)",
1519 "name": "meta.function.environment.general.latex",
1520 "patterns": [
1521 {
1522 "include": "$base"
1523 }
1524 ]
1525 },
1526 {
1527 "captures": {
1528 "1": {
1529 "name": "storage.type.function.latex"
1530 },
1531 "2": {
1532 "name": "punctuation.definition.function.latex"
1533 },
1534 "3": {
1535 "name": "punctuation.definition.begin.latex"
1536 },
1537 "4": {
1538 "name": "support.function.general.latex"
1539 },
1540 "5": {
1541 "name": "punctuation.definition.function.latex"
1542 },
1543 "6": {
1544 "name": "punctuation.definition.end.latex"
1545 }
1546 },
1547 "match": "((\\\\)(?:newcommand|renewcommand|(?:re)?newrobustcmd|DeclareRobustCommand))\\*?({)((\\\\)[^}]*)(})"
1548 },
1549 {
1550 "begin": "((\\\\)marginpar)((?:\\[[^\\[]*?\\])*)(\\{)",
1551 "beginCaptures": {
1552 "1": {
1553 "name": "support.function.marginpar.latex"
1554 },
1555 "2": {
1556 "name": "punctuation.definition.function.latex"
1557 },
1558 "3": {
1559 "patterns": [
1560 {
1561 "include": "#optional-arg"
1562 }
1563 ]
1564 },
1565 "4": {
1566 "name": "punctuation.definition.marginpar.begin.latex"
1567 }
1568 },
1569 "contentName": "meta.paragraph.margin.latex",
1570 "end": "\\}",
1571 "endCaptures": {
1572 "0": {
1573 "name": "punctuation.definition.marginpar.end.latex"
1574 }
1575 },
1576 "patterns": [
1577 {
1578 "include": "text.tex#braces"
1579 },
1580 {
1581 "include": "$base"
1582 }
1583 ]
1584 },
1585 {
1586 "begin": "((\\\\)footnote)((?:\\[[^\\[]*?\\])*)(\\{)",
1587 "beginCaptures": {
1588 "1": {
1589 "name": "support.function.footnote.latex"
1590 },
1591 "2": {
1592 "name": "punctuation.definition.function.latex"
1593 },
1594 "3": {
1595 "patterns": [
1596 {
1597 "include": "#optional-arg"
1598 }
1599 ]
1600 },
1601 "4": {
1602 "name": "punctuation.definition.footnote.begin.latex"
1603 }
1604 },
1605 "contentName": "entity.name.footnote.latex",
1606 "end": "\\}",
1607 "endCaptures": {
1608 "0": {
1609 "name": "punctuation.definition.footnote.end.latex"
1610 }
1611 },
1612 "patterns": [
1613 {
1614 "include": "text.tex#braces"
1615 },
1616 {
1617 "include": "$base"
1618 }
1619 ]
1620 },
1621 {
1622 "begin": "((\\\\)emph)(\\{)",
1623 "beginCaptures": {
1624 "1": {
1625 "name": "support.function.emph.latex"
1626 },
1627 "2": {
1628 "name": "punctuation.definition.function.latex"
1629 },
1630 "3": {
1631 "name": "punctuation.definition.emph.begin.latex"
1632 }
1633 },
1634 "contentName": "markup.italic.emph.latex",
1635 "end": "\\}",
1636 "endCaptures": {
1637 "0": {
1638 "name": "punctuation.definition.emph.end.latex"
1639 }
1640 },
1641 "name": "meta.function.emph.latex",
1642 "patterns": [
1643 {
1644 "include": "text.tex#braces"
1645 },
1646 {
1647 "include": "$base"
1648 }
1649 ]
1650 },
1651 {
1652 "begin": "((\\\\)textit)(\\{)",
1653 "captures": {
1654 "1": {
1655 "name": "support.function.textit.latex"
1656 },
1657 "2": {
1658 "name": "punctuation.definition.function.latex"
1659 },
1660 "3": {
1661 "name": "punctuation.definition.textit.begin.latex"
1662 }
1663 },
1664 "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",
1665 "contentName": "markup.italic.textit.latex",
1666 "end": "\\}",
1667 "endCaptures": {
1668 "0": {
1669 "name": "punctuation.definition.textit.end.latex"
1670 }
1671 },
1672 "name": "meta.function.textit.latex",
1673 "patterns": [
1674 {
1675 "include": "text.tex#braces"
1676 },
1677 {
1678 "include": "$base"
1679 }
1680 ]
1681 },
1682 {
1683 "begin": "((\\\\)textbf)(\\{)",
1684 "captures": {
1685 "1": {
1686 "name": "support.function.textbf.latex"
1687 },
1688 "2": {
1689 "name": "punctuation.definition.function.latex"
1690 },
1691 "3": {
1692 "name": "punctuation.definition.textbf.begin.latex"
1693 }
1694 },
1695 "contentName": "markup.bold.textbf.latex",
1696 "end": "\\}",
1697 "endCaptures": {
1698 "0": {
1699 "name": "punctuation.definition.textbf.end.latex"
1700 }
1701 },
1702 "name": "meta.function.textbf.latex",
1703 "patterns": [
1704 {
1705 "include": "text.tex#braces"
1706 },
1707 {
1708 "include": "$base"
1709 }
1710 ]
1711 },
1712 {
1713 "begin": "((\\\\)texttt)(\\{)",
1714 "captures": {
1715 "1": {
1716 "name": "support.function.texttt.latex"
1717 },
1718 "2": {
1719 "name": "punctuation.definition.function.latex"
1720 },
1721 "3": {
1722 "name": "punctuation.definition.texttt.begin.latex"
1723 }
1724 },
1725 "contentName": "markup.raw.texttt.latex",
1726 "end": "\\}",
1727 "endCaptures": {
1728 "0": {
1729 "name": "punctuation.definition.texttt.end.latex"
1730 }
1731 },
1732 "name": "meta.function.texttt.latex",
1733 "patterns": [
1734 {
1735 "include": "text.tex#braces"
1736 },
1737 {
1738 "include": "$base"
1739 }
1740 ]
1741 },
1742 {
1743 "captures": {
1744 "0": {
1745 "name": "keyword.other.item.latex"
1746 },
1747 "1": {
1748 "name": "punctuation.definition.keyword.latex"
1749 }
1750 },
1751 "match": "(\\\\)item\\b",
1752 "name": "meta.scope.item.latex"
1753 },
1754 {
1755 "begin": "((\\\\)(?:[aA]uto|foot|full|no|ref|short|[tT]ext|[pP]aren|[sS]mart)?[cC]ite(?:al)?(?:p|s|t|author|year(?:par)?|title)?[ANP]*\\*?)((?:(?:\\([^\\)]*\\)){0,2}(?:\\[[^\\]]*\\]){0,2}\\{[\\p{Alphabetic}:.]*\\})*)(?:([<\\[])[^\\]<>]*([>\\]]))?(?:(\\[)[^\\]]*(\\]))?(\\{)",
1756 "captures": {
1757 "1": {
1758 "name": "keyword.control.cite.latex"
1759 },
1760 "2": {
1761 "name": "punctuation.definition.keyword.latex"
1762 },
1763 "3": {
1764 "patterns": [
1765 {
1766 "include": "#autocites-arg"
1767 }
1768 ]
1769 },
1770 "4": {
1771 "name": "punctuation.definition.arguments.optional.begin.latex"
1772 },
1773 "5": {
1774 "name": "punctuation.definition.arguments.optional.end.latex"
1775 },
1776 "6": {
1777 "name": "punctuation.definition.arguments.optional.begin.latex"
1778 },
1779 "7": {
1780 "name": "punctuation.definition.arguments.optional.end.latex"
1781 },
1782 "8": {
1783 "name": "punctuation.definition.arguments.begin.latex"
1784 }
1785 },
1786 "end": "\\}",
1787 "endCaptures": {
1788 "0": {
1789 "name": "punctuation.definition.arguments.end.latex"
1790 }
1791 },
1792 "name": "meta.citation.latex",
1793 "patterns": [
1794 {
1795 "captures": {
1796 "1": {
1797 "name": "comment.line.percentage.tex"
1798 },
1799 "2": {
1800 "name": "punctuation.definition.comment.tex"
1801 }
1802 },
1803 "match": "((%).*)$"
1804 },
1805 {
1806 "match": "[\\p{Alphabetic}\\p{Number}:.-]+",
1807 "name": "constant.other.reference.citation.latex"
1808 }
1809 ]
1810 },
1811 {
1812 "begin": "((\\\\)bibentry)(\\{)",
1813 "captures": {
1814 "1": {
1815 "name": "keyword.control.cite.latex"
1816 },
1817 "2": {
1818 "name": "punctuation.definition.keyword.latex"
1819 },
1820 "3": {
1821 "name": "punctuation.definition.arguments.begin.latex"
1822 }
1823 },
1824 "end": "\\}",
1825 "endCaptures": {
1826 "0": {
1827 "name": "punctuation.definition.arguments.end.latex"
1828 }
1829 },
1830 "name": "meta.citation.latex",
1831 "patterns": [
1832 {
1833 "match": "[\\p{Alphabetic}\\p{Number}:.]+",
1834 "name": "constant.other.reference.citation.latex"
1835 }
1836 ]
1837 },
1838 {
1839 "begin": "((\\\\)(?:\\w*[rR]ef\\*?))(\\{)",
1840 "beginCaptures": {
1841 "1": {
1842 "name": "keyword.control.ref.latex"
1843 },
1844 "2": {
1845 "name": "punctuation.definition.keyword.latex"
1846 },
1847 "3": {
1848 "name": "punctuation.definition.arguments.begin.latex"
1849 }
1850 },
1851 "end": "\\}",
1852 "endCaptures": {
1853 "0": {
1854 "name": "punctuation.definition.arguments.end.latex"
1855 }
1856 },
1857 "name": "meta.reference.label.latex",
1858 "patterns": [
1859 {
1860 "match": "[\\p{Alphabetic}\\p{Number}\\.,:/*!^_-]",
1861 "name": "constant.other.reference.label.latex"
1862 }
1863 ]
1864 },
1865 {
1866 "include": "#definition-label"
1867 },
1868 {
1869 "begin": "((\\\\)(?:verb|Verb|spverb)\\*?)\\s*((\\\\)scantokens)(\\{)",
1870 "beginCaptures": {
1871 "1": {
1872 "name": "support.function.verb.latex"
1873 },
1874 "2": {
1875 "name": "punctuation.definition.function.latex"
1876 },
1877 "3": {
1878 "name": "support.function.verb.latex"
1879 },
1880 "4": {
1881 "name": "punctuation.definition.verb.latex"
1882 },
1883 "5": {
1884 "name": "punctuation.definition.begin.latex"
1885 }
1886 },
1887 "contentName": "markup.raw.verb.latex",
1888 "end": "(\\})",
1889 "endCaptures": {
1890 "1": {
1891 "name": "punctuation.definition.end.latex"
1892 }
1893 },
1894 "name": "meta.function.verb.latex",
1895 "patterns": [
1896 {
1897 "include": "$self"
1898 }
1899 ]
1900 },
1901 {
1902 "captures": {
1903 "1": {
1904 "name": "support.function.verb.latex"
1905 },
1906 "2": {
1907 "name": "punctuation.definition.function.latex"
1908 },
1909 "3": {
1910 "name": "punctuation.definition.verb.latex"
1911 },
1912 "4": {
1913 "name": "markup.raw.verb.latex"
1914 },
1915 "5": {
1916 "name": "punctuation.definition.verb.latex"
1917 }
1918 },
1919 "match": "((\\\\)(?:verb|Verb|spverb)\\*?)\\s*((?<=\\s)\\S|[^a-zA-Z])(.*?)(\\3|$)",
1920 "name": "meta.function.verb.latex"
1921 },
1922 {
1923 "captures": {
1924 "1": {
1925 "name": "support.function.verb.latex"
1926 },
1927 "2": {
1928 "name": "punctuation.definition.function.latex"
1929 },
1930 "3": {
1931 "patterns": [
1932 {
1933 "include": "#optional-arg"
1934 }
1935 ]
1936 },
1937 "4": {
1938 "name": "punctuation.definition.arguments.begin.latex"
1939 },
1940 "5": {
1941 "name": "punctuation.definition.arguments.end.latex"
1942 },
1943 "6": {
1944 "name": "punctuation.definition.verb.latex"
1945 },
1946 "7": {
1947 "name": "markup.raw.verb.latex"
1948 },
1949 "8": {
1950 "name": "punctuation.definition.verb.latex"
1951 },
1952 "9": {
1953 "name": "punctuation.definition.verb.latex"
1954 },
1955 "10": {
1956 "name": "markup.raw.verb.latex"
1957 },
1958 "11": {
1959 "name": "punctuation.definition.verb.latex"
1960 }
1961 },
1962 "match": "((\\\\)(?:mint|mintinline))((?:\\[[^\\[]*?\\])?)(\\{)[a-zA-Z]*(\\})(?:(?:([^a-zA-Z\\{])(.*?)(\\6))|(?:(\\{)(.*?)(\\})))",
1963 "name": "meta.function.verb.latex"
1964 },
1965 {
1966 "captures": {
1967 "1": {
1968 "name": "support.function.verb.latex"
1969 },
1970 "2": {
1971 "name": "punctuation.definition.function.latex"
1972 },
1973 "3": {
1974 "patterns": [
1975 {
1976 "include": "#optional-arg"
1977 }
1978 ]
1979 },
1980 "4": {
1981 "name": "punctuation.definition.verb.latex"
1982 },
1983 "5": {
1984 "name": "markup.raw.verb.latex"
1985 },
1986 "6": {
1987 "name": "punctuation.definition.verb.latex"
1988 },
1989 "7": {
1990 "name": "punctuation.definition.verb.latex"
1991 },
1992 "8": {
1993 "name": "markup.raw.verb.latex"
1994 },
1995 "9": {
1996 "name": "punctuation.definition.verb.latex"
1997 }
1998 },
1999 "match": "((\\\\)[a-z]+inline)((?:\\[[^\\[]*?\\])?)(?:(?:([^a-zA-Z\\{])(.*?)(\\4))|(?:(\\{)(.*?)(\\})))",
2000 "name": "meta.function.verb.latex"
2001 },
2002 {
2003 "captures": {
2004 "1": {
2005 "name": "support.function.verb.latex"
2006 },
2007 "2": {
2008 "name": "punctuation.definition.function.latex"
2009 },
2010 "3": {
2011 "patterns": [
2012 {
2013 "include": "#optional-arg"
2014 }
2015 ]
2016 },
2017 "4": {
2018 "name": "punctuation.definition.verb.latex"
2019 },
2020 "5": {
2021 "name": "source.python",
2022 "patterns": [
2023 {
2024 "include": "source.python"
2025 }
2026 ]
2027 },
2028 "6": {
2029 "name": "punctuation.definition.verb.latex"
2030 },
2031 "7": {
2032 "name": "punctuation.definition.verb.latex"
2033 },
2034 "8": {
2035 "name": "source.python",
2036 "patterns": [
2037 {
2038 "include": "source.python"
2039 }
2040 ]
2041 },
2042 "9": {
2043 "name": "punctuation.definition.verb.latex"
2044 }
2045 },
2046 "match": "((\\\\)(?:(?:py|pycon|pylab|pylabcon|sympy|sympycon)[cv]?|pyq|pycq|pyif))((?:\\[[^\\[]*?\\])?)(?:(?:([^a-zA-Z\\{])(.*?)(\\4))|(?:(\\{)(.*?)(\\})))",
2047 "name": "meta.function.verb.latex"
2048 },
2049 {
2050 "captures": {
2051 "1": {
2052 "name": "support.function.verb.latex"
2053 },
2054 "2": {
2055 "name": "punctuation.definition.function.latex"
2056 },
2057 "3": {
2058 "patterns": [
2059 {
2060 "include": "#optional-arg"
2061 }
2062 ]
2063 },
2064 "4": {
2065 "name": "punctuation.definition.verb.latex"
2066 },
2067 "5": {
2068 "name": "source.julia",
2069 "patterns": [
2070 {
2071 "include": "source.julia"
2072 }
2073 ]
2074 },
2075 "6": {
2076 "name": "punctuation.definition.verb.latex"
2077 },
2078 "7": {
2079 "name": "punctuation.definition.verb.latex"
2080 },
2081 "8": {
2082 "name": "source.julia",
2083 "patterns": [
2084 {
2085 "include": "source.julia"
2086 }
2087 ]
2088 },
2089 "9": {
2090 "name": "punctuation.definition.verb.latex"
2091 }
2092 },
2093 "match": "((\\\\)(?:jl|julia)[cv]?)((?:\\[[^\\[]*?\\])?)(?:(?:([^a-zA-Z\\{])(.*?)(\\4))|(?:(\\{)(.*?)(\\})))",
2094 "name": "meta.function.verb.latex"
2095 },
2096 {
2097 "match": "\\\\(?:newline|pagebreak|clearpage|linebreak|pause)(?:\\b)",
2098 "name": "keyword.control.layout.latex"
2099 },
2100 {
2101 "begin": "\\\\\\(",
2102 "beginCaptures": {
2103 "0": {
2104 "name": "punctuation.definition.string.begin.latex"
2105 }
2106 },
2107 "end": "\\\\\\)",
2108 "endCaptures": {
2109 "0": {
2110 "name": "punctuation.definition.string.end.latex"
2111 }
2112 },
2113 "name": "meta.math.block.latex support.class.math.block.environment.latex",
2114 "patterns": [
2115 {
2116 "include": "text.tex#math"
2117 },
2118 {
2119 "include": "$base"
2120 }
2121 ]
2122 },
2123 {
2124 "begin": "\\$\\$",
2125 "beginCaptures": {
2126 "0": {
2127 "name": "punctuation.definition.string.begin.latex"
2128 }
2129 },
2130 "end": "\\$\\$",
2131 "endCaptures": {
2132 "0": {
2133 "name": "punctuation.definition.string.end.latex"
2134 }
2135 },
2136 "name": "meta.math.block.latex support.class.math.block.environment.latex",
2137 "patterns": [
2138 {
2139 "match": "\\\\\\$",
2140 "name": "constant.character.escape.latex"
2141 },
2142 {
2143 "include": "text.tex#math"
2144 },
2145 {
2146 "include": "$base"
2147 }
2148 ]
2149 },
2150 {
2151 "begin": "\\$",
2152 "beginCaptures": {
2153 "0": {
2154 "name": "punctuation.definition.string.begin.tex"
2155 }
2156 },
2157 "end": "\\$",
2158 "endCaptures": {
2159 "0": {
2160 "name": "punctuation.definition.string.end.tex"
2161 }
2162 },
2163 "name": "meta.math.block.tex support.class.math.block.tex",
2164 "patterns": [
2165 {
2166 "match": "\\\\\\$",
2167 "name": "constant.character.escape.latex"
2168 },
2169 {
2170 "include": "text.tex#math"
2171 },
2172 {
2173 "include": "$base"
2174 }
2175 ]
2176 },
2177 {
2178 "begin": "\\\\\\[",
2179 "beginCaptures": {
2180 "0": {
2181 "name": "punctuation.definition.string.begin.latex"
2182 }
2183 },
2184 "end": "\\\\\\]",
2185 "endCaptures": {
2186 "0": {
2187 "name": "punctuation.definition.string.end.latex"
2188 }
2189 },
2190 "name": "meta.math.block.latex support.class.math.block.environment.latex",
2191 "patterns": [
2192 {
2193 "include": "text.tex#math"
2194 },
2195 {
2196 "include": "$base"
2197 }
2198 ]
2199 },
2200 {
2201 "captures": {
2202 "1": {
2203 "name": "punctuation.definition.constant.latex"
2204 }
2205 },
2206 "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",
2207 "name": "constant.character.latex"
2208 },
2209 {
2210 "captures": {
2211 "1": {
2212 "name": "punctuation.definition.column-specials.begin.latex"
2213 },
2214 "2": {
2215 "name": "punctuation.definition.column-specials.end.latex"
2216 }
2217 },
2218 "match": "(?:<|>)(\\{)\\$(\\})",
2219 "name": "meta.column-specials.latex"
2220 },
2221 {
2222 "include": "text.tex"
2223 }
2224 ],
2225 "repository": {
2226 "optional-arg": {
2227 "patterns": [
2228 {
2229 "captures": {
2230 "1": {
2231 "name": "punctuation.definition.arguments.optional.begin.latex"
2232 },
2233 "2": {
2234 "name": "variable.parameter.function.latex"
2235 },
2236 "3": {
2237 "name": "punctuation.definition.arguments.optional.end.latex"
2238 }
2239 },
2240 "match": "(\\[)([^\\[]*?)(\\])",
2241 "name": "meta.parameter.optional.latex"
2242 }
2243 ]
2244 },
2245 "multiline-optional-arg-no-highlight": {
2246 "begin": "\\G\\[",
2247 "beginCaptures": {
2248 "0": {
2249 "name": "punctuation.definition.arguments.optional.begin.latex"
2250 }
2251 },
2252 "end": "\\]",
2253 "endCaptures": {
2254 "0": {
2255 "name": "punctuation.definition.arguments.optional.end.latex"
2256 }
2257 },
2258 "name": "meta.parameter.optional.latex",
2259 "patterns": [
2260 {
2261 "include": "$self"
2262 }
2263 ]
2264 },
2265 "multiline-optional-arg": {
2266 "begin": "\\G\\[",
2267 "beginCaptures": {
2268 "0": {
2269 "name": "punctuation.definition.arguments.optional.begin.latex"
2270 }
2271 },
2272 "end": "\\]",
2273 "endCaptures": {
2274 "0": {
2275 "name": "punctuation.definition.arguments.optional.end.latex"
2276 }
2277 },
2278 "name": "meta.parameter.optional.latex",
2279 "contentName": "variable.parameter.function.latex",
2280 "patterns": [
2281 {
2282 "include": "$self"
2283 }
2284 ]
2285 },
2286 "autocites-arg": {
2287 "patterns": [
2288 {
2289 "captures": {
2290 "1": {
2291 "name": "punctuation.definition.arguments.optional.begin.latex"
2292 },
2293 "2": {
2294 "name": "punctuation.definition.arguments.optional.end.latex"
2295 },
2296 "3": {
2297 "name": "punctuation.definition.arguments.optional.begin.latex"
2298 },
2299 "4": {
2300 "name": "punctuation.definition.arguments.optional.end.latex"
2301 },
2302 "5": {
2303 "name": "punctuation.definition.arguments.begin.latex"
2304 },
2305 "6": {
2306 "name": "constant.other.reference.citation.latex"
2307 },
2308 "7": {
2309 "name": "punctuation.definition.arguments.end.latex"
2310 },
2311 "8": {
2312 "patterns": [
2313 {
2314 "include": "#autocites-arg"
2315 }
2316 ]
2317 }
2318 },
2319 "match": "(?:(\\()[^\\)]*(\\))){0,2}(?:(\\[)[^\\]]*(\\])){0,2}(\\{)([\\p{Alphabetic}\\p{Number}:.]+)(\\})(.*)"
2320 }
2321 ]
2322 },
2323 "begin-env-tokenizer": {
2324 "captures": {
2325 "1": {
2326 "name": "support.function.be.latex"
2327 },
2328 "2": {
2329 "name": "punctuation.definition.function.latex"
2330 },
2331 "3": {
2332 "name": "punctuation.definition.arguments.begin.latex"
2333 },
2334 "4": {
2335 "name": "variable.parameter.function.latex"
2336 },
2337 "5": {
2338 "name": "punctuation.definition.arguments.end.latex"
2339 },
2340 "6": {
2341 "name": "punctuation.definition.arguments.optional.begin.latex"
2342 },
2343 "7": {
2344 "patterns": [
2345 {
2346 "include": "$base"
2347 }
2348 ]
2349 },
2350 "8": {
2351 "name": "punctuation.definition.arguments.optional.end.latex"
2352 },
2353 "9": {
2354 "name": "punctuation.definition.arguments.begin.latex"
2355 },
2356 "10": {
2357 "name": "variable.parameter.function.latex"
2358 },
2359 "11": {
2360 "name": "punctuation.definition.arguments.end.latex"
2361 }
2362 },
2363 "match": "\\s*((\\\\)(?:begin|end))(\\{)([a-zA-Z]*\\*?)(\\})(?:(\\[)(.*)(\\]))?(?:(\\{)([^{}]*)(\\}))?"
2364 },
2365 "definition-label": {
2366 "begin": "((\\\\)label)((?:\\[[^\\[]*?\\])*)(\\{)",
2367 "beginCaptures": {
2368 "1": {
2369 "name": "keyword.control.label.latex"
2370 },
2371 "2": {
2372 "name": "punctuation.definition.keyword.latex"
2373 },
2374 "3": {
2375 "patterns": [
2376 {
2377 "include": "#optional-arg"
2378 }
2379 ]
2380 },
2381 "4": {
2382 "name": "punctuation.definition.arguments.begin.latex"
2383 }
2384 },
2385 "end": "\\}",
2386 "endCaptures": {
2387 "0": {
2388 "name": "punctuation.definition.arguments.end.latex"
2389 }
2390 },
2391 "name": "meta.definition.label.latex",
2392 "patterns": [
2393 {
2394 "match": "[\\p{Alphabetic}\\p{Number}\\.,:/*!^_-]",
2395 "name": "variable.parameter.definition.label.latex"
2396 }
2397 ]
2398 }
2399 }
2400 }
2401