我想尝试一下随软件包分发的lstsample
环境lstdoc
listings
包裹。
为此我写了以下文件:
\documentclass{article}
\usepackage{lstdoc}
\usepackage{lipsum}
\begin{document}
\begin{lstsample}{}{}
\color{blue}
\lipsum[68]
\end{lstsample}
\end{document}
但编译失败并出现以下消息:
! Undefined control sequence.
\lst@sampleInput ->\MakePercentComment
\catcode `\^^M=10\relax \small \lst@s...
l.10 \end{lstsample}
我错过了什么?
答案1
该lstdoc
包主要用于使用该类ltxdoc
的文档。该类doc
在内部加载该类,其中包含两个与此处特别相关的宏定义:
\def\MakePercentIgnore{\catcode`\%9\relax}
\def\MakePercentComment{\catcode`\%14\relax}
由于lstsample
环境需要这两个宏,但您使用的类article
未定义它们,因此当您尝试编译代码时,LaTeX 会将这些宏报告为未定义。在序言中添加上面显示的两个定义将解决该问题。
此外,lstsample
环境的一个怪癖是,为了让一切正常工作,其中的所有行必须以 开头,%
后面至少跟 4 个空格。遵守这个规则你就会快乐。
\documentclass{article}
\usepackage{lstdoc}
\usepackage{xcolor}
\usepackage{lipsum}
% The following definitions are taken from doc.dtx.
% see http://mirrors.ctan.org/macros/latex/base/doc.dtx
\def\MakePercentIgnore{\catcode`\%9\relax}
\def\MakePercentComment{\catcode`\%14\relax}
\begin{document}
\begin{lstsample}{}{}
% \color{blue}
% \lipsum[68]
\end{lstsample}
\end{document}