blob: 2e2bb3171fdc0a6efbfcc6c293fb89d2cae1738d [file] [log] [blame]
Bram Moolenaard2cec5b2006-03-28 21:08:56 +00001" Vim syntax file
2" Language: TeX (plain.tex format)
3" Maintainer: Nikolai Weibull <now@bitwi.se>
Bram Moolenaar8424a622006-04-19 21:23:36 +00004" Latest Revision: 2006-04-19
Bram Moolenaard2cec5b2006-03-28 21:08:56 +00005
6if exists("b:current_syntax")
7 finish
8endif
9
10let s:cpo_save = &cpo
11set cpo&vim
12
13syn match plaintexControlSequence display contains=@NoSpell
14 \ '\\[a-zA-Z@]\+'
15
Bram Moolenaar8424a622006-04-19 21:23:36 +000016runtime! syntax/initex.vim
Bram Moolenaard2cec5b2006-03-28 21:08:56 +000017
18syn match plaintexComment display
Bram Moolenaar8424a622006-04-19 21:23:36 +000019 \ contains=ALLBUT,initexComment,plaintexComment
Bram Moolenaard2cec5b2006-03-28 21:08:56 +000020 \ '^\s*%[CDM].*$'
21
22if exists("g:plaintex_delimiters")
23 syn match plaintexDelimiter display '[][{}]'
24endif
25
26syn match plaintexRepeat display contains=@NoSpell
27 \ '\\\%(loop\|repeat\)\>'
28
29syn match plaintexCommand display contains=@NoSpell
30 \ '\\\%(plainoutput\|TeX\)\>'
31syn match plaintexBoxCommand display contains=@NoSpell
32 \ '\\\%(null\|strut\)\>'
33syn match plaintexCharacterCommand display contains=@NoSpell
34 \ /\\\%(["#$%&'.=^_`~]\|``\|''\|-\{2,3}\|[?!]`\|^^L\|\~\|\%(a[ae]\|A[AE]\|acute\|[cdHoOPStuvijlL]\|copyright\|d\=dag\|folio\|ldotp\|[lr]q\|oe\|OE\|slash\|ss\|underbar\)\>\)/
35syn match plaintexDebuggingCommand display contains=@NoSpell
36 \ '\\\%(showhyphens\|tracingall\|wlog\)\>'
37syn match plaintexFontsCommand display contains=@NoSpell
38 \ '\\\%(bf\|\%(five\|seven\)\%(bf\|i\|rm\|sy\)\|it\|oldstyle\|rm\|sl\|ten\%(bf\|ex\|it\=\|rm\|sl\|sy\|tt\)\|tt\)\>'
39syn match plaintexGlueCommand display contains=@NoSpell
40 \ '\\\%(\%(big\|en\|med\|\%(no\|off\)interline\|small\)skip\|\%(center\|left\|right\)\=line\|\%(dot\|\%(left\|right\)arrow\)fill\|[hv]glue\|[lr]lap\|q\=quad\|space\|topglue\)\>'
41syn match plaintexInsertsCommand display contains=@NoSpell
42 \ '\\\%(\%(end\|top\)insert\|v\=footnote\)\>'
43syn match plaintexJobCommand display contains=@NoSpell
44 \ '\\\%(bye\|fmt\%(name\|version\)\)\>'
45syn match plaintexInsertsCommand display contains=@NoSpell
46 \ '\\\%(mid\|page\)insert\>'
47syn match plaintexKernCommand display contains=@NoSpell
48 \ '\\\%(en\|\%(neg\)\=thin\)space\>'
49syn match plaintexMacroCommand display contains=@NoSpell
50 \ '\\\%(active\|[be]group\|empty\)\>'
51syn match plaintexPageCommand display contains=@NoSpell
52 \ '\\\%(\%(super\)\=eject\|nopagenumbers\|\%(normal\|ragged\)bottom\)\>'
53syn match plaintexParagraphCommand display contains=@NoSpell
54 \ '\\\%(endgraf\|\%(non\)\=frenchspacing\|hang\|item\%(item\)\=\|narrower\|normalbaselines\|obey\%(lines\|spaces\)\|openup\|proclaim\|\%(tt\)\=raggedright\|textindent\)\>'
55syn match plaintexPenaltiesCommand display contains=@NoSpell
56 \ '\\\%(allow\|big\|fil\|good\|med\|no\|small\)\=break\>'
57syn match plaintexRegistersCommand display contains=@NoSpell
58 \ '\\\%(advancepageno\|new\%(box\|count\|dimen\|fam\|help\|if\|insert\|language\|muskip\|read\|skip\|toks\|write\)\)\>'
59syn match plaintexTablesCommand display contains=@NoSpell
60 \ '&\|\\+\|\\\%(cleartabs\|endline\|hidewidth\|ialign\|multispan\|settabs\|tabalign\)\>'
61
Bram Moolenaar8424a622006-04-19 21:23:36 +000062if !exists("g:plaintex_no_math")
63 syn region plaintexMath matchgroup=plaintexMath
Bram Moolenaard2cec5b2006-03-28 21:08:56 +000064 \ contains=@plaintexMath
65 \ start='\$' skip='\\\\\|\\\$' end='\$'
Bram Moolenaar8424a622006-04-19 21:23:36 +000066 syn region plaintexMath matchgroup=plaintexMath
Bram Moolenaard2cec5b2006-03-28 21:08:56 +000067 \ contains=@plaintexMath keepend
68 \ start='\$\$' skip='\\\\\|\\\$' end='\$\$'
Bram Moolenaar8424a622006-04-19 21:23:36 +000069endif
Bram Moolenaard2cec5b2006-03-28 21:08:56 +000070
71syn cluster plaintexMath
72 \ contains=plaintexMathCommand,plaintexMathBoxCommand,
73 \ plaintexMathCharacterCommand,plaintexMathDelimiter,
74 \ plaintexMathFontsCommand,plaintexMathLetter,plaintexMathSymbol,
75 \ plaintexMathFunction,plaintexMathOperator,plaintexMathPunctuation,
76 \ plaintexMathRelation
77
78syn match plaintexMathCommand display contains=@NoSpell contained
79 \ '\\\%([!*,;>{}|_^]\|\%([aA]rrowvert\|[bB]ig\%(g[lmr]\=\|r\)\=\|\%(border\|p\)\=matrix\|displaylines\|\%(down\|up\)bracefill\|eqalign\%(no\)\|leqalignno\|[lr]moustache\|mathpalette\|root\|s[bp]\|skew\|sqrt\)\>\)'
80syn match plaintexMathBoxCommand display contains=@NoSpell contained
81 \ '\\\%([hv]\=phantom\|mathstrut\|smash\)\>'
82syn match plaintexMathCharacterCommand display contains=@NoSpell contained
83 \ '\\\%(b\|bar\|breve\|check\|d\=dots\=\|grave\|hat\|[lv]dots\|tilde\|vec\|wide\%(hat\|tilde\)\)\>'
84syn match plaintexMathDelimiter display contains=@NoSpell contained
85 \ '\\\%(brace\%(vert\)\=\|brack\|cases\|choose\|[lr]\%(angle\|brace\|brack\|ceil\|floor\|group\)\|over\%(brace\|\%(left\|right\)arrow\)\|underbrace\)\>'
86syn match plaintexMathFontsCommand display contains=@NoSpell contained
87 \ '\\\%(\%(bf\|it\|sl\|tt\)fam\|cal\|mit\)\>'
88syn match plaintexMathLetter display contains=@NoSpell contained
89 \ '\\\%(aleph\|alpha\|beta\|chi\|[dD]elta\|ell\|epsilon\|eta\|[gG]amma\|[ij]math\|iota\|kappa\|[lL]ambda\|[mn]u\|[oO]mega\|[pP][hs]\=i\|rho\|[sS]igma\|tau\|[tT]heta\|[uU]psilon\|var\%(epsilon\|ph\=i\|rho\|sigma\|theta\)\|[xX]i\|zeta\)\>'
90syn match plaintexMathSymbol display contains=@NoSpell contained
91 \ '\\\%(angle\|backslash\|bot\|clubsuit\|emptyset\|epsilon\|exists\|flat\|forall\|hbar\|heartsuit\|Im\|infty\|int\|lnot\|nabla\|natural\|neg\|pmod\|prime\|Re\|sharp\|smallint\|spadesuit\|surd\|top\|triangle\%(left\|right\)\=\|vdash\|wp\)\>'
92syn match plaintexMathFunction display contains=@NoSpell contained
93 \ '\\\%(arc\%(cos\|sin\|tan\)\|arg\|\%(cos\|sin\|tan\)h\=\|coth\=\|csc\|de[gt]\|dim\|exp\|gcd\|hom\|inf\|ker\|lo\=g\|lim\%(inf\|sup\)\=\|ln\|max\|min\|Pr\|sec\|sup\)\>'
94syn match plaintexMathOperator display contains=@NoSpell contained
95 \ '\\\%(amalg\|ast\|big\%(c[au]p\|circ\|o\%(dot\|plus\|times\|sqcup\)\|triangle\%(down\|up\)\|uplus\|vee\|wedge\|bmod\|bullet\)\|c[au]p\|cdot[ps]\=\|circ\|coprod\|d\=dagger\|diamond\%(suit\)\=\|div\|land\|lor\|mp\|o\%(dot\|int\|minus\|plus\|slash\|times\)pm\|prod\|setminus\|sqc[au]p\|sqsu[bp]seteq\|star\|su[bp]set\%(eq\)\=\|sum\|times\|uplus\|vee\|wedge\|wr\)\>'
96syn match plaintexMathPunctuation display contains=@NoSpell contained
97 \ '\\\%(colon\)\>'
98syn match plaintexMathRelation display contains=@NoSpell contained
99 \ '\\\%(approx\|asymp\|bowtie\|buildrel\|cong\|dashv\|doteq\|[dD]ownarrow\|equiv\|frown\|geq\=\|gets\|gg\|hook\%(left\|right\)arrow\|iff\|in\|leq\=\|[lL]eftarrow\|\%(left\|right\)harpoon\%(down\|up\)\|[lL]eftrightarrow\|ll\|[lL]ongleftrightarrow\|longmapsto\|[lL]ongrightarrow\|mapsto\|mid\|models\|[ns][ew]arrow\|neq\=\|ni\|not\%(in\)\=\|owns\|parallel\|perp\|prec\%(eq\)\=\|propto\|[rR]ightarrow\|rightleftharpoons\|sim\%(eq\)\=\|smile\|succ\%(eq\)\=\|to\|[uU]parrow\|[uU]pdownarrow\|[vV]ert\)\>'
100
101syn match plaintexParameterDimen display contains=@NoSpell
102 \ '\\maxdimen\>'
103syn match plaintexMathParameterDimen display contains=@NoSpell
104 \ '\\jot\>'
105syn match plaintexParagraphParameterGlue display contains=@NoSpell
106 \ '\\\%(\%(big\|med\|small\)skipamount\|normalbaselineskip\|normallineskip\%(limit\)\=\)\>'
107
108syn match plaintexFontParameterInteger display contains=@NoSpell
109 \ '\\magstep\%(half\)\=\>'
110syn match plaintexJobParameterInteger display contains=@NoSpell
111 \ '\\magnification\>'
112syn match plaintexPageParameterInteger display contains=@NoSpell
113 \ '\\pageno\>'
114
115syn match plaintexPageParameterToken display contains=@NoSpell
116 \ '\\\%(foot\|head\)line\>'
117
118hi def link plaintexOperator Operator
119
120hi def link plaintexDelimiter Delimiter
121
122hi def link plaintexControlSequence Identifier
123hi def link plaintexComment Comment
124hi def link plaintexInclude Include
125hi def link plaintexRepeat Repeat
126
Bram Moolenaar8424a622006-04-19 21:23:36 +0000127hi def link plaintexCommand initexCommand
Bram Moolenaard2cec5b2006-03-28 21:08:56 +0000128hi def link plaintexBoxCommand plaintexCommand
Bram Moolenaar8424a622006-04-19 21:23:36 +0000129hi def link plaintexCharacterCommand initexCharacterCommand
130hi def link plaintexDebuggingCommand initexDebuggingCommand
131hi def link plaintexFontsCommand initexFontsCommand
Bram Moolenaard2cec5b2006-03-28 21:08:56 +0000132hi def link plaintexGlueCommand plaintexCommand
133hi def link plaintexInsertsCommand plaintexCommand
Bram Moolenaar8424a622006-04-19 21:23:36 +0000134hi def link plaintexJobCommand initexJobCommand
Bram Moolenaard2cec5b2006-03-28 21:08:56 +0000135hi def link plaintexKernCommand plaintexCommand
Bram Moolenaar8424a622006-04-19 21:23:36 +0000136hi def link plaintexMacroCommand initexMacroCommand
Bram Moolenaard2cec5b2006-03-28 21:08:56 +0000137hi def link plaintexPageCommand plaintexCommand
138hi def link plaintexParagraphCommand plaintexCommand
139hi def link plaintexPenaltiesCommand plaintexCommand
140hi def link plaintexRegistersCommand plaintexCommand
141hi def link plaintexTablesCommand plaintexCommand
142
143hi def link plaintexMath String
144hi def link plaintexMathCommand plaintexCommand
145hi def link plaintexMathBoxCommand plaintexBoxCommand
146hi def link plaintexMathCharacterCommand plaintexCharacterCommand
147hi def link plaintexMathDelimiter plaintexDelimiter
148hi def link plaintexMathFontsCommand plaintexFontsCommand
149hi def link plaintexMathLetter plaintexMathCharacterCommand
150hi def link plaintexMathSymbol plaintexMathLetter
151hi def link plaintexMathFunction Function
152hi def link plaintexMathOperator plaintexOperator
153hi def link plaintexMathPunctuation plaintexCharacterCommand
154hi def link plaintexMathRelation plaintexOperator
155
Bram Moolenaar8424a622006-04-19 21:23:36 +0000156hi def link plaintexParameterDimen initexParameterDimen
157hi def link plaintexMathParameterDimen initexMathParameterDimen
158hi def link plaintexParagraphParameterGlue initexParagraphParameterGlue
159hi def link plaintexFontParameterInteger initexFontParameterInteger
160hi def link plaintexJobParameterInteger initexJobParameterInteger
161hi def link plaintexPageParameterInteger initexPageParameterInteger
162hi def link plaintexPageParameterToken initexParameterToken
Bram Moolenaard2cec5b2006-03-28 21:08:56 +0000163
164let b:current_syntax = "plaintex"
165
166let &cpo = s:cpo_save
167unlet s:cpo_save