我尝试过这个:
\def\Anschrift#1#2#3#4#5#6{\vbox to27.3mm{
\rmx\baselineskip=13pt
\vfill
\halign to8cm{#\hfil\cr
#1\cr
#2\cr
#3\cr
#4\cr
#5\cr
#6\cr}%
\vfill
\vss}\nointerlineskip
\vskip8.46mm}
\Anschrift{1}{2}{3}{4}{5}{6}
\bye
但我收到了错误:
! Illegal parameter number in definition of \Anschrift.
我怎样才能逃脱#
?
答案1
您只需将其加倍即可在宏定义中#
得到单个值。#
因此,对于您的示例,请使用以下命令:
\def\Anschrift#1#2#3#4#5#6{\vbox to27.3mm{
\baselineskip=13pt
\vfill
\halign to8cm{##\hfil\cr
#1\cr
#2\cr
#3\cr
#4\cr
#5\cr
#6\cr}%
\vfill
\vss}\nointerlineskip
\vskip8.46mm}
\Anschrift{1}{2}{3}{4}{5}{6}
\bye
(我\rmx
从定义中删除了,因为你没有在 MWE 中包含它的定义,而且我很懒)
答案2
##
正如其他地方所说,您需要#
在中使用\halign
。
但是你的代码有点奇怪:
您不需要,\halign to 8cm
因为 8cm 尺寸不可见,因为您创建了一个\vbox
应该在垂直模式下使用的(因为跟\nointerlineskip
在后面的\vbox
不能在水平模式下使用)。
\halign to 8cm
如果仅用替换\halign
(没有宽度规范),则不会发生任何可见的变化,只会删除有关对齐时 \hbox 未满的警告。
\halign
此外,您根本不需要,因为您的\halign
设置只包含单个左对齐列,这可以通过其中的段落来完成\hfil\break
:
\def\Anschrift#1#2#3#4#5#6{\vbox to27.3mm{
\baselineskip=13pt
\vfill
\def\\{\hfil\break}
\noindent #1\\
#2\\
#3\\
#4\\
#5\\
#6
\vfill
\vss}\nointerlineskip
\vskip8.46mm}