1<?xml version="1.0"?>
2<!--
3
4 This file is part of GtkSourceView
5
6 Copyright (C) 2005-2007 - Marco Barisione <barisione@gmail.com>
7 Copyright (C) 2012-2013 - Tobias Marczewski <tmarczewski@ed-alumni.net>
8 Copyright (C) 2013, 2016 - Sébastien Wilmet <swilmet@gnome.org>
9
10 GtkSourceView is free software; you can redistribute it and/or
11 modify it under the terms of the GNU Lesser General Public
12 License as published by the Free Software Foundation; either
13 version 2.1 of the License, or (at your option) any later version.
14
15 GtkSourceView is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18 Lesser General Public License for more details.
19
20 You should have received a copy of the GNU Lesser General Public License
21 along with this library; if not, see <http://www.gnu.org/licenses/>.
22
23-->
24<language id="latex" name="LaTeX" version="2.0" _section="Markup">
25  <metadata>
26    <property name="mimetypes">text/x-tex</property>
27    <property name="globs">*.tex;*.ltx;*.sty;*.cls;*.dtx;*.ins;*.bbl</property>
28    <property name="line-comment-start">%</property>
29  </metadata>
30
31  <styles>
32    <style id="comment"            name="Comment"              map-to="def:comment"/>
33    <style id="display-math"       name="Math Mode"            map-to="def:string"/>
34    <style id="inline-math"        name="Inline Math Mode"     map-to="latex:display-math"/>
35    <style id="math"               name="Math Mode"            map-to="latex:display-math"/>
36    <style id="math-boundary"      name="Math Boundary"        map-to="latex:display-math"/>
37    <style id="include"            name="Include"              map-to="def:keyword"/>
38    <style id="common-commands"    name="Command"              map-to="def:keyword"/>
39    <style id="command"            name="Command"              map-to="def:keyword"/>
40    <style id="verbatim"           name="Verbatim"             map-to="def:comment"/>
41    <style id="special-char"       name="Special Character"    map-to="def:special-char"/>
42    <style id="part"               name="Part Heading"          map-to="def:heading0"/>
43    <style id="chapter"            name="Chapter Heading"       map-to="def:heading1"/>
44    <style id="section"            name="Section Heading"       map-to="def:heading2"/>
45    <style id="subsection"         name="SubSection Heading"    map-to="def:heading3"/>
46    <style id="subsubsection"      name="SubSubSection Heading" map-to="def:heading4"/>
47    <style id="paragraph"          name="Paragraph Heading"     map-to="def:heading5"/>
48    <style id="subparagraph"       name="SubParagraph Heading"  map-to="def:heading6"/>
49  </styles>
50
51  <definitions>
52
53    <!-- comment -->
54
55    <context id="comment">
56      <include>
57        <context id="end-line-comment" style-ref="comment">
58          <start>%</start>
59          <end>$</end>
60          <include>
61            <context ref="def:in-comment"/>
62          </include>
63        </context>
64
65        <context id="comment-env" style-ref="comment" class="no-spell-check">
66          <start>\\begin\{comment\}</start>
67          <end>\\end\{comment\}</end>
68          <include>
69            <context ref="def:in-comment"/>
70          </include>
71        </context>
72      </include>
73    </context>
74
75    <!-- verbatim -->
76
77    <context id="verbatim-env" style-inside="true" style-ref="verbatim" class-disabled="no-spell-check">
78      <start>(\\begin)\{(verbatim\*?|alltt)\}</start>
79      <end>(\\end)\{(\%{2@start})\}</end>
80      <include>
81        <context sub-pattern="1" where="start" style-ref="common-commands" class="no-spell-check"/>
82        <context sub-pattern="1" where="end" style-ref="common-commands" class="no-spell-check"/>
83        <context sub-pattern="2" where="start" class="no-spell-check"/>
84        <context sub-pattern="2" where="end" class="no-spell-check"/>
85      </include>
86    </context>
87
88    <context id="lstlisting-env" style-inside="true" style-ref="verbatim" class="no-spell-check">
89      <start>(\\begin)\{lstlisting\}</start>
90      <end>(\\end)\{lstlisting\}</end>
91      <include>
92        <context sub-pattern="1" where="start" style-ref="common-commands"/>
93        <context sub-pattern="1" where="end" style-ref="common-commands"/>
94      </include>
95    </context>
96
97    <!-- Embedded R Code (Sweave package) -->
98
99    <context id="R-block" class="no-spell-check">
100      <start>(\\begin)\{(Scode|Sinput|Soutput)\}</start>
101      <end>(\\end)\{\%{2@start}\}</end>
102      <include>
103        <context sub-pattern="1" where="start" style-ref="common-commands"/>
104        <context sub-pattern="1" where="end" style-ref="common-commands"/>
105        <context ref="r:r"/>
106      </include>
107    </context>
108
109    <!--
110        Examples: \url{http://google.de}, \href{http://google.de}{Google}
111
112        Supports also urls with math symbols: \url{https://example.com/$test}
113    -->
114    <context id="urls">
115      <include>
116        <context ref="url-command"/>
117        <context ref="href-command"/>
118      </include>
119    </context>
120
121    <context id="url-command" class="no-spell-check">
122      <match extended="true">
123        (\\url)            # url command.
124        \{                 # Literal opening braces.
125          [ \t]*           # Optional spaces or tabs after the opening braces.
126          .*?              # URL
127          [ \t]*           # Optional spaces or tabs before the closing braces.
128        \}                 # closing url command.
129      </match>
130
131      <include>
132        <context sub-pattern="1" style-ref="command"/>
133      </include>
134    </context>
135
136    <context id="href-command">
137      <match extended="true">
138        (\\href)           # url command.
139        \{(                # Literal opening braces.
140          [ \t]*           # Optional spaces or tabs after the opening braces.
141          .*?              # URL
142          [ \t]*           # Optional spaces or tabs before the closing braces.
143        )\}                # closing url command.
144        \{(.*?)\}          # link text
145      </match>
146
147      <include>
148        <context sub-pattern="1" class="no-spell-check" style-ref="command"/>
149        <context sub-pattern="2" class="no-spell-check"/>
150      </include>
151    </context>
152
153    <!--using brackets is an experimental feature from the listings package. The
154        following must support these cases:
155
156          \lstinline[]{code in here}
157          \lstinline[key=val, key=val]{code in here}
158          \lstinline[key=val, key=val]!code in here!
159          \lstinline[]!code in here!
160          \lstinline[][code in here[
161          \lstinline[NOT code in here, must specify empty optional argument to use square brackets[
162          \lstinline{code in here}
163          \lstinline{code in {here} but NOT in here}  % brackets do not nest
164          \lstinline!code in here!
165          \lstinline=code in here=
166          \lstinline{this needs to fail{
167
168          If using \verb instead of \lstinline, the brackets cannot be used
169        -->
170    <context id="lstinline-curly-brackets" style-inside="true" style-ref="verbatim" class="no-spell-check">
171      <start>(\\lstinline)(\[.*?\])?{</start>
172      <end>}</end>
173      <include>
174        <context sub-pattern="1" where="start" style-ref="command"/>
175      </include>
176    </context>
177
178    <context id="lstinline-square-brackets" style-inside="true" style-ref="verbatim" class="no-spell-check">
179      <!-- square brackets don't match with the pair, and they require an
180           optional argument, even if empty -->
181      <start>(\\lstinline)(\[.*?\])\[</start>
182      <end>\[</end>
183      <include>
184        <context sub-pattern="1" where="start" style-ref="command"/>
185      </include>
186    </context>
187
188    <context id="lstinline" style-inside="true" style-ref="verbatim" class="no-spell-check">
189      <start>(\\lstinline)(\[.*?\])?((?!\[)\S)</start>  <!-- ignore when starting with [ -->
190      <end>\%{3@start}</end>
191      <include>
192        <context sub-pattern="1" where="start" style-ref="command"/>
193      </include>
194    </context>
195
196    <!-- If using \verb instead of \lstinline, the brackets cannot be used -->
197    <context id="verbatim-inline" style-inside="true" style-ref="verbatim" class-disabled="no-spell-check">
198      <start>(\\verb)\*?(\S)</start>
199      <end>\%{2@start}</end>
200      <include>
201        <context sub-pattern="1" where="start" style-ref="command" class="no-spell-check"/>
202      </include>
203    </context>
204
205    <context id="verbatim">
206      <include>
207        <context ref="verbatim-env"/>
208        <context ref="lstlisting-env"/>
209        <context ref="verbatim-inline"/>
210        <context ref="lstinline-curly-brackets"/>
211        <context ref="lstinline-square-brackets"/>
212        <context ref="lstinline"/>
213      </include>
214    </context>
215
216    <!-- commands -->
217
218    <context id="common-commands" style-ref="common-commands" class="no-spell-check">
219      <prefix>\\</prefix>
220      <!-- We need to special case "_" since it is not considered a
221        boundary but it is allowed in latex -->
222      <suffix>(\b|(?=_))</suffix>
223      <keyword>Alpha</keyword>
224      <keyword>Beta</keyword>
225      <keyword>Chi</keyword>
226      <keyword>Delta</keyword>
227      <keyword>Epsilon</keyword>
228      <keyword>Eta</keyword>
229      <keyword>Gamma</keyword>
230      <keyword>Iota</keyword>
231      <keyword>Kappa</keyword>
232      <keyword>Lambda</keyword>
233      <keyword>Leftarrow</keyword>
234      <keyword>Leftrightarrow</keyword>
235      <keyword>Mu</keyword>
236      <keyword>Nu</keyword>
237      <keyword>Omega</keyword>
238      <keyword>Phi</keyword>
239      <keyword>Pi</keyword>
240      <keyword>Psi</keyword>
241      <keyword>Rho</keyword>
242      <keyword>Rightarrow</keyword>
243      <keyword>Sigma</keyword>
244      <keyword>Tau</keyword>
245      <keyword>Zeta</keyword>
246      <keyword>alpha</keyword>
247      <keyword>appendix</keyword>
248      <keyword>begin</keyword>
249      <keyword>beta</keyword>
250      <keyword>bigcap</keyword>
251      <keyword>bigcup</keyword>
252      <keyword>cap</keyword>
253      <keyword>cdot</keyword>
254      <keyword>chapter</keyword>
255      <keyword>chi</keyword>
256      <keyword>cite</keyword>
257      <keyword>cup</keyword>
258      <keyword>delta</keyword>
259      <keyword>documentclass</keyword>
260      <keyword>end</keyword>
261      <keyword>enumi</keyword>
262      <keyword>enumii</keyword>
263      <keyword>enumiii</keyword>
264      <keyword>enumiv</keyword>
265      <keyword>epsilon</keyword>
266      <keyword>equation</keyword>
267      <keyword>eta</keyword>
268      <keyword>exists</keyword>
269      <keyword>figure</keyword>
270      <keyword>footnote</keyword>
271      <keyword>footnotemark</keyword>
272      <keyword>footnotetext</keyword>
273      <keyword>forall</keyword>
274      <keyword>gamma</keyword>
275      <keyword>geq</keyword>
276      <keyword>in</keyword>
277      <keyword>int</keyword>
278      <keyword>iota</keyword>
279      <keyword>kappa</keyword>
280      <keyword>label</keyword>
281      <keyword>lambda</keyword>
282      <keyword>ldots</keyword>
283      <keyword>leftarrow</keyword>
284      <keyword>leq</keyword>
285      <keyword>mpfootnote</keyword>
286      <keyword>mu</keyword>
287      <keyword>neq</keyword>
288      <keyword>newcommand</keyword>
289      <keyword>newenvironment</keyword>
290      <keyword>newfont</keyword>
291      <keyword>newtheorem</keyword>
292      <keyword>not</keyword>
293      <keyword>notin</keyword>
294      <keyword>nu</keyword>
295      <keyword>omega</keyword>
296      <keyword>onecolumn</keyword>
297      <keyword>page</keyword>
298      <keyword>pageref</keyword>
299      <keyword>paragraph</keyword>
300      <keyword>part</keyword>
301      <keyword>phi</keyword>
302      <keyword>pi</keyword>
303      <keyword>prod</keyword>
304      <keyword>psi</keyword>
305      <keyword>qquad</keyword>
306      <keyword>quad</keyword>
307      <keyword>ref</keyword>
308      <keyword>rho</keyword>
309      <keyword>rightarrow</keyword>
310      <keyword>section</keyword>
311      <keyword>setminus</keyword>
312      <keyword>sigma</keyword>
313      <keyword>subparagraph</keyword>
314      <keyword>subsection</keyword>
315      <keyword>subset</keyword>
316      <keyword>subseteq</keyword>
317      <keyword>subsetneq</keyword>
318      <keyword>subsubsection</keyword>
319      <keyword>subsubsubsection</keyword>
320      <keyword>sum</keyword>
321      <keyword>supset</keyword>
322      <keyword>supseteq</keyword>
323      <keyword>supsetneq</keyword>
324      <keyword>table</keyword>
325      <keyword>tau</keyword>
326      <keyword>times</keyword>
327      <keyword>twocolumn</keyword>
328      <keyword>varepsilon</keyword>
329      <keyword>varphi</keyword>
330      <keyword>zeta</keyword>
331    </context>
332
333    <context id="generic-command" style-ref="command" class="no-spell-check" extend-parent="false">
334      <match>\\\@?[[:alnum:]]+\*?</match>
335    </context>
336
337    <context id="specific-commands">
338      <include>
339        <context id="documentclass" class="no-spell-check">
340          <match>(\\documentclass)(\[.*\])?(\{.*\})?</match>
341          <include>
342            <context sub-pattern="1" style-ref="common-commands"/>
343          </include>
344        </context>
345
346        <context id="include" class="no-spell-check">
347          <match>(\\(input|include|includeonly|usepackage))\b(\[.*\])?(\{.*\})?</match>
348          <include>
349            <context sub-pattern="1" style-ref="include"/>
350          </include>
351        </context>
352
353        <context id="begin-end-command" class="no-spell-check">
354          <match>(\\(begin|end))\{.*\}</match>
355          <include>
356            <context sub-pattern="1" style-ref="common-commands"/>
357          </include>
358        </context>
359      </include>
360    </context>
361
362    <!-- special characters -->
363
364    <define-regex id="accents" extended="true">
365      (\\(                                      #leading backslash
366         (                                      #1-Accents-
367          [bcdHruv\.\^'`~"=]                    #  accent symbol
368          \s*\{([a-zA-Z] | \\i | \\j)\} |       #  letter (\i \j for i,j without dot)
369          [\.\^'`~"=]\s*([a-zA-Z] | \\i | \\j) |#  non-letter accents without braces
370          t\s*\{([a-zA-Z] | \\i | \\j){2}\}     #  special accent over two letters
371         ) | (                                  #2-Special letters-
372          (aa|AA | ae|AE | oe|OE | ss|SS |      #  letters followed by a non-word
373          [oO] | [lL])(?![a-zA-Z_@])            #  character or e.g. \l causes
374         )                                      #  unwanted behaviour (i.e. \label)
375        )) | (!` | \?`)                         #3-Spanish punctuation
376    </define-regex>
377
378    <context id="special-char">
379      <include>
380        <!-- Include accents here before the escaped command symbols because for
381             example the hat (^) can be used as an accent and will be placed over
382             the following letter (e.g. \^o will NOT produce ^o) -->
383        <context id="accents" style-ref="special-char" class="no-spell-check">
384          <match>\%{accents}</match>
385        </context>
386
387        <context id="special-symbols" style-ref="special-char" class="no-spell-check">
388          <prefix>\\</prefix>
389          <suffix></suffix>
390
391          <keyword>\$</keyword>
392          <keyword>&amp;</keyword>
393          <keyword>%</keyword>
394          <keyword>#</keyword>
395          <keyword>_</keyword>
396          <keyword>\{</keyword>
397          <keyword>\}</keyword>
398          <keyword>~</keyword>
399          <keyword>\^</keyword>
400          <keyword>\\</keyword>
401        </context>
402      </include>
403    </context>
404
405    <!-- headings -->
406
407    <context id="curly-braces-pair">
408      <start>\{</start>
409      <end>\}</end>
410      <include>
411        <context ref="curly-braces-pair"/>
412        <context ref="latex"/>
413      </include>
414    </context>
415
416    <context id="headings">
417      <include>
418        <context id="part" style-inside="true" style-ref="part" end-at-line-end="true" class-disabled="no-spell-check">
419          <start>(\\part\*?)\{</start>
420          <end>\}</end>
421          <include>
422            <context sub-pattern="1" where="start" style-ref="common-commands" class="no-spell-check"/>
423            <context ref="curly-braces-pair"/>
424            <context ref="latex"/>
425          </include>
426        </context>
427
428        <context id="chapter" style-inside="true" style-ref="chapter" end-at-line-end="true" class-disabled="no-spell-check">
429          <start>(\\chapter\*?)\{</start>
430          <end>\}</end>
431          <include>
432            <context sub-pattern="1" where="start" style-ref="common-commands" class="no-spell-check"/>
433            <context ref="curly-braces-pair"/>
434            <context ref="latex"/>
435          </include>
436        </context>
437
438        <context id="section" style-inside="true" style-ref="section" end-at-line-end="true" class-disabled="no-spell-check">
439          <start>(\\section\*?)\{</start>
440          <end>\}</end>
441          <include>
442            <context sub-pattern="1" where="start" style-ref="common-commands" class="no-spell-check"/>
443            <context ref="curly-braces-pair"/>
444            <context ref="latex"/>
445          </include>
446        </context>
447
448        <context id="subsection" style-inside="true" style-ref="subsection" end-at-line-end="true" class-disabled="no-spell-check">
449          <start>(\\subsection\*?)\{</start>
450          <end>\}</end>
451          <include>
452            <context sub-pattern="1" where="start" style-ref="common-commands" class="no-spell-check"/>
453            <context ref="curly-braces-pair"/>
454            <context ref="latex"/>
455          </include>
456        </context>
457
458        <context id="subsubsection" style-inside="true" style-ref="subsubsection" end-at-line-end="true" class-disabled="no-spell-check">
459          <start>(\\subsubsection\*?)\{</start>
460          <end>\}</end>
461          <include>
462            <context sub-pattern="1" where="start" style-ref="common-commands" class="no-spell-check"/>
463            <context ref="curly-braces-pair"/>
464            <context ref="latex"/>
465          </include>
466        </context>
467
468        <context id="paragraph" style-inside="true" style-ref="paragraph" end-at-line-end="true" class-disabled="no-spell-check">
469          <start>(\\paragraph\*?)\{</start>
470          <end>\}</end>
471          <include>
472            <context sub-pattern="1" where="start" style-ref="common-commands" class="no-spell-check"/>
473            <context ref="curly-braces-pair"/>
474            <context ref="latex"/>
475          </include>
476        </context>
477
478        <context id="subparagraph" style-inside="true" style-ref="subparagraph" end-at-line-end="true" class-disabled="no-spell-check">
479          <start>(\\subparagraph\*?)\{</start>
480          <end>\}</end>
481          <include>
482            <context sub-pattern="1" where="start" style-ref="common-commands" class="no-spell-check"/>
483            <context ref="curly-braces-pair"/>
484            <context ref="latex"/>
485          </include>
486        </context>
487      </include>
488    </context>
489
490    <!-- math -->
491
492    <!-- Commands exclusive to math mode -->
493    <context id="math-command" class="no-spell-check" style-ref="common-commands">
494      <match extended="true">
495        \\(
496          frac | sqrt | sum | (co)?prod | o?int |           #-Functions
497          infty | (c|d|v)dots | nonumber |                  #-special in math mode
498          mathnormal | math(rm|sf|tt|it|bf|cal) |           #-Math font commands
499          (display|text|script(script)?)style |             #-Math size commands
500          alpha | beta | (g|G)amma | (d|D)elta |            #-Greek letters
501          (var)?epsilon | zeta | eta | ((vart)|t|T)heta |   ##
502          iota | kappa | (l|L)ambda | mu | nu | (x|X)i |    ##
503          ((varp)|p|P)i | (var)?rho | ((vars)|s|S)igma |    ##
504          tau | (u|U)psilon | ((varp)|p|P)hi | chi |        ##
505          (p|P)si | (o|O)mega |                             ##
506          pm | mp | times | div | cdot | ast | star |       #-Binary operators
507          dd?agger | amalg | (sq)?c(a|u)p | uplus | vee |   ##
508          wedge | o(plus|minus|times) | (big)?circ |        ##
509          bullet | (d|D)iamond | (un)?(l|r)hd |             ##
510          o(slash|dot) | Box | bigtriangle(up|down) |       ##
511          triangle(left|right) | setminus | wr |            ##
512          gets | to | ((u|U)p(down)? | (d|D)own)arrow |     #-Arrows and pointers
513          ((l|L)eft(right)?|(r|R)ight)arrow | (long)mapsto |##
514          hook(left|right)arrow | (ne|se|sw|nw)arrow |      ##
515          (left|right)harpoon(up|down) | rightleftharpoons |##
516          (l|L)ong(left(right)?|right)arrow |               ##
517          (wide)hat | check | dd?ot | breve | acute |       #-Accents in math mode
518          grave | bar | vec | (wide)tilde | mathring |      ##
519          (over|under)(line|brace) | (i|j)math |            ##i, j  dots removed
520          (arc)?(cosh?|sinh?|tanh?) | arg | coth? | csc |   #-Function names
521          deg | det | dim | exp | gcd | hom | inf | ker |   ##
522          lg | lim(inf|sup)? | ln | log | max | min | Pr |  ##
523          sec | sup                                         ##
524        )(?=\b)
525      </match>
526    </context>
527
528    <context id="math-spacing" style-ref="special-char">
529      <match>\\[;:!]</match>
530    </context>
531
532    <context id="math-brackets" style-ref="common-commands">
533      <match extended="true">
534        \\(left | right | [bB]igg?[lr])  (      # bracket size specifier
535          \(|\) | \[|\] | \\\{|\\\}   |         # normal brackets (curly escaped)
536          \|  |  \\\|  |  /  |  \\backslash |   # pipe and slashes
537          \\(                                   #-symbol commands
538            [lr]floor | [lr]ceil | [lr]angle |  ##
539            ([uU]p(down)?|[dD]own)arrow         ##
540          )                                     ##
541        )
542      </match>
543    </context>
544
545    <context id="math-super-sub-script" style-ref="common-commands">
546      <match>\^|_</match>
547    </context>
548
549    <context id="in-math" class="no-spell-check">
550      <include>
551        <context ref="comment"/>
552        <context ref="math-command"/>
553        <context ref="math-spacing"/>
554        <context ref="math-brackets"/>
555        <context ref="special-char"/>
556        <context ref="math-super-sub-script"/>
557        <context ref="generic-command"/>
558      </include>
559    </context>
560
561    <context id="math-1" style-ref="math" class="no-spell-check">
562      <start>\$\$</start>
563      <end>\$\$</end>
564      <include>
565        <context sub-pattern="0" where="start" style-ref="math-boundary"/>
566        <context sub-pattern="0" where="end" style-ref="math-boundary"/>
567        <context ref="in-math"/>
568      </include>
569    </context>
570
571    <context id="math-2" style-ref="math" class="no-spell-check">
572      <start>\\\[</start>
573      <end>\\\]</end>
574      <include>
575        <context sub-pattern="0" where="start" style-ref="math-boundary"/>
576        <context sub-pattern="0" where="end" style-ref="math-boundary"/>
577        <context ref="in-math"/>
578      </include>
579    </context>
580
581    <context id="math-env" style-ref="math" style-inside="true" class="no-spell-check">
582      <start>(\\begin)\{(math|displaymath|equation\*?|align\*?|eqnarray\*?)\}</start>
583      <end>(\\end)\{\%{2@start}\}</end>
584      <include>
585        <context sub-pattern="1" where="start" style-ref="common-commands"/>
586        <context sub-pattern="1" where="end" style-ref="common-commands"/>
587        <context ref="in-math"/>
588      </include>
589    </context>
590
591    <context id="inline-math-1" style-ref="inline-math" class="no-spell-check">
592      <start>\$</start>
593      <end>\$</end>
594      <include>
595        <context sub-pattern="0" where="start" style-ref="math-boundary"/>
596        <context sub-pattern="0" where="end" style-ref="math-boundary"/>
597        <context ref="in-math"/>
598      </include>
599    </context>
600
601    <context id="inline-math-2" style-ref="inline-math" class="no-spell-check">
602      <start>\\\(</start>
603      <end>\\\)</end>
604      <include>
605        <context sub-pattern="0" where="start" style-ref="math-boundary"/>
606        <context sub-pattern="0" where="end" style-ref="math-boundary"/>
607        <context ref="in-math"/>
608      </include>
609    </context>
610
611    <context id="math">
612      <include>
613        <context ref="math-1"/>
614        <context ref="math-2"/>
615        <context ref="math-env"/>
616        <context ref="inline-math-1"/>
617        <context ref="inline-math-2"/>
618      </include>
619    </context>
620
621    <context id="latex">
622      <include>
623        <context ref="comment"/>
624        <context ref="verbatim"/>
625        <context ref="R-block"/>
626        <context ref="headings"/>
627        <context ref="math"/>
628        <context ref="urls"/>
629        <context ref="specific-commands"/>
630        <context ref="common-commands"/>
631        <context ref="special-char"/>
632        <context ref="generic-command"/>
633      </include>
634    </context>
635  </definitions>
636</language>
637