在 (La)TeX 文档和教程中,通常会在其生成的输出旁边显示一段代码。它可能是并排的两个小页面,或代码列表后跟框式输出,或其他任何内容。举一个简单的例子,我们可能会看到
\[ sin \theta \]
在其输出旁边,罪θ
每当我这样做的时候,我都必须使用两份代码,例如,一次在里面verbatim
迷你页面或框架框内,另一份在迷你页面或框架框内)。这只会导致不一致和可维护性问题,因为很容易修复一份副本,而另一份副本则很难修复。所以,有什么办法可以显示一堆代码和执行它(的副本)并显示结果?
我确信这并不简单:代码需要有不同的 catcode 来读取和显示,但 catcode 只会在遇到文本时分配一次。但如果没有更好的方法,应该可以通过逐字读取代码并在文件中保存副本来实现.aux
,下次从那里读取和解释它。但我从未见过这样的事情。这里还有其他人吗?
答案1
这两个包都提供了操作输出的选项。这些选项演示了默认行为。
选项1:包裹showexpl
此方法使用包listings
。操作通过 LaTeX 命令完成。
\documentclass{article}
\usepackage{showexpl}
\begin{document}
\begin{LTXexample}
$1+1=2$
\end{LTXexample}
\end{document}
选项 2:包裹tcolorbox
此包用于listings
格式化代码并使用 TikZ 绘制框架。基于此,您有很多选择。
\documentclass{article}
\usepackage{tcolorbox}
\tcbuselibrary{listings}
\begin{document}
\begin{tcblisting}{}
1+1=2
\end{tcblisting}
\end{document}
答案2
其中一种方法是:
\documentclass{article}
\usepackage{verbatim}
\begin{document}
\verbatiminput{items.tex}
\input{items.tex}
\end{document}
其中items.tex
有类似这样的内容:
\begin{itemize}
\item one
\item two
\item three
\end{itemize}