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
、このエラーについてうまく説明できませんが、中括弧が省略されるべきでないときに省略されているようです。 これは のバグのように見えます。特に、 (1999)での キーshowexpl
の導入が(2004)の最初のリリースより前のものであるためです。literate
listings
showexpl
回避策の 1 つは、グローバルではなくカスタム スタイル内でこれらのリテラル置換を定義することです。そうすれば、エラーは発生しないはずです。
\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}