%PDF- %PDF-
Direktori : /usr/share/gtksourceview-5/language-specs/ |
Current File : //usr/share/gtksourceview-5/language-specs/latex.lang |
<?xml version="1.0"?> <!-- This file is part of GtkSourceView Copyright (C) 2005-2007 - Marco Barisione <barisione@gmail.com> Copyright (C) 2012-2013 - Tobias Marczewski <tmarczewski@ed-alumni.net> Copyright (C) 2013, 2016 - Sébastien Wilmet <swilmet@gnome.org> GtkSourceView is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. GtkSourceView is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, see <http://www.gnu.org/licenses/>. --> <language id="latex" name="LaTeX" version="2.0" _section="Markup"> <metadata> <property name="mimetypes">text/x-tex</property> <property name="globs">*.tex;*.ltx;*.sty;*.cls;*.dtx;*.ins;*.bbl</property> <property name="line-comment-start">%</property> <property name="suggested-suffix">.tex</property> </metadata> <styles> <style id="comment" name="Comment" map-to="def:comment"/> <style id="display-math" name="Math Mode" map-to="def:string"/> <style id="inline-math" name="Inline Math Mode" map-to="latex:display-math"/> <style id="math" name="Math Mode" map-to="latex:display-math"/> <style id="math-boundary" name="Math Boundary" map-to="latex:display-math"/> <style id="include" name="Include" map-to="def:keyword"/> <style id="common-commands" name="Command" map-to="def:keyword"/> <style id="command" name="Command" map-to="def:keyword"/> <style id="verbatim" name="Verbatim" map-to="def:comment"/> <style id="special-char" name="Special Character" map-to="def:special-char"/> <style id="part" name="Part Heading" map-to="def:heading0"/> <style id="chapter" name="Chapter Heading" map-to="def:heading1"/> <style id="section" name="Section Heading" map-to="def:heading2"/> <style id="subsection" name="SubSection Heading" map-to="def:heading3"/> <style id="subsubsection" name="SubSubSection Heading" map-to="def:heading4"/> <style id="paragraph" name="Paragraph Heading" map-to="def:heading5"/> <style id="subparagraph" name="SubParagraph Heading" map-to="def:heading6"/> </styles> <definitions> <!-- comment --> <context id="comment"> <include> <context id="end-line-comment" style-ref="comment"> <start>%</start> <end>$</end> <include> <context ref="def:in-comment"/> </include> </context> <context id="comment-env" style-ref="comment" class="no-spell-check"> <start>\\begin\{comment\}</start> <end>\\end\{comment\}</end> <include> <context ref="def:in-comment"/> </include> </context> </include> </context> <!-- verbatim --> <context id="verbatim-env" style-inside="true" style-ref="verbatim" class-disabled="no-spell-check"> <start>(\\begin)\{(verbatim\*?|alltt)\}</start> <end>(\\end)\{(\%{2@start})\}</end> <include> <context sub-pattern="1" where="start" style-ref="common-commands" class="no-spell-check"/> <context sub-pattern="1" where="end" style-ref="common-commands" class="no-spell-check"/> <context sub-pattern="2" where="start" class="no-spell-check"/> <context sub-pattern="2" where="end" class="no-spell-check"/> </include> </context> <context id="lstlisting-env" style-inside="true" style-ref="verbatim" class="no-spell-check"> <start>(\\begin)\{(lstlisting|minted)\}</start> <end>(\\end)\{\%{2@start}\}</end> <include> <context sub-pattern="1" where="start" style-ref="common-commands"/> <context sub-pattern="1" where="end" style-ref="common-commands"/> </include> </context> <!-- Embedded R Code (Sweave package) --> <context id="R-block" class="no-spell-check"> <start>(\\begin)\{(Scode|Sinput|Soutput)\}</start> <end>(\\end)\{\%{2@start}\}</end> <include> <context sub-pattern="1" where="start" style-ref="common-commands"/> <context sub-pattern="1" where="end" style-ref="common-commands"/> <context ref="r:r"/> </include> </context> <!-- Examples: \url{http://google.de}, \href{http://google.de}{Google} Supports also urls with math symbols: \url{https://example.com/$test} --> <context id="urls"> <include> <context ref="url-command"/> <context ref="href-command"/> </include> </context> <context id="url-command" class="no-spell-check"> <match extended="true"> (\\url) # url command. \{ # Literal opening braces. [ \t]* # Optional spaces or tabs after the opening braces. .*? # URL [ \t]* # Optional spaces or tabs before the closing braces. \} # closing url command. </match> <include> <context sub-pattern="1" style-ref="command"/> </include> </context> <context id="href-command"> <match extended="true"> (\\href) # url command. \{( # Literal opening braces. [ \t]* # Optional spaces or tabs after the opening braces. .*? # URL [ \t]* # Optional spaces or tabs before the closing braces. )\} # closing url command. \{(.*?)\} # link text </match> <include> <context sub-pattern="1" class="no-spell-check" style-ref="command"/> <context sub-pattern="2" class="no-spell-check"/> </include> </context> <!--using brackets is an experimental feature from the listings package. The following must support these cases: \lstinline[]{code in here} \lstinline[key=val, key=val]{code in here} \lstinline[key=val, key=val]!code in here! \lstinline[]!code in here! \lstinline[][code in here[ \lstinline[NOT code in here, must specify empty optional argument to use square brackets[ \lstinline{code in here} \lstinline{code in {here} but NOT in here} % brackets do not nest \lstinline!code in here! \lstinline=code in here= \lstinline{this needs to fail{ If using \verb instead of \lstinline, the brackets cannot be used --> <context id="lstinline-curly-brackets" style-inside="true" style-ref="verbatim" class="no-spell-check"> <start>(\\lstinline)(\[.*?\])?{</start> <end>}</end> <include> <context sub-pattern="1" where="start" style-ref="command"/> </include> </context> <context id="lstinline-square-brackets" style-inside="true" style-ref="verbatim" class="no-spell-check"> <!-- square brackets don't match with the pair, and they require an optional argument, even if empty --> <start>(\\lstinline)(\[.*?\])\[</start> <end>\[</end> <include> <context sub-pattern="1" where="start" style-ref="command"/> </include> </context> <context id="lstinline" style-inside="true" style-ref="verbatim" class="no-spell-check"> <start>(\\lstinline)(\[.*?\])?((?!\[)\S)</start> <!-- ignore when starting with [ --> <end>\%{3@start}</end> <include> <context sub-pattern="1" where="start" style-ref="command"/> </include> </context> <context id="mintinline-curly-brackets" style-inside="true" style-ref="verbatim" class="no-spell-check"> <start>(\\mintinline)(\[.*?\])?\{.+?\}{</start> <end>}</end> <include> <context sub-pattern="1" where="start" style-ref="command"/> </include> </context> <context id="mintinline" style-inside="true" style-ref="verbatim" class="no-spell-check"> <start>(\\mintinline)(\[.*?\])?\{.+?\}((?!\[)\S)</start> <!-- ignore when starting with [ --> <end>\%{3@start}</end> <include> <context sub-pattern="1" where="start" style-ref="command"/> </include> </context> <!-- If using \verb instead of \lstinline, the brackets cannot be used --> <context id="verbatim-inline" style-inside="true" style-ref="verbatim" class-disabled="no-spell-check"> <start>(\\verb)\*?(\S)</start> <end>\%{2@start}</end> <include> <context sub-pattern="1" where="start" style-ref="command" class="no-spell-check"/> </include> </context> <context id="verbatim"> <include> <context ref="verbatim-env"/> <context ref="lstlisting-env"/> <context ref="verbatim-inline"/> <context ref="lstinline-curly-brackets"/> <context ref="lstinline-square-brackets"/> <context ref="lstinline"/> <context ref="mintinline-curly-brackets" /> <context ref="mintinline"/> </include> </context> <!-- commands --> <context id="common-commands" style-ref="common-commands" class="no-spell-check"> <prefix>\\</prefix> <!-- We need to special case "_" since it is not considered a boundary but it is allowed in latex --> <suffix>(\b|(?=_))</suffix> <keyword>Alpha</keyword> <keyword>Beta</keyword> <keyword>Chi</keyword> <keyword>Delta</keyword> <keyword>Epsilon</keyword> <keyword>Eta</keyword> <keyword>Gamma</keyword> <keyword>Iota</keyword> <keyword>Kappa</keyword> <keyword>Lambda</keyword> <keyword>Leftarrow</keyword> <keyword>Leftrightarrow</keyword> <keyword>Mu</keyword> <keyword>Nu</keyword> <keyword>Omega</keyword> <keyword>Phi</keyword> <keyword>Pi</keyword> <keyword>Psi</keyword> <keyword>Rho</keyword> <keyword>Rightarrow</keyword> <keyword>Sigma</keyword> <keyword>Tau</keyword> <keyword>Zeta</keyword> <keyword>alpha</keyword> <keyword>appendix</keyword> <keyword>begin</keyword> <keyword>beta</keyword> <keyword>bigcap</keyword> <keyword>bigcup</keyword> <keyword>cap</keyword> <keyword>cdot</keyword> <keyword>chapter</keyword> <keyword>chi</keyword> <keyword>cite</keyword> <keyword>cup</keyword> <keyword>delta</keyword> <keyword>documentclass</keyword> <keyword>end</keyword> <keyword>enumi</keyword> <keyword>enumii</keyword> <keyword>enumiii</keyword> <keyword>enumiv</keyword> <keyword>epsilon</keyword> <keyword>equation</keyword> <keyword>eta</keyword> <keyword>exists</keyword> <keyword>figure</keyword> <keyword>footnote</keyword> <keyword>footnotemark</keyword> <keyword>footnotetext</keyword> <keyword>forall</keyword> <keyword>gamma</keyword> <keyword>geq</keyword> <keyword>in</keyword> <keyword>int</keyword> <keyword>iota</keyword> <keyword>kappa</keyword> <keyword>label</keyword> <keyword>lambda</keyword> <keyword>ldots</keyword> <keyword>leftarrow</keyword> <keyword>leq</keyword> <keyword>mpfootnote</keyword> <keyword>mu</keyword> <keyword>neq</keyword> <keyword>newcommand</keyword> <keyword>newenvironment</keyword> <keyword>newfont</keyword> <keyword>newtheorem</keyword> <keyword>not</keyword> <keyword>notin</keyword> <keyword>nu</keyword> <keyword>omega</keyword> <keyword>onecolumn</keyword> <keyword>page</keyword> <keyword>pageref</keyword> <keyword>paragraph</keyword> <keyword>part</keyword> <keyword>phi</keyword> <keyword>pi</keyword> <keyword>prod</keyword> <keyword>psi</keyword> <keyword>qquad</keyword> <keyword>quad</keyword> <keyword>ref</keyword> <keyword>rho</keyword> <keyword>rightarrow</keyword> <keyword>section</keyword> <keyword>setminus</keyword> <keyword>sigma</keyword> <keyword>subparagraph</keyword> <keyword>subsection</keyword> <keyword>subset</keyword> <keyword>subseteq</keyword> <keyword>subsetneq</keyword> <keyword>subsubsection</keyword> <keyword>subsubsubsection</keyword> <keyword>sum</keyword> <keyword>supset</keyword> <keyword>supseteq</keyword> <keyword>supsetneq</keyword> <keyword>table</keyword> <keyword>tau</keyword> <keyword>times</keyword> <keyword>twocolumn</keyword> <keyword>varepsilon</keyword> <keyword>varphi</keyword> <keyword>zeta</keyword> </context> <context id="generic-command" style-ref="command" class="no-spell-check" extend-parent="false"> <match>\\((\@|[[:alpha:]])+|.|$)</match> </context> <context id="specific-commands"> <include> <context id="documentclass" class="no-spell-check"> <match>(\\documentclass)(\[.*\])?(\{.*\})?</match> <include> <context sub-pattern="1" style-ref="common-commands"/> </include> </context> <context id="include" class="no-spell-check"> <match>(\\(input|include|includeonly|usepackage))\b(\[.*\])?(\{.*\})?</match> <include> <context sub-pattern="1" style-ref="include"/> </include> </context> <context id="begin-end-command" class="no-spell-check"> <match>(\\(begin|end))\{.*\}</match> <include> <context sub-pattern="1" style-ref="common-commands"/> </include> </context> </include> </context> <!-- special characters --> <define-regex id="accents" extended="true"> (\\( #leading backslash ( #1-Accents- [bcdHruv\.\^'`~"=] # accent symbol \s*\{([a-zA-Z] | \\i | \\j)\} | # letter (\i \j for i,j without dot) [\.\^'`~"=]\s*([a-zA-Z] | \\i | \\j) |# non-letter accents without braces t\s*\{([a-zA-Z] | \\i | \\j){2}\} # special accent over two letters ) | ( #2-Special letters- (aa|AA | ae|AE | oe|OE | ss|SS | # letters followed by a non-word [oO] | [lL])(?![a-zA-Z_@]) # character or e.g. \l causes ) # unwanted behaviour (i.e. \label) )) | (!` | \?`) #3-Spanish punctuation </define-regex> <context id="special-char"> <include> <!-- Include accents here before the escaped command symbols because for example the hat (^) can be used as an accent and will be placed over the following letter (e.g. \^o will NOT produce ^o) --> <context id="accents" style-ref="special-char" class="no-spell-check"> <match>\%{accents}</match> </context> <context id="special-symbols" style-ref="special-char" class="no-spell-check"> <prefix>\\</prefix> <suffix></suffix> <keyword>\$</keyword> <keyword>&</keyword> <keyword>%</keyword> <keyword>#</keyword> <keyword>_</keyword> <keyword>\{</keyword> <keyword>\}</keyword> <keyword>~</keyword> <keyword>\^</keyword> <keyword>\\</keyword> </context> </include> </context> <!-- headings --> <context id="curly-braces-pair"> <start>\{</start> <end>\}</end> <include> <context ref="curly-braces-pair"/> <context ref="latex"/> </include> </context> <context id="headings"> <include> <context id="part" style-inside="true" style-ref="part" end-at-line-end="true" class-disabled="no-spell-check"> <start>(\\part\*?)\{</start> <end>\}</end> <include> <context sub-pattern="1" where="start" style-ref="common-commands" class="no-spell-check"/> <context ref="curly-braces-pair"/> <context ref="latex"/> </include> </context> <context id="chapter" style-inside="true" style-ref="chapter" end-at-line-end="true" class-disabled="no-spell-check"> <start>(\\chapter\*?)\{</start> <end>\}</end> <include> <context sub-pattern="1" where="start" style-ref="common-commands" class="no-spell-check"/> <context ref="curly-braces-pair"/> <context ref="latex"/> </include> </context> <context id="section" style-inside="true" style-ref="section" end-at-line-end="true" class-disabled="no-spell-check"> <start>(\\section\*?)\{</start> <end>\}</end> <include> <context sub-pattern="1" where="start" style-ref="common-commands" class="no-spell-check"/> <context ref="curly-braces-pair"/> <context ref="latex"/> </include> </context> <context id="subsection" style-inside="true" style-ref="subsection" end-at-line-end="true" class-disabled="no-spell-check"> <start>(\\subsection\*?)\{</start> <end>\}</end> <include> <context sub-pattern="1" where="start" style-ref="common-commands" class="no-spell-check"/> <context ref="curly-braces-pair"/> <context ref="latex"/> </include> </context> <context id="subsubsection" style-inside="true" style-ref="subsubsection" end-at-line-end="true" class-disabled="no-spell-check"> <start>(\\subsubsection\*?)\{</start> <end>\}</end> <include> <context sub-pattern="1" where="start" style-ref="common-commands" class="no-spell-check"/> <context ref="curly-braces-pair"/> <context ref="latex"/> </include> </context> <context id="paragraph" style-inside="true" style-ref="paragraph" end-at-line-end="true" class-disabled="no-spell-check"> <start>(\\paragraph\*?)\{</start> <end>\}</end> <include> <context sub-pattern="1" where="start" style-ref="common-commands" class="no-spell-check"/> <context ref="curly-braces-pair"/> <context ref="latex"/> </include> </context> <context id="subparagraph" style-inside="true" style-ref="subparagraph" end-at-line-end="true" class-disabled="no-spell-check"> <start>(\\subparagraph\*?)\{</start> <end>\}</end> <include> <context sub-pattern="1" where="start" style-ref="common-commands" class="no-spell-check"/> <context ref="curly-braces-pair"/> <context ref="latex"/> </include> </context> </include> </context> <!-- math --> <!-- Commands exclusive to math mode --> <context id="math-command" class="no-spell-check" style-ref="common-commands"> <match extended="true"> \\( frac | sqrt | sum | (co)?prod | o?int | #-Functions infty | (c|d|v)dots | nonumber | #-special in math mode mathnormal | math(rm|sf|tt|it|bf|cal) | #-Math font commands (display|text|script(script)?)style | #-Math size commands alpha | beta | (g|G)amma | (d|D)elta | #-Greek letters (var)?epsilon | zeta | eta | ((vart)|t|T)heta | ## iota | kappa | (l|L)ambda | mu | nu | (x|X)i | ## ((varp)|p|P)i | (var)?rho | ((vars)|s|S)igma | ## tau | (u|U)psilon | ((varp)|p|P)hi | chi | ## (p|P)si | (o|O)mega | ## pm | mp | times | div | cdot | ast | star | #-Binary operators dd?agger | amalg | (sq)?c(a|u)p | uplus | vee | ## wedge | o(plus|minus|times) | (big)?circ | ## bullet | (d|D)iamond | (un)?(l|r)hd | ## o(slash|dot) | Box | bigtriangle(up|down) | ## triangle(left|right) | setminus | wr | ## gets | to | ((u|U)p(down)? | (d|D)own)arrow | #-Arrows and pointers ((l|L)eft(right)?|(r|R)ight)arrow | (long)mapsto |## hook(left|right)arrow | (ne|se|sw|nw)arrow | ## (left|right)harpoon(up|down) | rightleftharpoons |## (l|L)ong(left(right)?|right)arrow | ## (wide)hat | check | dd?ot | breve | acute | #-Accents in math mode grave | bar | vec | (wide)tilde | mathring | ## (over|under)(line|brace) | (i|j)math | ##i, j dots removed (arc)?(cosh?|sinh?|tanh?) | arg | coth? | csc | #-Function names deg | det | dim | exp | gcd | hom | inf | ker | ## lg | lim(inf|sup)? | ln | log | max | min | Pr | ## sec | sup ## )(?=\b) </match> </context> <context id="math-spacing" style-ref="special-char"> <match>\\[;:!]</match> </context> <context id="math-brackets" style-ref="common-commands"> <match extended="true"> \\(left | right | [bB]igg?[lr]) ( # bracket size specifier \(|\) | \[|\] | \\\{|\\\} | # normal brackets (curly escaped) \| | \\\| | / | \\backslash | # pipe and slashes \\( #-symbol commands [lr]floor | [lr]ceil | [lr]angle | ## ([uU]p(down)?|[dD]own)arrow ## ) ## ) </match> </context> <context id="math-super-sub-script" style-ref="common-commands"> <match>\^|_</match> </context> <context id="in-math" class="no-spell-check"> <include> <context ref="comment"/> <context ref="math-command"/> <context ref="math-spacing"/> <context ref="math-brackets"/> <context ref="special-char"/> <context ref="math-super-sub-script"/> <context ref="generic-command"/> </include> </context> <context id="math-1" style-ref="math" class="no-spell-check"> <start>\$\$</start> <end>\$\$</end> <include> <context sub-pattern="0" where="start" style-ref="math-boundary"/> <context sub-pattern="0" where="end" style-ref="math-boundary"/> <context ref="in-math"/> </include> </context> <context id="math-2" style-ref="math" class="no-spell-check"> <start>\\\[</start> <end>\\\]</end> <include> <context sub-pattern="0" where="start" style-ref="math-boundary"/> <context sub-pattern="0" where="end" style-ref="math-boundary"/> <context ref="in-math"/> </include> </context> <context id="math-env" style-ref="math" style-inside="true" class="no-spell-check"> <start>(\\begin)\{(math|displaymath|equation\*?|align\*?|eqnarray\*?|multline\*?|gather\*?)\}</start> <end>(\\end)\{\%{2@start}\}</end> <include> <context sub-pattern="1" where="start" style-ref="common-commands"/> <context sub-pattern="1" where="end" style-ref="common-commands"/> <context ref="in-math"/> </include> </context> <context id="inline-math-1" style-ref="inline-math" class="no-spell-check"> <start>\$</start> <end>\$</end> <include> <context sub-pattern="0" where="start" style-ref="math-boundary"/> <context sub-pattern="0" where="end" style-ref="math-boundary"/> <context ref="in-math"/> </include> </context> <context id="inline-math-2" style-ref="inline-math" class="no-spell-check"> <start>\\\(</start> <end>\\\)</end> <include> <context sub-pattern="0" where="start" style-ref="math-boundary"/> <context sub-pattern="0" where="end" style-ref="math-boundary"/> <context ref="in-math"/> </include> </context> <context id="math"> <include> <context ref="math-1"/> <context ref="math-2"/> <context ref="math-env"/> <context ref="inline-math-1"/> <context ref="inline-math-2"/> </include> </context> <context id="latex"> <include> <context ref="comment"/> <context ref="verbatim"/> <context ref="R-block"/> <context ref="headings"/> <context ref="math"/> <context ref="urls"/> <context ref="specific-commands"/> <context ref="common-commands"/> <context ref="special-char"/> <context ref="generic-command"/> </include> </context> </definitions> </language>