Files
emacs.d/elpa/auctex-11.91.0/tests/latex/fontification-verb-macros.tex
Mateus Pinto Rodrigues 58c3bd6728 Initial commit
2017-11-11 15:15:10 -02:00

144 lines
3.9 KiB
TeX

\documentclass[a4paper]{article}
\usepackage{minted}
\usepackage{listings}
\usepackage{fancyvrb}
\begin{document}
This is a test document for fontification support of verbatim
\emph{macros} provided by \LaTeX{} and other packages within AUC\TeX.
As it is not part of \verb|ert|-tests, it does not have an
\verb|out|-counterpart. Parsing should be enabled when loading this
file, namely \verb|(setq TeX-parse-self t)| in \verb|.emacs|.
\section{The problem}
The \verb|verb| macro provided by vanilla \LaTeX{} does not receive
any special fontification within AUC\TeX. It is fontified with
\verb|font-latex-sedate-face|. Other \verb|verb| macros provided by
packages like \verb|listings|, \verb|minted| or \verb|fancyvrb| are
fontified with \verb|font-lock-keyword-face| as they are added to
\verb|textual| keyword class within \verb|font-latex.el|.
Next issue is that \verb|verb| macros from modern packages take an
optional argument or even a mandatory argument before the
\verb|verbatim| content. This issue was not addressed in
\verb|font-latex.el|.
\section{The solution}
\subsection{Vanilla \LaTeX}
The issue with fontification of \verb|verb| macro is solved in
\verb|font-latex.el| by adding \verb|("verb" "*")| to
\verb|`font-latex-built-in-keyword-classes'|. This construct
fontifies only the macro itself---the argument is left out for
syntactic fontification.
\subsection{Optional argument}
This issue can be fixed in \verb|font-latex.el| by extending the
regexp for \verb|verb| macros with delimiters/braces in
\verb|`font-latex-set-syntactic-keywords'| with:
\begin{quote}
\verb|"\\(?:\\[[^][]*\\(?:\\[[^][]*\\][^][]*\\)*\\]\\)?"|
\end{quote}
The same line is used for matching optional arguments in verbatim
environments.
\section{The result}
\subsection{Vanilla \LaTeX}
Some text \verb|verb input|, % comment
$a+b$ and \verb*"verb input" % comment
\subsection{listings package}
Some text \lstinline|verb input with delims|, % comment
$a+b$ \lstinline[showspaces,basicstyle=\ttfamily]/verb input with delims/, % comment
%
\lstinline[%
basicstyle=\sffamily]!multiline in opt. arg!, % comment
%
\lstinline[%
basicstyle=\sffamily
]-multiline in opt. arg- % comment
Some text \lstinline{verb input with braces}, % comment
$a+b$ \lstinline[showspaces]{verb input with braces}, % comment
%
\lstinline[%
basicstyle=\sffamily]{multiline in opt. arg}, % comment
%
\lstinline[
basicstyle=\sffamily
]{multiline in opt. arg} % comment
\subsection{minted package}
Some text \mint{text}|verb input| % comment
$a+b$ \mint[showspaces]{text}/verb input/ % comment
Some text \mint[
showspaces
]{text}!verb input! % comment
Some text \mint[showspaces]{%
text%
}+verb input+ % comment
\newmint{text}{showspaces} %
\text|verb input| and \text[showspaces=false]|verb input| % comment
\newmint[mytext]{text}{showspaces} %
\mytext|verb input| and \mytext[%
showspaces=false
]|verb input| % comment
Some text \mintinline{text}|verb input| % comment
$a+b$ \mintinline[showspaces]{text}|verb input| % comment
Some text \mintinline[
showspaces
]{text}|verb input| % comment
Some text \mintinline[showspaces]{%
text%
}|verb input| % comment
\newmintinline{text}{showspaces} %
\textinline|verb input with delims| and \textinline[%
showspaces=false
]|verb input with delims| % comment
\textinline{verb input with braces} and \textinline[%
showspaces=false
]{verb input with braces} % comment
\newmintinline[mytextinline]{text}{showspaces} %
\mytextinline|verb input with delims| and \mytextinline[%
showspaces=false
]|verb input with delims|
\mytextinline{verb input with braces} and \mytextinline[%
showspaces=false
]{verb input with braces}
\subsection{fancyvrb package}
Some text \Verb|verb input| and % comment
\Verb[showspaces]|verb input| and \Verb[
showspaces
]|verb input|
Some text \Verb!verb input! and % comment
\Verb[showspaces]"verb input" and \Verb[
showspaces
]#verb input#
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% TeX-command-extra-options: "-shell-escape"
%%% End: