我正在尝试使用图层来定义信头,但我发现使用命令设置的文本\setlayers
通常被设置为单个段落,即使使用了明确的段落布局命令(例如)\startlines
。以下 MWE 还显示,当我使用使用定义的开始-停止环境时,我已经设法使换行得到尊重\defineparagraphs
:
\definelayer[letterheadtop][x=0mm,y=0mm,height=0.3\paperheight,width=\paperwidth]
\definelayer[letterheadbottom][x=0mm,y=0.8\paperheight,height=0.2\paperheight,width=\paperwidth]
\noheaderandfooterlines
\starttext
\setlayer[letterheadtop][hoffset=0mm,voffset=0mm]{%
\framed[width=2in]{Logo}
}
\setlayer[letterheadtop][hoffset=0.6\paperwidth,voffset=0mm]{%
\startlines %This all collapses onto one line
Line 1
Line 2
Line 3
\stoplines
}
\setlayer[letterheadbottom][hoffset=0mm,voffset=0mm]{%
\defineparagraphs[lhpar][n=2,before={\blank},after={\blank}]
\setupparagraphs [lhpar][1][width=.5\paperwidth]
\startlhpar % left column
Left
\lhpar % switch to right column
\startlines %These line breaks are respected
Line 1
Line 2
Line 3
\stoplines
\stoplhpar % end paragraph body
}
\setupbackgrounds[page][background={letterheadtop,letterheadbottom}]
Some text
\stoptext
这是怎么回事?如何才能让命令中的换行符生效\setlayer
?
答案1
\setlayer
在 中排版其内容\hbox
。您可以使用\setlayerframed
在 中排版其内容\vbox
。例如:
\setlayerframed[letterheadtop]
[hoffset=0.6\paperwidth,voffset=0mm]
[align=normal,frame=off,strut=no]
{\startlines[before=,after=]
Line 1
Line 2
Line 3
\stoplines}
其中第一个可选参数对应于的参数\setlayer
,第二个可选参数对应于的参数\framed
。
\defineparagraphs
之所以有效,是因为它明确地排版了内容\vbox
。