144 lines
3.9 KiB
TeX
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:
|