syntaxes/LaTeX.tmLanguage.json

changeset 0
aa9fc390ce91
child 5
993903fd4434
equal deleted inserted replaced
-1:000000000000 0:aa9fc390ce91
1 {
2 "fileTypes": [
3 "tex"
4 ],
5 "firstLineMatch": "^\\\\documentclass(\\[.*\\])?\\{.*\\}",
6 "keyEquivalent": "^~L",
7 "name": "LaTeX+",
8 "patterns": [
9 {
10 "comment": "This scope identifies partially typed commands such as `\\tab`. We use this to trigger “Command Completion” only when it makes sense.",
11 "match": "(?<=\\\\[\\w@]|\\\\[\\w@]{2}|\\\\[\\w@]{3}|\\\\[\\w@]{4}|\\\\[\\w@]{5}|\\\\[\\w@]{6})\\s",
12 "name": "meta.space-after-command.latex"
13 },
14 {
15 "begin": "((\\\\)(?:usepackage|documentclass))((?:\\[[^\\[]*?\\])*)(\\{)",
16 "beginCaptures": {
17 "1": {
18 "name": "keyword.control.preamble.latex"
19 },
20 "2": {
21 "name": "punctuation.definition.function.latex"
22 },
23 "3": {
24 "patterns": [
25 {
26 "include": "#optional-arg"
27 }
28 ]
29 },
30 "4": {
31 "name": "punctuation.definition.arguments.begin.latex"
32 }
33 },
34 "contentName": "support.class.latex",
35 "end": "\\}",
36 "endCaptures": {
37 "0": {
38 "name": "punctuation.definition.arguments.end.latex"
39 }
40 },
41 "name": "meta.preamble.latex",
42 "patterns": [
43 {
44 "include": "$self"
45 }
46 ]
47 },
48 {
49 "begin": "((\\\\)(?:include|input))(\\{)",
50 "beginCaptures": {
51 "1": {
52 "name": "keyword.control.include.latex"
53 },
54 "2": {
55 "name": "punctuation.definition.function.latex"
56 },
57 "3": {
58 "name": "punctuation.definition.arguments.begin.latex"
59 }
60 },
61 "contentName": "support.class.latex",
62 "end": "\\}",
63 "endCaptures": {
64 "0": {
65 "name": "punctuation.definition.arguments.end.latex"
66 }
67 },
68 "name": "meta.include.latex",
69 "patterns": [
70 {
71 "include": "$self"
72 }
73 ]
74 },
75 {
76 "begin": "((\\\\)((?:sub){0,2}section|(?:sub)?paragraph|chapter|part|addpart|addchap|addsec|minisec|frametitle)(?:\\*)?)((?:\\[[^\\[]*?\\]){0,2})(\\{)",
77 "beginCaptures": {
78 "1": {
79 "name": "support.function.section.latex"
80 },
81 "2": {
82 "name": "punctuation.definition.function.latex"
83 },
84 "4": {
85 "patterns": [
86 {
87 "include": "#optional-arg"
88 }
89 ]
90 },
91 "5": {
92 "name": "punctuation.definition.arguments.begin.latex"
93 }
94 },
95 "comment": "this works OK with all kinds of crazy stuff as long as section is one line",
96 "contentName": "entity.name.section.latex",
97 "end": "\\}",
98 "endCaptures": {
99 "0": {
100 "name": "punctuation.definition.arguments.end.latex"
101 }
102 },
103 "name": "meta.function.section.$3.latex",
104 "patterns": [
105 {
106 "include": "text.tex#braces"
107 },
108 {
109 "include": "$base"
110 }
111 ]
112 },
113 {
114 "begin": "(^\\s*)?(?=\\\\begin\\{(lstlisting|minted|pyglist)\\})",
115 "beginCaptures": {
116 "0": {
117 "name": "punctuation.whitespace.embedded.leading.latex"
118 }
119 },
120 "end": "(?!\\G)(\\s*$\\n?)?",
121 "endCaptures": {
122 "0": {
123 "name": "punctuation.whitespace.embedded.trailing.latex"
124 }
125 },
126 "patterns": [
127 {
128 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:cpp|c)\\})",
129 "captures": {
130 "1": {
131 "patterns": [
132 {
133 "include": "#minted-env"
134 }
135 ]
136 }
137 },
138 "contentName": "source.cpp.embedded.latex",
139 "patterns": [
140 {
141 "include": "source.cpp.embedded.latex"
142 }
143 ],
144 "end": "(\\\\end\\{minted\\})"
145 },
146 {
147 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{css\\})",
148 "captures": {
149 "1": {
150 "patterns": [
151 {
152 "include": "#minted-env"
153 }
154 ]
155 }
156 },
157 "contentName": "source.css",
158 "patterns": [
159 {
160 "include": "source.css"
161 }
162 ],
163 "end": "(\\\\end\\{minted\\})"
164 },
165 {
166 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{html\\})",
167 "captures": {
168 "1": {
169 "patterns": [
170 {
171 "include": "#minted-env"
172 }
173 ]
174 }
175 },
176 "contentName": "text.html",
177 "patterns": [
178 {
179 "include": "text.html"
180 }
181 ],
182 "end": "(\\\\end\\{minted\\})"
183 },
184 {
185 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{java\\})",
186 "captures": {
187 "1": {
188 "patterns": [
189 {
190 "include": "#minted-env"
191 }
192 ]
193 }
194 },
195 "contentName": "source.java",
196 "patterns": [
197 {
198 "include": "source.java"
199 }
200 ],
201 "end": "(\\\\end\\{minted\\})"
202 },
203 {
204 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:js|javascript)\\})",
205 "captures": {
206 "1": {
207 "patterns": [
208 {
209 "include": "#minted-env"
210 }
211 ]
212 }
213 },
214 "contentName": "source.js",
215 "patterns": [
216 {
217 "include": "source.js"
218 }
219 ],
220 "end": "(\\\\end\\{minted\\})"
221 },
222 {
223 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{lua\\})",
224 "captures": {
225 "1": {
226 "patterns": [
227 {
228 "include": "#minted-env"
229 }
230 ]
231 }
232 },
233 "contentName": "source.lua",
234 "patterns": [
235 {
236 "include": "source.lua"
237 }
238 ],
239 "end": "(\\\\end\\{minted\\})"
240 },
241 {
242 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{(?:python|py)\\})",
243 "captures": {
244 "1": {
245 "patterns": [
246 {
247 "include": "#minted-env"
248 }
249 ]
250 }
251 },
252 "contentName": "source.python",
253 "patterns": [
254 {
255 "include": "source.python"
256 }
257 ],
258 "end": "(\\\\end\\{minted\\})"
259 },
260 {
261 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{xml\\})",
262 "captures": {
263 "1": {
264 "patterns": [
265 {
266 "include": "#minted-env"
267 }
268 ]
269 }
270 },
271 "contentName": "yaml.xml",
272 "patterns": [
273 {
274 "include": "yaml.xml"
275 }
276 ],
277 "end": "(\\\\end\\{minted\\})"
278 },
279 {
280 "begin": "(\\\\begin\\{minted\\}(?:\\[.*\\])?\\{yaml\\})",
281 "captures": {
282 "1": {
283 "patterns": [
284 {
285 "include": "#minted-env"
286 }
287 ]
288 }
289 },
290 "contentName": "source.yaml",
291 "patterns": [
292 {
293 "include": "source.yaml"
294 }
295 ],
296 "end": "(\\\\end\\{minted\\})"
297 },
298 {
299 "begin": "(\\\\begin\\{(?:lstlisting|minted|pyglist)\\}(?:\\[.*\\])?)",
300 "captures": {
301 "1": {
302 "patterns": [
303 {
304 "include": "#minted-env"
305 }
306 ]
307 }
308 },
309 "contentName": "meta.function.embedded.latex",
310 "end": "(\\\\end\\{(?:lstlisting|minted|pyglist)\\})",
311 "name": "meta.embedded.block.generic"
312 }
313 ]
314 },
315 {
316 "begin": "((?:\\s*)\\\\begin\\{(cppcode(?:\\*)?)\\}(?:\\[.*\\])?)",
317 "captures": {
318 "1": {
319 "patterns": [
320 {
321 "include": "#code-env"
322 }
323 ]
324 }
325 },
326 "contentName": "source.cpp.embedded.latex",
327 "patterns": [
328 {
329 "include": "source.cpp.embedded.latex"
330 },
331 {
332 "include": "source.cpp"
333 }
334 ],
335 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
336 },
337 {
338 "begin": "((?:\\s*)\\\\begin\\{(hscode(?:\\*)?)\\}(?:\\[.*\\])?)",
339 "captures": {
340 "1": {
341 "patterns": [
342 {
343 "include": "#code-env"
344 }
345 ]
346 }
347 },
348 "contentName": "source.haskell",
349 "patterns": [
350 {
351 "include": "source.haskell"
352 }
353 ],
354 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
355 },
356 {
357 "begin": "((?:\\s*)\\\\begin\\{(luacode(?:\\*)?)\\}(?:\\[.*\\])?)",
358 "captures": {
359 "1": {
360 "patterns": [
361 {
362 "include": "#code-env"
363 }
364 ]
365 }
366 },
367 "contentName": "source.lua",
368 "patterns": [
369 {
370 "include": "source.lua"
371 }
372 ],
373 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
374 },
375 {
376 "begin": "((?:\\s*)\\\\begin\\{((?:pycode|sageblock|sagesilent|sageverbatim|sageexample|sagecommandline)(?:\\*)?)\\}(?:\\[.*\\])?)",
377 "captures": {
378 "1": {
379 "patterns": [
380 {
381 "include": "#code-env"
382 }
383 ]
384 }
385 },
386 "contentName": "source.python",
387 "patterns": [
388 {
389 "include": "source.python"
390 }
391 ],
392 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
393 },
394 {
395 "begin": "((?:\\s*)\\\\begin\\{(scalacode(?:\\*)?)\\}(?:\\[.*\\])?)",
396 "captures": {
397 "1": {
398 "patterns": [
399 {
400 "include": "#code-env"
401 }
402 ]
403 }
404 },
405 "contentName": "source.scala",
406 "patterns": [
407 {
408 "include": "source.scala"
409 }
410 ],
411 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
412 },
413 {
414 "begin": "((?:\\s*)\\\\begin\\{([a-z]*code(?:\\*)?)\\}(?:\\[.*\\])?)",
415 "captures": {
416 "1": {
417 "patterns": [
418 {
419 "include": "#code-env"
420 }
421 ]
422 }
423 },
424 "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
425 },
426 {
427 "begin": "((?:\\s*)\\\\begin\\{asy\\}(?:\\[.*\\])?)",
428 "captures": {
429 "1": {
430 "patterns": [
431 {
432 "include": "#code-env"
433 }
434 ]
435 }
436 },
437 "contentName": "source.asymptote",
438 "patterns": [
439 {
440 "include": "source.asymptote"
441 }
442 ],
443 "end": "(\\\\end\\{asy\\}(?:\\s*\\n)?)"
444 },
445 {
446 "begin": "((?:\\s*)\\\\begin\\{dot2tex\\}(?:\\[.*\\])?)",
447 "captures": {
448 "1": {
449 "patterns": [
450 {
451 "include": "#code-env"
452 }
453 ]
454 }
455 },
456 "contentName": "source.dot",
457 "patterns": [
458 {
459 "include": "source.dot"
460 }
461 ],
462 "end": "(\\\\end\\{dot2tex\\}(?:\\s*\\n)?)"
463 },
464 {
465 "begin": "((?:\\s*)\\\\begin\\{gnuplot\\}(?:\\[.*\\])?)",
466 "captures": {
467 "1": {
468 "patterns": [
469 {
470 "include": "#code-env"
471 }
472 ]
473 }
474 },
475 "contentName": "source.gnuplot",
476 "patterns": [
477 {
478 "include": "source.gnuplot"
479 }
480 ],
481 "end": "(\\\\end\\{gnuplot\\}(?:\\s*\\n)?)"
482 },
483 {
484 "begin": "(?:\\s*)((\\\\)begin)(\\{)((?:fboxv|boxedv|V|v)erbatim)(\\})",
485 "captures": {
486 "1": {
487 "name": "support.function.be.latex"
488 },
489 "2": {
490 "name": "punctuation.definition.function.latex"
491 },
492 "3": {
493 "name": "punctuation.definition.arguments.begin.latex"
494 },
495 "4": {
496 "name": "variable.parameter.function.latex"
497 },
498 "5": {
499 "name": "punctuation.definition.arguments.end.latex"
500 }
501 },
502 "contentName": "markup.raw.verbatim.latex",
503 "end": "((\\\\)end)(\\{)(\\4)(\\})",
504 "name": "meta.function.verbatim.latex"
505 },
506 {
507 "begin": "(?:\\s*)((\\\\)begin)(\\{)(VerbatimOut)(\\})(\\{)([^\\}]*)(\\})",
508 "captures": {
509 "1": {
510 "name": "support.function.be.latex"
511 },
512 "2": {
513 "name": "punctuation.definition.function.latex"
514 },
515 "3": {
516 "name": "punctuation.definition.arguments.begin.latex"
517 },
518 "4": {
519 "name": "variable.parameter.function.latex"
520 },
521 "5": {
522 "name": "punctuation.definition.arguments.end.latex"
523 },
524 "6": {
525 "name": "punctuation.definition.arguments.begin.latex"
526 },
527 "7": {
528 "name": "support.class.latex"
529 },
530 "8": {
531 "name": "punctuation.definition.arguments.end.latex"
532 }
533 },
534 "contentName": "markup.raw.verbatim.latex",
535 "end": "((\\\\)end)(\\{)(\\VerbatimOut)(\\})",
536 "name": "meta.function.verbatim.latex"
537 },
538 {
539 "begin": "(?:\\s*)((\\\\)begin)(\\{)(alltt)(\\})",
540 "captures": {
541 "1": {
542 "name": "support.function.be.latex"
543 },
544 "2": {
545 "name": "punctuation.definition.function.latex"
546 },
547 "3": {
548 "name": "punctuation.definition.arguments.begin.latex"
549 },
550 "4": {
551 "name": "variable.parameter.function.latex"
552 },
553 "5": {
554 "name": "punctuation.definition.arguments.end.latex"
555 }
556 },
557 "contentName": "markup.raw.verbatim.latex",
558 "end": "((\\\\)end)(\\{)(alltt)(\\})",
559 "name": "meta.function.alltt.latex",
560 "patterns": [
561 {
562 "captures": {
563 "1": {
564 "name": "punctuation.definition.function.tex"
565 }
566 },
567 "match": "(\\\\)[A-Za-z]+",
568 "name": "support.function.general.tex"
569 }
570 ]
571 },
572 {
573 "begin": "(?:\\s*)((\\\\)begin)(\\{)((?:C|c)omment)(\\})",
574 "captures": {
575 "1": {
576 "name": "support.function.be.latex"
577 },
578 "2": {
579 "name": "punctuation.definition.function.latex"
580 },
581 "3": {
582 "name": "punctuation.definition.arguments.begin.latex"
583 },
584 "4": {
585 "name": "variable.parameter.function.latex"
586 },
587 "5": {
588 "name": "punctuation.definition.arguments.end.latex"
589 }
590 },
591 "contentName": "comment.block.environment.tex",
592 "end": "((\\\\)end)(\\{)(\\4)(\\})",
593 "name": "meta.function.verbatim.latex"
594 },
595 {
596 "captures": {
597 "1": {
598 "name": "support.function.url.latex"
599 },
600 "2": {
601 "name": "punctuation.definition.function.latex"
602 },
603 "3": {
604 "name": "punctuation.definition.arguments.begin.latex"
605 },
606 "4": {
607 "name": "markup.underline.link.latex"
608 },
609 "5": {
610 "name": "punctuation.definition.arguments.end.latex"
611 }
612 },
613 "match": "(?:\\s*)((\\\\)(?:url|href))(\\{)([^}]*)(\\})",
614 "name": "meta.function.link.url.latex"
615 },
616 {
617 "captures": {
618 "1": {
619 "name": "support.function.be.latex"
620 },
621 "2": {
622 "name": "punctuation.definition.function.latex"
623 },
624 "3": {
625 "name": "punctuation.definition.arguments.begin.latex"
626 },
627 "4": {
628 "name": "variable.parameter.function.latex"
629 },
630 "5": {
631 "name": "punctuation.definition.arguments.end.latex"
632 }
633 },
634 "comment": "These two patterns match the \\begin{document} and \\end{document} commands, so that the environment matching pattern following them will ignore those commands.",
635 "match": "(?:\\s*)((\\\\)begin)(\\{)(document)(\\})",
636 "name": "meta.function.begin-document.latex"
637 },
638 {
639 "captures": {
640 "1": {
641 "name": "support.function.be.latex"
642 },
643 "2": {
644 "name": "punctuation.definition.function.latex"
645 },
646 "3": {
647 "name": "punctuation.definition.arguments.begin.latex"
648 },
649 "4": {
650 "name": "variable.parameter.function.latex"
651 },
652 "5": {
653 "name": "punctuation.definition.arguments.end.latex"
654 }
655 },
656 "match": "(?:\\s*)((\\\\)end)(\\{)(document)(\\})",
657 "name": "meta.function.end-document.latex"
658 },
659 {
660 "begin": "(?:\\s*)((\\\\)begin)(\\{)((?:align|equation|(?:IEEE)?eqnarray|multline|aligned|alignat|split|gather|gathered|cases|displaymath|[a-zA-Z]*matrix)(?:\\*)?)(\\})(\\s*\\n)?",
661 "captures": {
662 "1": {
663 "name": "support.function.be.latex"
664 },
665 "2": {
666 "name": "punctuation.definition.function.latex"
667 },
668 "3": {
669 "name": "punctuation.definition.arguments.begin.latex"
670 },
671 "4": {
672 "name": "variable.parameter.function.latex"
673 },
674 "5": {
675 "name": "punctuation.definition.arguments.end.latex"
676 }
677 },
678 "contentName": "support.class.math.block.environment.latex",
679 "end": "(?:\\s*)((\\\\)end)(\\{)(\\4)(\\})(?:\\s*\\n)?",
680 "name": "meta.function.environment.math.latex",
681 "patterns": [
682 {
683 "match": "(?<!\\\\)&",
684 "name": "keyword.control.equation.align.latex"
685 },
686 {
687 "match": "\\\\\\\\",
688 "name": "keyword.control.equation.newline.latex"
689 },
690 {
691 "include": "#definition-label"
692 },
693 {
694 "include": "text.tex#math"
695 },
696 {
697 "include": "$base"
698 }
699 ]
700 },
701 {
702 "begin": "(?:\\s*)((\\\\)begin)(\\{)(array|tabular[xy*]?|xltabular)(\\})(\\s*\\n)?",
703 "captures": {
704 "1": {
705 "name": "support.function.be.latex"
706 },
707 "2": {
708 "name": "punctuation.definition.function.latex"
709 },
710 "3": {
711 "name": "punctuation.definition.arguments.begin.latex"
712 },
713 "4": {
714 "name": "variable.parameter.function.latex"
715 },
716 "5": {
717 "name": "punctuation.definition.arguments.end.latex"
718 }
719 },
720 "contentName": "meta.data.environment.tabular.latex",
721 "end": "(?:\\s*)((\\\\)end)(\\{)(\\4)(\\})(?:\\s*\\n)?",
722 "name": "meta.function.environment.tabular.latex",
723 "patterns": [
724 {
725 "match": "(?<!\\\\)&",
726 "name": "keyword.control.table.cell.latex"
727 },
728 {
729 "match": "\\\\\\\\",
730 "name": "keyword.control.table.newline.latex"
731 },
732 {
733 "include": "$base"
734 }
735 ]
736 },
737 {
738 "begin": "(?:\\s*)((\\\\)begin)(\\{)(itemize|enumerate|description|list)(\\})",
739 "captures": {
740 "1": {
741 "name": "support.function.be.latex"
742 },
743 "2": {
744 "name": "punctuation.definition.function.latex"
745 },
746 "3": {
747 "name": "punctuation.definition.arguments.begin.latex"
748 },
749 "4": {
750 "name": "variable.parameter.function.latex"
751 },
752 "5": {
753 "name": "punctuation.definition.arguments.end.latex"
754 }
755 },
756 "end": "((\\\\)end)(\\{)(\\4)(\\})(?:\\s*\\n)?",
757 "name": "meta.function.environment.list.latex",
758 "patterns": [
759 {
760 "include": "$base"
761 }
762 ]
763 },
764 {
765 "begin": "(?:\\s*)((\\\\)begin)(\\{)(tikzpicture)(\\})",
766 "captures": {
767 "1": {
768 "name": "support.function.be.latex"
769 },
770 "2": {
771 "name": "punctuation.definition.function.latex"
772 },
773 "3": {
774 "name": "punctuation.definition.arguments.begin.latex"
775 },
776 "4": {
777 "name": "variable.parameter.function.latex"
778 },
779 "5": {
780 "name": "punctuation.definition.arguments.end.latex"
781 }
782 },
783 "end": "((\\\\)end)(\\{)(tikzpicture)(\\})(?:\\s*\\n)?",
784 "name": "meta.function.environment.latex.tikz",
785 "patterns": [
786 {
787 "include": "$base"
788 }
789 ]
790 },
791 {
792 "begin": "(?:\\s*)((\\\\)begin)(\\{)(frame)(\\})",
793 "captures": {
794 "1": {
795 "name": "support.function.be.latex"
796 },
797 "2": {
798 "name": "punctuation.definition.function.latex"
799 },
800 "3": {
801 "name": "punctuation.definition.arguments.begin.latex"
802 },
803 "4": {
804 "name": "variable.parameter.function.latex"
805 },
806 "5": {
807 "name": "punctuation.definition.arguments.end.latex"
808 }
809 },
810 "end": "((\\\\)end)(\\{)(frame)(\\})",
811 "name": "meta.function.environment.frame.latex",
812 "patterns": [
813 {
814 "include": "$base"
815 }
816 ]
817 },
818 {
819 "begin": "(?:\\s*)((\\\\)begin)(\\{)(mpost[*]?)(\\})",
820 "captures": {
821 "1": {
822 "name": "support.function.be.latex"
823 },
824 "2": {
825 "name": "punctuation.definition.function.latex"
826 },
827 "3": {
828 "name": "punctuation.definition.arguments.begin.latex"
829 },
830 "4": {
831 "name": "variable.parameter.function.latex"
832 },
833 "5": {
834 "name": "punctuation.definition.arguments.end.latex"
835 }
836 },
837 "end": "((\\\\)end)(\\{)(\\4)(\\})(?:\\s*\\n)?",
838 "name": "meta.function.environment.latex.mpost"
839 },{
840 "begin": "(?:\\s*)((\\\\)begin)(\\{)(\\w+[*]?)(\\})",
841 "captures": {
842 "1": {
843 "name": "support.function.be.latex"
844 },
845 "2": {
846 "name": "punctuation.definition.function.latex"
847 },
848 "3": {
849 "name": "punctuation.definition.arguments.begin.latex"
850 },
851 "4": {
852 "name": "variable.parameter.function.latex"
853 },
854 "5": {
855 "name": "punctuation.definition.arguments.end.latex"
856 }
857 },
858 "end": "((\\\\)end)(\\{)(\\4)(\\})(?:\\s*\\n)?",
859 "name": "meta.function.environment.general.latex",
860 "patterns": [
861 {
862 "include": "$base"
863 }
864 ]
865 },
866 {
867 "captures": {
868 "1": {
869 "name": "storage.type.function.latex"
870 },
871 "2": {
872 "name": "punctuation.definition.function.latex"
873 },
874 "3": {
875 "name": "punctuation.definition.begin.latex"
876 },
877 "4": {
878 "name": "support.function.general.tex"
879 },
880 "5": {
881 "name": "punctuation.definition.function.latex"
882 },
883 "6": {
884 "name": "punctuation.definition.end.latex"
885 }
886 },
887 "match": "((\\\\)(?:newcommand|renewcommand|(?:re)?newrobustcmd|DeclareRobustCommand))\\*?({)((\\\\)[^}]*)(})"
888 },
889 {
890 "begin": "((\\\\)marginpar)((?:\\[[^\\[]*?\\])*)(\\{)",
891 "beginCaptures": {
892 "1": {
893 "name": "support.function.marginpar.latex"
894 },
895 "2": {
896 "name": "punctuation.definition.function.latex"
897 },
898 "3": {
899 "patterns": [
900 {
901 "include": "#optional-arg"
902 }
903 ]
904 },
905 "4": {
906 "name": "punctuation.definition.marginpar.begin.latex"
907 }
908 },
909 "contentName": "meta.paragraph.margin.latex",
910 "end": "\\}",
911 "endCaptures": {
912 "0": {
913 "name": "punctuation.definition.marginpar.end.latex"
914 }
915 },
916 "patterns": [
917 {
918 "include": "text.tex#braces"
919 },
920 {
921 "include": "$base"
922 }
923 ]
924 },
925 {
926 "begin": "((\\\\)footnote)((?:\\[[^\\[]*?\\])*)(\\{)",
927 "beginCaptures": {
928 "1": {
929 "name": "support.function.footnote.latex"
930 },
931 "2": {
932 "name": "punctuation.definition.function.latex"
933 },
934 "3": {
935 "patterns": [
936 {
937 "include": "#optional-arg"
938 }
939 ]
940 },
941 "4": {
942 "name": "punctuation.definition.footnote.begin.latex"
943 }
944 },
945 "contentName": "entity.name.footnote.latex",
946 "end": "\\}",
947 "endCaptures": {
948 "0": {
949 "name": "punctuation.definition.footnote.end.latex"
950 }
951 },
952 "patterns": [
953 {
954 "include": "text.tex#braces"
955 },
956 {
957 "include": "$base"
958 }
959 ]
960 },
961 {
962 "begin": "((\\\\)todo)((?:\\[[^\\[]*?\\])*)(\\{)",
963 "beginCaptures": {
964 "1": {
965 "name": "support.function.todo.latex"
966 },
967 "2": {
968 "name": "punctuation.definition.function.latex"
969 },
970 "3": {
971 "patterns": [
972 {
973 "include": "#optional-arg"
974 }
975 ]
976 },
977 "4": {
978 "name": "punctuation.definition.todo.begin.latex"
979 }
980 },
981 "contentName": "entity.name.todo.latex",
982 "end": "\\}",
983 "endCaptures": {
984 "0": {
985 "name": "punctuation.definition.todo.end.latex"
986 }
987 },
988 "patterns": [
989 {
990 "include": "text.tex#braces"
991 },
992 {
993 "include": "$base"
994 }
995 ]
996 },
997 {
998 "begin": "((\\\\)emph)(\\{)",
999 "beginCaptures": {
1000 "1": {
1001 "name": "support.function.emph.latex"
1002 },
1003 "2": {
1004 "name": "punctuation.definition.function.latex"
1005 },
1006 "3": {
1007 "name": "punctuation.definition.emph.begin.latex"
1008 }
1009 },
1010 "contentName": "markup.italic.emph.latex",
1011 "end": "\\}",
1012 "endCaptures": {
1013 "0": {
1014 "name": "punctuation.definition.emph.end.latex"
1015 }
1016 },
1017 "name": "meta.function.emph.latex",
1018 "patterns": [
1019 {
1020 "include": "text.tex#braces"
1021 },
1022 {
1023 "include": "$base"
1024 }
1025 ]
1026 },
1027 {
1028 "begin": "((\\\\)textit)(\\{)",
1029 "captures": {
1030 "1": {
1031 "name": "support.function.textit.latex"
1032 },
1033 "2": {
1034 "name": "punctuation.definition.function.latex"
1035 },
1036 "3": {
1037 "name": "punctuation.definition.textit.begin.latex"
1038 }
1039 },
1040 "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",
1041 "contentName": "markup.italic.textit.latex",
1042 "end": "\\}",
1043 "endCaptures": {
1044 "0": {
1045 "name": "punctuation.definition.textit.end.latex"
1046 }
1047 },
1048 "name": "meta.function.textit.latex",
1049 "patterns": [
1050 {
1051 "include": "text.tex#braces"
1052 },
1053 {
1054 "include": "$base"
1055 }
1056 ]
1057 },
1058 {
1059 "begin": "((\\\\)textbf)(\\{)",
1060 "captures": {
1061 "1": {
1062 "name": "support.function.textbf.latex"
1063 },
1064 "2": {
1065 "name": "punctuation.definition.function.latex"
1066 },
1067 "3": {
1068 "name": "punctuation.definition.textbf.begin.latex"
1069 }
1070 },
1071 "contentName": "markup.bold.textbf.latex",
1072 "end": "\\}",
1073 "endCaptures": {
1074 "0": {
1075 "name": "punctuation.definition.textbf.end.latex"
1076 }
1077 },
1078 "name": "meta.function.textbf.latex",
1079 "patterns": [
1080 {
1081 "include": "text.tex#braces"
1082 },
1083 {
1084 "include": "$base"
1085 }
1086 ]
1087 },
1088 {
1089 "begin": "((\\\\)texttt)(\\{)",
1090 "captures": {
1091 "1": {
1092 "name": "support.function.texttt.latex"
1093 },
1094 "2": {
1095 "name": "punctuation.definition.function.latex"
1096 },
1097 "3": {
1098 "name": "punctuation.definition.texttt.begin.latex"
1099 }
1100 },
1101 "contentName": "markup.raw.texttt.latex",
1102 "end": "\\}",
1103 "endCaptures": {
1104 "0": {
1105 "name": "punctuation.definition.texttt.end.latex"
1106 }
1107 },
1108 "name": "meta.function.texttt.latex",
1109 "patterns": [
1110 {
1111 "include": "text.tex#braces"
1112 },
1113 {
1114 "include": "$base"
1115 }
1116 ]
1117 },
1118 {
1119 "captures": {
1120 "0": {
1121 "name": "keyword.other.item.latex"
1122 },
1123 "1": {
1124 "name": "punctuation.definition.keyword.latex"
1125 }
1126 },
1127 "match": "(\\\\)item\\b",
1128 "name": "meta.scope.item.latex"
1129 },
1130 {
1131 "begin": "((\\\\)(?:auto|foot|full|no|short|text|paren)?[cC]ite(?:al)?(?:p|s|t|author|year(?:par)?|title)?[ANP]*\\*?)((?:(?:\\[[^\\]]*\\]){0,2}\\{[\\w:.]+\\})*)(?:(\\[)[^\\]]*(\\]))?(?:(\\[)[^\\]]*(\\]))?(\\{)",
1132 "captures": {
1133 "1": {
1134 "name": "keyword.control.cite.latex"
1135 },
1136 "2": {
1137 "name": "punctuation.definition.keyword.latex"
1138 },
1139 "3": {
1140 "patterns": [
1141 {
1142 "include": "#autocites-arg"
1143 }
1144 ]
1145 },
1146 "4": {
1147 "name": "punctuation.definition.arguments.optional.begin.latex"
1148 },
1149 "5": {
1150 "name": "punctuation.definition.arguments.optional.end.latex"
1151 },
1152 "6": {
1153 "name": "punctuation.definition.arguments.optional.begin.latex"
1154 },
1155 "7": {
1156 "name": "punctuation.definition.arguments.optional.end.latex"
1157 },
1158 "8": {
1159 "name": "punctuation.definition.arguments.begin.latex"
1160 }
1161 },
1162 "end": "\\}",
1163 "endCaptures": {
1164 "0": {
1165 "name": "punctuation.definition.arguments.end.latex"
1166 }
1167 },
1168 "name": "meta.citation.latex",
1169 "patterns": [
1170 {
1171 "match": "[\\w:.]+",
1172 "name": "constant.other.reference.citation.latex"
1173 }
1174 ]
1175 },
1176 {
1177 "begin": "((\\\\)(?:\\w*[r|R]ef\\*?))(\\{)",
1178 "beginCaptures": {
1179 "1": {
1180 "name": "keyword.control.ref.latex"
1181 },
1182 "2": {
1183 "name": "punctuation.definition.keyword.latex"
1184 },
1185 "3": {
1186 "name": "punctuation.definition.arguments.begin.latex"
1187 }
1188 },
1189 "end": "\\}",
1190 "endCaptures": {
1191 "0": {
1192 "name": "punctuation.definition.arguments.end.latex"
1193 }
1194 },
1195 "name": "meta.reference.label.latex",
1196 "patterns": [
1197 {
1198 "match": "[a-zA-Z0-9\\.,:/*!^_-]",
1199 "name": "constant.other.reference.label.latex"
1200 }
1201 ]
1202 },
1203 {
1204 "include": "#definition-label"
1205 },
1206 {
1207 "begin": "((\\\\)verb[\\*]?)\\s*((\\\\)scantokens)(\\{)",
1208 "beginCaptures": {
1209 "1": {
1210 "name": "support.function.verb.latex"
1211 },
1212 "2": {
1213 "name": "punctuation.definition.function.latex"
1214 },
1215 "3": {
1216 "name": "support.function.verb.latex"
1217 },
1218 "4": {
1219 "name": "punctuation.definition.verb.latex"
1220 },
1221 "5": {
1222 "name": "punctuation.definition.begin.latex"
1223 }
1224 },
1225 "contentName": "markup.raw.verb.latex",
1226 "end": "(\\})",
1227 "endCaptures": {
1228 "1": {
1229 "name": "punctuation.definition.end.latex"
1230 }
1231 },
1232 "name": "meta.function.verb.latex",
1233 "patterns": [
1234 {
1235 "include": "$self"
1236 }
1237 ]
1238 },
1239 {
1240 "captures": {
1241 "1": {
1242 "name": "support.function.verb.latex"
1243 },
1244 "2": {
1245 "name": "punctuation.definition.function.latex"
1246 },
1247 "3": {
1248 "name": "punctuation.definition.verb.latex"
1249 },
1250 "4": {
1251 "name": "markup.raw.verb.latex"
1252 },
1253 "5": {
1254 "name": "punctuation.definition.verb.latex"
1255 }
1256 },
1257 "match": "((\\\\)verb[\\*]?)\\s*((?<=\\s)\\S|[^a-zA-Z])(.*?)(\\3|$)",
1258 "name": "meta.function.verb.latex"
1259 },
1260 {
1261 "captures": {
1262 "1": {
1263 "name": "support.function.verb.latex"
1264 },
1265 "2": {
1266 "name": "punctuation.definition.function.latex"
1267 },
1268 "3": {
1269 "patterns": [
1270 {
1271 "include": "#optional-arg"
1272 }
1273 ]
1274 },
1275 "4": {
1276 "name": "punctuation.definition.arguments.begin.latex"
1277 },
1278 "5": {
1279 "name": "punctuation.definition.arguments.end.latex"
1280 },
1281 "6": {
1282 "name": "punctuation.definition.verb.latex"
1283 },
1284 "7": {
1285 "name": "markup.raw.verb.latex"
1286 },
1287 "8": {
1288 "name": "punctuation.definition.verb.latex"
1289 },
1290 "9": {
1291 "name": "punctuation.definition.verb.latex"
1292 },
1293 "10": {
1294 "name": "markup.raw.verb.latex"
1295 },
1296 "11": {
1297 "name": "punctuation.definition.verb.latex"
1298 }
1299 },
1300 "match": "((\\\\)(?:mint|mintinline))((?:\\[[^\\[]*?\\])?)(\\{)[a-zA-Z]*(\\})(?:(?:([^a-zA-Z\\{])(.*?)(\\6))|(?:(\\{)(.*?)(\\})))",
1301 "name": "meta.function.verb.latex"
1302 },
1303 {
1304 "captures": {
1305 "1": {
1306 "name": "support.function.verb.latex"
1307 },
1308 "2": {
1309 "name": "punctuation.definition.function.latex"
1310 },
1311 "3": {
1312 "patterns": [
1313 {
1314 "include": "#optional-arg"
1315 }
1316 ]
1317 },
1318 "4": {
1319 "name": "punctuation.definition.verb.latex"
1320 },
1321 "5": {
1322 "name": "markup.raw.verb.latex"
1323 },
1324 "6": {
1325 "name": "punctuation.definition.verb.latex"
1326 },
1327 "7": {
1328 "name": "punctuation.definition.verb.latex"
1329 },
1330 "8": {
1331 "name": "markup.raw.verb.latex"
1332 },
1333 "9": {
1334 "name": "punctuation.definition.verb.latex"
1335 }
1336 },
1337 "match": "((\\\\)[a-z]+inline)((?:\\[[^\\[]*?\\])?)(?:(?:([^a-zA-Z\\{])(.*?)(\\4))|(?:(\\{)(.*?)(\\})))",
1338 "name": "meta.function.verb.latex"
1339 },
1340 {
1341 "match": "\\\\(?:newline|pagebreak|clearpage|linebreak|pause)(?:\\b)",
1342 "name": "keyword.control.layout.tex"
1343 },
1344 {
1345 "begin": "\\\\\\(",
1346 "beginCaptures": {
1347 "0": {
1348 "name": "punctuation.definition.string.begin.latex"
1349 }
1350 },
1351 "end": "\\\\\\)",
1352 "endCaptures": {
1353 "0": {
1354 "name": "punctuation.definition.string.end.latex"
1355 }
1356 },
1357 "name": "support.class.math.latex",
1358 "patterns": [
1359 {
1360 "include": "text.tex#math"
1361 },
1362 {
1363 "include": "$base"
1364 }
1365 ]
1366 },
1367 {
1368 "begin": "\\$\\$",
1369 "beginCaptures": {
1370 "0": {
1371 "name": "punctuation.definition.string.begin.latex"
1372 }
1373 },
1374 "end": "\\$\\$",
1375 "endCaptures": {
1376 "0": {
1377 "name": "punctuation.definition.string.end.latex"
1378 }
1379 },
1380 "name": "support.class.math.latex",
1381 "patterns": [
1382 {
1383 "match": "\\\\\\$",
1384 "name": "constant.character.escape.tex"
1385 },
1386 {
1387 "include": "text.tex#math"
1388 },
1389 {
1390 "include": "$base"
1391 }
1392 ]
1393 },
1394 {
1395 "begin": "\\\\\\[",
1396 "beginCaptures": {
1397 "0": {
1398 "name": "punctuation.definition.string.begin.latex"
1399 }
1400 },
1401 "end": "\\\\\\]",
1402 "endCaptures": {
1403 "0": {
1404 "name": "punctuation.definition.string.end.latex"
1405 }
1406 },
1407 "name": "support.class.math.latex",
1408 "patterns": [
1409 {
1410 "include": "text.tex#math"
1411 },
1412 {
1413 "include": "$base"
1414 }
1415 ]
1416 },
1417 {
1418 "captures": {
1419 "1": {
1420 "name": "punctuation.definition.constant.latex"
1421 }
1422 },
1423 "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",
1424 "name": "constant.character.latex"
1425 },
1426 {
1427 "captures": {
1428 "1": {
1429 "name": "punctuation.definition.column-specials.begin.latex"
1430 },
1431 "2": {
1432 "name": "punctuation.definition.column-specials.end.latex"
1433 }
1434 },
1435 "match": "(?:<|>)(\\{)\\$(\\})",
1436 "name": "meta.column-specials.latex"
1437 },
1438 {
1439 "include": "text.tex"
1440 }
1441 ],
1442 "repository": {
1443 "optional-arg": {
1444 "patterns": [
1445 {
1446 "captures": {
1447 "1": {
1448 "name": "punctuation.definition.optional.arguments.begin.latex"
1449 },
1450 "2": {
1451 "name": "variable.parameter.latex"
1452 },
1453 "3": {
1454 "name": "punctuation.definition.optional.arguments.end.latex"
1455 }
1456 },
1457 "match": "(\\[)([^\\[]*?)(\\])"
1458 }
1459 ]
1460 },
1461 "autocites-arg": {
1462 "patterns": [
1463 {
1464 "captures": {
1465 "1": {
1466 "name": "punctuation.definition.arguments.optional.begin.latex"
1467 },
1468 "2": {
1469 "name": "punctuation.definition.arguments.optional.end.latex"
1470 },
1471 "3": {
1472 "name": "punctuation.definition.arguments.optional.begin.latex"
1473 },
1474 "4": {
1475 "name": "punctuation.definition.arguments.optional.end.latex"
1476 },
1477 "5": {
1478 "name": "punctuation.definition.arguments.begin.latex"
1479 },
1480 "6": {
1481 "name": "constant.other.reference.citation.latex"
1482 },
1483 "7": {
1484 "name": "punctuation.definition.arguments.end.latex"
1485 },
1486 "8": {
1487 "patterns": [
1488 {
1489 "include": "#autocites-arg"
1490 }
1491 ]
1492 }
1493 },
1494 "match": "(?:(\\[)[^\\]]*(\\]))?(?:(\\[)[^\\]]*(\\]))?(\\{)([\\w:.]+)(\\})(.*)"
1495 }
1496 ]
1497 },
1498 "minted-env": {
1499 "captures": {
1500 "1": {
1501 "name": "support.function.be.latex"
1502 },
1503 "2": {
1504 "name": "punctuation.definition.function.latex"
1505 },
1506 "3": {
1507 "name": "punctuation.definition.arguments.begin.latex"
1508 },
1509 "4": {
1510 "name": "variable.parameter.function.latex"
1511 },
1512 "5": {
1513 "name": "punctuation.definition.arguments.end.latex"
1514 },
1515 "6": {
1516 "name": "punctuation.definition.arguments.optional.begin.latex"
1517 },
1518 "7": {
1519 "name": "punctuation.definition.arguments.optional.end.latex"
1520 },
1521 "8": {
1522 "name": "punctuation.definition.arguments.begin.latex"
1523 },
1524 "9": {
1525 "name": "variable.parameter.function.latex"
1526 },
1527 "10": {
1528 "name": "punctuation.definition.arguments.end.latex"
1529 }
1530 },
1531 "match": "((\\\\)(?:begin|end))(\\{)(lstlisting|minted|pyglist)(\\})(?:(\\[).*(\\]))?(?:(\\{)([a-z]*)(\\}))?"
1532 },
1533 "code-env": {
1534 "captures": {
1535 "1": {
1536 "name": "support.function.be.latex"
1537 },
1538 "2": {
1539 "name": "punctuation.definition.function.latex"
1540 },
1541 "3": {
1542 "name": "punctuation.definition.arguments.begin.latex"
1543 },
1544 "4": {
1545 "name": "variable.parameter.function.latex"
1546 },
1547 "5": {
1548 "name": "punctuation.definition.arguments.end.latex"
1549 },
1550 "6": {
1551 "name": "punctuation.definition.arguments.optional.begin.latex"
1552 },
1553 "7": {
1554 "name": "punctuation.definition.arguments.optional.end.latex"
1555 }
1556 },
1557 "match": "(?:\\s*)((\\\\)(?:begin|end))(\\{)([a-z]*code(?:\\*)?|gnuplot|dot2tex|asy|sage[a-z]*)(\\})(?:(\\[).*(\\]))?"
1558 },
1559 "definition-label": {
1560 "begin": "((\\\\)label)(\\{)",
1561 "beginCaptures": {
1562 "1": {
1563 "name": "keyword.control.label.latex"
1564 },
1565 "2": {
1566 "name": "punctuation.definition.keyword.latex"
1567 },
1568 "3": {
1569 "name": "punctuation.definition.arguments.begin.latex"
1570 }
1571 },
1572 "end": "\\}",
1573 "endCaptures": {
1574 "0": {
1575 "name": "punctuation.definition.arguments.end.latex"
1576 }
1577 },
1578 "name": "meta.definition.label.latex",
1579 "patterns": [
1580 {
1581 "match": "[a-zA-Z0-9\\.,:/*!^_-]",
1582 "name": "variable.parameter.definition.label.latex"
1583 }
1584 ]
1585 }
1586 },
1587 "scopeName": "text.tex.latex"
1588 }

mercurial