blob: 5cb49a0bfc1a0ea3e05e6fdec5d63f8e960dda59 [file] [log] [blame]
Bram Moolenaard2cec5b2006-03-28 21:08:56 +00001" Vim syntax file
Bram Moolenaar214641f2017-03-05 17:04:09 +01002" Language: TeX (plain.tex format)
3" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
4" Latest Revision: 2006-10-26
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 Moolenaar10c56952007-05-10 18:38:52 +000017unlet b:current_syntax
Bram Moolenaard2cec5b2006-03-28 21:08:56 +000018
19syn match plaintexComment display
Bram Moolenaar8424a622006-04-19 21:23:36 +000020 \ contains=ALLBUT,initexComment,plaintexComment
Bram Moolenaard2cec5b2006-03-28 21:08:56 +000021 \ '^\s*%[CDM].*$'
22
23if exists("g:plaintex_delimiters")
24 syn match plaintexDelimiter display '[][{}]'
25endif
26
27syn match plaintexRepeat display contains=@NoSpell
28 \ '\\\%(loop\|repeat\)\>'
29
30syn match plaintexCommand display contains=@NoSpell
31 \ '\\\%(plainoutput\|TeX\)\>'
32syn match plaintexBoxCommand display contains=@NoSpell
33 \ '\\\%(null\|strut\)\>'
Bram Moolenaard2cec5b2006-03-28 21:08:56 +000034syn match plaintexDebuggingCommand display contains=@NoSpell
35 \ '\\\%(showhyphens\|tracingall\|wlog\)\>'
36syn match plaintexFontsCommand display contains=@NoSpell
37 \ '\\\%(bf\|\%(five\|seven\)\%(bf\|i\|rm\|sy\)\|it\|oldstyle\|rm\|sl\|ten\%(bf\|ex\|it\=\|rm\|sl\|sy\|tt\)\|tt\)\>'
38syn match plaintexGlueCommand display contains=@NoSpell
39 \ '\\\%(\%(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\)\>'
40syn match plaintexInsertsCommand display contains=@NoSpell
41 \ '\\\%(\%(end\|top\)insert\|v\=footnote\)\>'
42syn match plaintexJobCommand display contains=@NoSpell
43 \ '\\\%(bye\|fmt\%(name\|version\)\)\>'
44syn match plaintexInsertsCommand display contains=@NoSpell
45 \ '\\\%(mid\|page\)insert\>'
46syn match plaintexKernCommand display contains=@NoSpell
47 \ '\\\%(en\|\%(neg\)\=thin\)space\>'
48syn match plaintexMacroCommand display contains=@NoSpell
49 \ '\\\%(active\|[be]group\|empty\)\>'
50syn match plaintexPageCommand display contains=@NoSpell
51 \ '\\\%(\%(super\)\=eject\|nopagenumbers\|\%(normal\|ragged\)bottom\)\>'
52syn match plaintexParagraphCommand display contains=@NoSpell
53 \ '\\\%(endgraf\|\%(non\)\=frenchspacing\|hang\|item\%(item\)\=\|narrower\|normalbaselines\|obey\%(lines\|spaces\)\|openup\|proclaim\|\%(tt\)\=raggedright\|textindent\)\>'
54syn match plaintexPenaltiesCommand display contains=@NoSpell
55 \ '\\\%(allow\|big\|fil\|good\|med\|no\|small\)\=break\>'
56syn match plaintexRegistersCommand display contains=@NoSpell
57 \ '\\\%(advancepageno\|new\%(box\|count\|dimen\|fam\|help\|if\|insert\|language\|muskip\|read\|skip\|toks\|write\)\)\>'
58syn match plaintexTablesCommand display contains=@NoSpell
59 \ '&\|\\+\|\\\%(cleartabs\|endline\|hidewidth\|ialign\|multispan\|settabs\|tabalign\)\>'
60
Bram Moolenaar8424a622006-04-19 21:23:36 +000061if !exists("g:plaintex_no_math")
62 syn region plaintexMath matchgroup=plaintexMath
Bram Moolenaar10c56952007-05-10 18:38:52 +000063 \ contains=@plaintexMath,@NoSpell
Bram Moolenaard2cec5b2006-03-28 21:08:56 +000064 \ start='\$' skip='\\\\\|\\\$' end='\$'
Bram Moolenaar8424a622006-04-19 21:23:36 +000065 syn region plaintexMath matchgroup=plaintexMath
Bram Moolenaar10c56952007-05-10 18:38:52 +000066 \ contains=@plaintexMath,@NoSpell keepend
Bram Moolenaard2cec5b2006-03-28 21:08:56 +000067 \ start='\$\$' skip='\\\\\|\\\$' end='\$\$'
Bram Moolenaar8424a622006-04-19 21:23:36 +000068endif
Bram Moolenaard2cec5b2006-03-28 21:08:56 +000069
Bram Moolenaar10c56952007-05-10 18:38:52 +000070" Keep this after plaintexMath, as we don’t want math mode started at a \$.
71syn match plaintexCharacterCommand display contains=@NoSpell
72 \ /\\\%(["#$%&'.=^_`~]\|``\|''\|-\{2,3}\|[?!]`\|^^L\|\~\|\%(a[ae]\|A[AE]\|acute\|[cdHoOPStuvijlL]\|copyright\|d\=dag\|folio\|ldotp\|[lr]q\|oe\|OE\|slash\|ss\|underbar\)\>\)/
73
Bram Moolenaard2cec5b2006-03-28 21:08:56 +000074syn cluster plaintexMath
75 \ contains=plaintexMathCommand,plaintexMathBoxCommand,
76 \ plaintexMathCharacterCommand,plaintexMathDelimiter,
77 \ plaintexMathFontsCommand,plaintexMathLetter,plaintexMathSymbol,
78 \ plaintexMathFunction,plaintexMathOperator,plaintexMathPunctuation,
79 \ plaintexMathRelation
80
81syn match plaintexMathCommand display contains=@NoSpell contained
82 \ '\\\%([!*,;>{}|_^]\|\%([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\)\>\)'
83syn match plaintexMathBoxCommand display contains=@NoSpell contained
84 \ '\\\%([hv]\=phantom\|mathstrut\|smash\)\>'
85syn match plaintexMathCharacterCommand display contains=@NoSpell contained
86 \ '\\\%(b\|bar\|breve\|check\|d\=dots\=\|grave\|hat\|[lv]dots\|tilde\|vec\|wide\%(hat\|tilde\)\)\>'
87syn match plaintexMathDelimiter display contains=@NoSpell contained
88 \ '\\\%(brace\%(vert\)\=\|brack\|cases\|choose\|[lr]\%(angle\|brace\|brack\|ceil\|floor\|group\)\|over\%(brace\|\%(left\|right\)arrow\)\|underbrace\)\>'
89syn match plaintexMathFontsCommand display contains=@NoSpell contained
90 \ '\\\%(\%(bf\|it\|sl\|tt\)fam\|cal\|mit\)\>'
91syn match plaintexMathLetter display contains=@NoSpell contained
92 \ '\\\%(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\)\>'
93syn match plaintexMathSymbol display contains=@NoSpell contained
94 \ '\\\%(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\)\>'
95syn match plaintexMathFunction display contains=@NoSpell contained
96 \ '\\\%(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\)\>'
97syn match plaintexMathOperator display contains=@NoSpell contained
98 \ '\\\%(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\)\>'
99syn match plaintexMathPunctuation display contains=@NoSpell contained
100 \ '\\\%(colon\)\>'
101syn match plaintexMathRelation display contains=@NoSpell contained
102 \ '\\\%(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\)\>'
103
104syn match plaintexParameterDimen display contains=@NoSpell
105 \ '\\maxdimen\>'
106syn match plaintexMathParameterDimen display contains=@NoSpell
107 \ '\\jot\>'
108syn match plaintexParagraphParameterGlue display contains=@NoSpell
109 \ '\\\%(\%(big\|med\|small\)skipamount\|normalbaselineskip\|normallineskip\%(limit\)\=\)\>'
110
111syn match plaintexFontParameterInteger display contains=@NoSpell
112 \ '\\magstep\%(half\)\=\>'
113syn match plaintexJobParameterInteger display contains=@NoSpell
114 \ '\\magnification\>'
115syn match plaintexPageParameterInteger display contains=@NoSpell
116 \ '\\pageno\>'
117
118syn match plaintexPageParameterToken display contains=@NoSpell
119 \ '\\\%(foot\|head\)line\>'
120
121hi def link plaintexOperator Operator
122
123hi def link plaintexDelimiter Delimiter
124
125hi def link plaintexControlSequence Identifier
126hi def link plaintexComment Comment
127hi def link plaintexInclude Include
128hi def link plaintexRepeat Repeat
129
Bram Moolenaar8424a622006-04-19 21:23:36 +0000130hi def link plaintexCommand initexCommand
Bram Moolenaard2cec5b2006-03-28 21:08:56 +0000131hi def link plaintexBoxCommand plaintexCommand
Bram Moolenaar8424a622006-04-19 21:23:36 +0000132hi def link plaintexCharacterCommand initexCharacterCommand
133hi def link plaintexDebuggingCommand initexDebuggingCommand
134hi def link plaintexFontsCommand initexFontsCommand
Bram Moolenaard2cec5b2006-03-28 21:08:56 +0000135hi def link plaintexGlueCommand plaintexCommand
136hi def link plaintexInsertsCommand plaintexCommand
Bram Moolenaar8424a622006-04-19 21:23:36 +0000137hi def link plaintexJobCommand initexJobCommand
Bram Moolenaard2cec5b2006-03-28 21:08:56 +0000138hi def link plaintexKernCommand plaintexCommand
Bram Moolenaar8424a622006-04-19 21:23:36 +0000139hi def link plaintexMacroCommand initexMacroCommand
Bram Moolenaard2cec5b2006-03-28 21:08:56 +0000140hi def link plaintexPageCommand plaintexCommand
141hi def link plaintexParagraphCommand plaintexCommand
142hi def link plaintexPenaltiesCommand plaintexCommand
143hi def link plaintexRegistersCommand plaintexCommand
144hi def link plaintexTablesCommand plaintexCommand
145
146hi def link plaintexMath String
147hi def link plaintexMathCommand plaintexCommand
148hi def link plaintexMathBoxCommand plaintexBoxCommand
149hi def link plaintexMathCharacterCommand plaintexCharacterCommand
150hi def link plaintexMathDelimiter plaintexDelimiter
151hi def link plaintexMathFontsCommand plaintexFontsCommand
152hi def link plaintexMathLetter plaintexMathCharacterCommand
153hi def link plaintexMathSymbol plaintexMathLetter
154hi def link plaintexMathFunction Function
155hi def link plaintexMathOperator plaintexOperator
156hi def link plaintexMathPunctuation plaintexCharacterCommand
157hi def link plaintexMathRelation plaintexOperator
158
Bram Moolenaar8424a622006-04-19 21:23:36 +0000159hi def link plaintexParameterDimen initexParameterDimen
160hi def link plaintexMathParameterDimen initexMathParameterDimen
161hi def link plaintexParagraphParameterGlue initexParagraphParameterGlue
162hi def link plaintexFontParameterInteger initexFontParameterInteger
163hi def link plaintexJobParameterInteger initexJobParameterInteger
164hi def link plaintexPageParameterInteger initexPageParameterInteger
165hi def link plaintexPageParameterToken initexParameterToken
Bram Moolenaard2cec5b2006-03-28 21:08:56 +0000166
167let b:current_syntax = "plaintex"
168
169let &cpo = s:cpo_save
170unlet s:cpo_save