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>