如何在 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}

相关内容