Ich möchte showexpl
den LaTeX-Code mit farbigen Klammern drucken lassen. Dies kann ich innerhalb einer lstlisting
Umgebung tun, indem ich eine Literate-Option wie im folgenden Beispiel hinzufüge, aber nicht innerhalb einer LTXexample
Umgebung (da dies einen Fehler erzeugt). Gibt es eine Möglichkeit, die Klammern im Codeblock einer LTXexample
Umgebung farbig darzustellen?
\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}
Antwort1
Da showexpl
es auf dem Paket basiert listings
, sollten die meisten seiner Funktionen, einschließlich des literate
Schlüssels, theoretisch sofort funktionieren. Aus irgendeinem Grund ist es jedoch nicht möglich, die wörtlichen Ersetzungen global zu definieren, wie hier
\lstset
{
literate=
*{\{}{{\textcolor{blue}{\{}}}{1}
{\}}{{\textcolor{blue}{\}}}}{1},
}
scheint zu brechen showexpl
, was sich über ein beschwert Undefined control sequence \textitTest
. Ich kenne die Innereien von nicht showexpl
gut genug, um eine gute Erklärung für diesen Fehler zu haben, aber es scheint, dass die Klammern weggelassen werden, obwohl sie es nicht sollten. showexpl
Für mich sieht das nach einem Fehler in aus, insbesondere weil die Einführung des literate
Schlüssels in listings
(1999) vor der ersten Veröffentlichung von showexpl
(2004) liegt.
Eine Problemumgehung besteht darin, diese Literate-Ersetzungen nicht global, sondern innerhalb eines benutzerdefinierten Stils zu definieren. Dann sollte kein Fehler auftreten.
\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}