使用 showexpl 在代码示例中强调字符串

使用 showexpl 在代码示例中强调字符串

我正在使用 showexpl 包为一个包编写文档,而 showexpl 包又使用了 listings 包。使用 listing 时,我可以像这样突出显示部分代码:

\documentclass{article}

\usepackage{xcolor}
\usepackage{listings}

\lstset{
  moredelim=[is][\color{red}]{<}{>}
}

\begin{document}

\begin{lstlisting}
  This is an <emphasized string>.
\end{lstlisting}

\end{document}

但是将moredelim选项传递给LTXexample环境并没有达到预期的效果,代码仍然是黑色的。

\documentclass{article}

\usepackage{xcolor}
\usepackage{showexpl}

\lstset{
  basicstyle=\ttfamily\small,
  moredelim=[is][\color{red}]{<}{>}
}

\begin{document}

\begin{LTXexample}
  This is an <emphasized string>.
\end{LTXexample}


\end{document}

moredelim关于将选项正确地传递给环境,我是否遗漏了什么LTXexample

答案1

当您使用 moredelim 时,分隔符在 showexpl 时已从代码中删除写道将代码保存到临时文件中。(检查 tmp 文件)。因此,打印列表时分隔符根本不存在。您可以使用 explpreset 来避免这种情况(不要同时使用 moredelim 和 explpreset,否则会导致混淆。)

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{showexpl}
\lstset{
% moredelim=[is][\color{red}]{:}{.}
 explpreset={moredelim={[is][\color{red}]{:}{.}}}
}

\begin{document}

\begin{lstlisting}
  This is an :emphasized string.
\end{lstlisting}

\begin{LTXexample}
  This is an :emphasized string.
\end{LTXexample}

\end{document}

答案2

当使用不同的颜色时,框架会出现问题:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{showexpl}
    \lstset{
  basicstyle=\ttfamily\small,
  explpreset={moredelim=[is][\color{red}]{<}{>}}}

\begin{document}

\begingroup
\catcode`\<=\active \def<{}
\catcode`\>=\active \def>{}
\begin{LTXexample}
  This is an <emphasized string>.
\end{LTXexample}
\endgroup
\end{document}

在此处输入图片描述

相关内容