硬空格

硬空格

我正在使用 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,

相关内容