我正在使用 plainTeX,想排版一些 (python) 代码示例。切换到\tt
可以让我完成部分工作,但我(显然)需要尊重空格。有什么技巧可以做到这一点吗?上次我需要这个时,我最终编写了一个预处理器,\
在任何地方都插入了适当的内容。哦天哪,我想我还需要消除段落缩进,并强制换行。
答案1
我会使用\verbatim
来自eplain
。
\input eplain
\verbatim
def foo():
pass
|endverbatim
\bye
答案2
总的来说,TH. 的答案更可取。它还禁用了\
Python 代码中可能使用的其他特殊字符。
但这里是关于空格、行尾和 parindent 的答案:
您可以使用 使 plainTeX 或 LaTeX 打印所有空格\obeyspaces
。对于行尾,有 ,\obeylines
它实际上将它们变成段落(\par
)。可以通过设置 来删除段落缩进\parindent=0pt
。
这当然应该在组内完成。确保注释掉代码中的所有行尾,包括尾部的\endgroup
(或}
),否则它们也会被打印出来。
\begingroup
\parindent=0pt\relax
\obeyspaces%
\let =\ %
\obeylines%
Your python code
\endgroup%
答案3
在文件中的拖船普通宏中有一个相当复杂的逐字例程tugboat.sty
。它太长了,无法在此重复,但代码有很好的文档记录,可能可以“提取”而没有太多麻烦。开发此代码的理由正是这里所要求的 - 观察精确的间距,特别是在代码行的开头,以便能够清晰地呈现 tex 宏代码。
tugboat.sty
是该/tex/plain/tugboat-plain
地区的 tex 直播节目,并且在 ctan 上。
答案4
我曾尝试使用纯 TeX 来排版源代码(多种语言)。事实证明这是一项艰巨的任务,如果你想要一些像关键字突出显示这样的视觉效果,那就更难了,现在我更喜欢使用 LaTeX 在列表环境中完成这项工作,并将输出作为图形包含在内。
前任:
% dclass and package loading
\usepackage{listings}
% stuff, stuff, stuff,
\lstset{
rulecolor=\color{BlockGray},
rulesepcolor=\color{TopGray},
frame=shadowbox,
language=Python,
numbers=left,
numberstyle=\tiny\color{yellow},
numberblanklines=false,
basicstyle=\footnotesize,
showstringspaces=false,
}
% stuff, stuff, stuff,
\begin{document}
% stuff, stuff, stuff,
\begin{lstlisting}
from twisted.internet import reactor
def helloWorld():
print "Hello World!"
reactor.callWhenRunning(helloWorld)
reactor.callWhenRunning(reactor.stop)
reactor.run()
\end{lstlisting}
% stuff, stuff, stuff,