如何在 showexpl 中為大括號著色?

如何在 showexpl 中為大括號著色?

我想使用showexpl並列印帶有彩色大括號的 LaTeX 代碼。我可以lstlisting透過添加如下例所示的文學選項來在環境中執行此操作,但不能在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)的第一次發布。literatelistingsshowexpl

一種解決方法是定義這些文字替換,不是全域的,而是在自訂樣式內;那麼你不應該得到任何錯誤。

在此輸入影像描述

\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}

相關內容