我的目标是创建一个并排显示 PSTricks 输入及其对应输出的长表格列表。
该表由 3 列组成,即数字柱子,输入柱子, &输出列。数字列中含有源代码文件的超链接,例如:读者想画一个圆环面图形,只需在表格中搜索,点击数字即可打开对应的源代码文件。
简单来说,LTXexample 的输入和输出如何分离?我的粗略思路如下:
- 我只是将 PSTricks 例程传递给输入柱子。
- 然后宏提供一个包含输出的保存框。
- 然后我调用另一个宏(如 \usebox)来检索已保存的框并将其插入到输出柱子。
- 我对每一行都执行步骤 1-3。使用 \url 可以轻松制作超链接数字(这不是什么大问题)。
答案1
也许是朝着正确方向迈出的一小步:我们定义两个命令 \LTXlastexample{in/out}put,而不是生成输出,它们仍然需要排版的宽度。这将要求您在发出下一个 LTXexample 之前输出这两个部分,并且我并没有过多考虑它是否会在我的示例案例之外发挥作用,本着“可能出什么问题?”的精神。
\documentclass{article}
\usepackage{showexpl}
\makeatletter
\newcommand*\SX@put@x[3]{%
\global\def\LTXlastexampleinput##1{%
\SX@CodeArea{##1}{#3}%
}%
\global\setbox\SX@ResBox\box\SX@ResBox
\global\def\LTXlastexampleoutput##1{%
\SX@ResultArea{##1}{#2}%
}%
}
\makeatother
\begin{document}
\begin{LTXexample}[pos=x]
Hello, world
\end{LTXexample}
\show\LTXlastexampleoutput
\begin{tabular}{|l|l|}
\LTXlastexampleinput{5cm} & \LTXlastexampleoutput{5cm}
\end{tabular}
\end{document}
答案2
我不会为此使用表格。分页符会给您带来问题。此外,调整代码和输出的空间也会很困难:有时您可能会得到输出较小但代码行较大的结果,反之亦然。我只需使用 showexpl 将代码和输出并排放置,并使用 minipage+enumerate 或其他东西来放置数字。
\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{showexpl}
\usepackage{pst-calendar}
\begin{document}
\begin{enumerate}
\item
\begin{minipage}{\linewidth}
\begin{LTXexample}[varwidth,pos=r,wide]
\psscalebox{0.5}{%
\psCalendar[Jahr=2006,Monat=1]}
\end{LTXexample}
\end{minipage}
\end{enumerate}
\end{document}
答案3
由于一直没有 LaTeX 解决方案,所以我会发布一个 ConTeXt 解决方案来提供一些想法。
在 ConTeXt 中执行此操作的标准方式是buffers
。例如:
\startbuffer[示例1] 这是一个简单的 metapost 示例。 \启动MP代码 绘制比例为 5cm 的完整圆; \stopMP代码 \停止缓冲区 \setupTABLE[col][1][width=0.5\textwidth] \setupTABLE[col][2][width=0.5\textwidth] \开始文本 \开始表 \NC 输入 \NC 输出 \NC \NR \NC \typebuffer[示例1] \NC \getbuffer[示例1] \NC \NR \停止表 \停止文本
如果片段已经存储在外部文件中,那么另一个选择是:
\开始表 \NC \typefile[example1.tex] \NC \externalfigure[example1.tex] \NC \NR \停止表
当\externalfigure
(相当于\includegraphics
LaTeX 中的 )输入一个 TeX 文件时,它会在一个框中排版并包含结果。