tex.xml

  1<lexer>
  2  <config>
  3    <name>TeX</name>
  4    <alias>tex</alias>
  5    <alias>latex</alias>
  6    <filename>*.tex</filename>
  7    <filename>*.aux</filename>
  8    <filename>*.toc</filename>
  9    <mime_type>text/x-tex</mime_type>
 10    <mime_type>text/x-latex</mime_type>
 11  </config>
 12  <rules>
 13    <state name="displaymath">
 14      <rule pattern="\\\]">
 15        <token type="LiteralString"/>
 16        <pop depth="1"/>
 17      </rule>
 18      <rule pattern="\$\$">
 19        <token type="LiteralString"/>
 20        <pop depth="1"/>
 21      </rule>
 22      <rule pattern="\$">
 23        <token type="NameBuiltin"/>
 24      </rule>
 25      <rule>
 26        <include state="math"/>
 27      </rule>
 28    </state>
 29    <state name="command">
 30      <rule pattern="\[.*?\]">
 31        <token type="NameAttribute"/>
 32      </rule>
 33      <rule pattern="\*">
 34        <token type="Keyword"/>
 35      </rule>
 36      <rule>
 37        <pop depth="1"/>
 38      </rule>
 39    </state>
 40    <state name="general">
 41      <rule pattern="%.*?\n">
 42        <token type="Comment"/>
 43      </rule>
 44      <rule pattern="[{}]">
 45        <token type="NameBuiltin"/>
 46      </rule>
 47      <rule pattern="[&amp;_^]">
 48        <token type="NameBuiltin"/>
 49      </rule>
 50    </state>
 51    <state name="root">
 52      <rule pattern="\\\[">
 53        <token type="LiteralStringBacktick"/>
 54        <push state="displaymath"/>
 55      </rule>
 56      <rule pattern="\\\(">
 57        <token type="LiteralString"/>
 58        <push state="inlinemath"/>
 59      </rule>
 60      <rule pattern="\$\$">
 61        <token type="LiteralStringBacktick"/>
 62        <push state="displaymath"/>
 63      </rule>
 64      <rule pattern="\$">
 65        <token type="LiteralString"/>
 66        <push state="inlinemath"/>
 67      </rule>
 68      <rule pattern="\\([a-zA-Z]+|.)">
 69        <token type="Keyword"/>
 70        <push state="command"/>
 71      </rule>
 72      <rule pattern="\\$">
 73        <token type="Keyword"/>
 74      </rule>
 75      <rule>
 76        <include state="general"/>
 77      </rule>
 78      <rule pattern="[^\\$%&amp;_^{}]+">
 79        <token type="Text"/>
 80      </rule>
 81    </state>
 82    <state name="math">
 83      <rule pattern="\\([a-zA-Z]+|.)">
 84        <token type="NameVariable"/>
 85      </rule>
 86      <rule>
 87        <include state="general"/>
 88      </rule>
 89      <rule pattern="[0-9]+">
 90        <token type="LiteralNumber"/>
 91      </rule>
 92      <rule pattern="[-=!+*/()\[\]]">
 93        <token type="Operator"/>
 94      </rule>
 95      <rule pattern="[^=!+*/()\[\]\\$%&amp;_^{}0-9-]+">
 96        <token type="NameBuiltin"/>
 97      </rule>
 98    </state>
 99    <state name="inlinemath">
100      <rule pattern="\\\)">
101        <token type="LiteralString"/>
102        <pop depth="1"/>
103      </rule>
104      <rule pattern="\$">
105        <token type="LiteralString"/>
106        <pop depth="1"/>
107      </rule>
108      <rule>
109        <include state="math"/>
110      </rule>
111    </state>
112  </rules>
113</lexer>