Я хочу использовать showexpl
и распечатать код LaTeX с цветными скобками. Я могу сделать это в lstlisting
среде, добавив опцию literate, как в примере ниже, но не в LTXexample
среде (это приводит к ошибке). Есть ли способ сделать скобки цветными в блоке кода среды LTXexample
?
\documentclass{article}
\usepackage{xcolor}
\usepackage{showexpl}
\lstset{language=[LaTeX]Tex,texcsstyle=*\color{red}}
\begin{document}
\begin{LTXexample}
\textit{Test}
\end{LTXexample}
\begin{lstlisting}[
literate=
*{\{}{{\textcolor{blue}{\{}}}{1}
{\}}{{\textcolor{blue}{\}}}}{1}
]
\textit{Test}
\end{lstlisting}
\end{document}
решение1
Поскольку showexpl
он основан на listings
пакете, большинство функций последнего, включая ключ literate
, должны, в теории, работать из коробки. По какой-то причине, однако, определение буквальных замен глобально, как так
\lstset
{
literate=
*{\{}{{\textcolor{blue}{\{}}}{1}
{\}}{{\textcolor{blue}{\}}}}{1},
}
похоже, ломается showexpl
, который жалуется на Undefined control sequence \textitTest
. Я не знаю внутренности showexpl
достаточно хорошо, чтобы иметь хорошее объяснение этой ошибки, но, похоже, скобки сбрасываются, когда не должны. Мне это кажется ошибкой showexpl
, особенно потому, что начало ключа literate
в listings
(1999) предшествует первому выпуску showexpl
(2004).
Одним из обходных путей является определение этих грамотных замен не глобально, а в рамках пользовательского стиля; в этом случае вы не должны получить никаких ошибок.
\documentclass{article}
\usepackage{xcolor}
\usepackage{showexpl}
%% returns an error!
%\lstset
%{
% literate=
% *{\{}{{\textcolor{blue}{\{}}}{1}
% {\}}{{\textcolor{blue}{\}}}}{1},
%}
\lstdefinestyle{myLaTeX}
{
language=[LaTeX]Tex,
texcsstyle=*\color{red},
literate=
*{\{}{{\textcolor{blue}{\{}}}{1}
{\}}{{\textcolor{blue}{\}}}}{1},
}
\begin{document}
\begin{LTXexample}[style=myLaTeX]
\textit{Test}
\end{LTXexample}
\begin{lstlisting}[style=myLaTeX]
\textit{Test}
\end{lstlisting}
\end{document}