假设我有这个简单的循环:
\newcount\u\u1
\loop
\the\u~
\ifnum\u<2
\advance\u1
\repeat
这将打印数字为
1 2
我想要实现的是
1
2
为此,我尝试\\
在循环中的任何位置添加,但会出现错误“!扫描 \\ 的使用时发现禁止的控制序列”。插入\par
会出现“!段落在 \loop 完成之前结束”。
所以问题是:如何在 Plain Tex 中的循环中插入换行符/换行符/回车符/换行符?
答案1
在 中plain.tex
,\loop...\repeat
定义为:
\def\loop#1\repeat{\def\body{#1}\iterate}
所以你不能\par
在里面使用。
另外,在 中plain.tex
,\\
控制序列没有与 LaTeX 中相同的“在此处断线”含义,因此它也不起作用。
您有两个选择:
首先,重新定义\loop...\repeat
为一个长宏:
\long\def\loop#1\repeat{\def\body{#1}\iterate}
这样你就可以提出\par
它的论点。
其次,使用\endgraf
,它与 TeX 的原语完全相同\par
,不同之处在于,在扫描宏的参数时,TeX 会查找\par
,而不是\endgraf
,因此可以在这些情况下使用它。
请记住,使用\endgraf
会中断段落,而不是中断行,正如 David 在评论中所说。使用\endgraf
将插入一个\parskip
粘连。对于实际线休息一下,看看大卫的回答:)
答案2
\newcount\u\u1
\parindent0pt
\loop
\the\u
\ifnum\u<2
\hfill\break
\advance\u1
\repeat
\bye