我正在尝试创建一个信头,其中包含收件人的姓名、日期和每页边缘的页面。
这是我的尝试:
\setupbodyfont[12pt]
\definelayer[restpagemargin]%
[x=0.5in, y=1in, width=2in]
\startsetups restpagemargin
\setlayerframed
[restpagemargin]
[hoffset=0cm, voffset=0cm, width=1.75in, align=flushleft, frame=off]%
{%
John Doe
Today’s Date
Page \rawcountervalue[userpage] of \lastcountervalue[userpage]%
}
\stopsetups
\setupbackgrounds[page][background={restpagemargin},setups=restpagemargin]
\starttext
\input knuth
\input knuth
\input knuth
\input knuth
\input knuth
\input knuth
\input knuth
\input knuth
\input knuth
\stoptext
虽然文本出现在页面上,但由于某种原因,名称、日期和页码之间的段落分隔符消失了,最终在每一页上排版为John DoeToday’s DatePage 4 of 4
。
如何确保段落分隔符出现在输出中?
答案1
您将您的环境置于忽略行尾的环境layer
中setups
。这意味着不同行上的单词之间不会添加空格,并且输入中的空行不会导致新段落。
\starttext
\startsetups[nospace]
No
space!
\stopsetups
\setup[nospace]
\startsetups[noparagraphs]
No
paragraphs!
\stopsetups
\setup[noparagraphs]
\stoptext
要在上面的示例中插入空格或开始新段落,您可以使用\space
或\par
命令,或者在您的情况下\framed
使用\\
是另一种选择。
另一种选择是使用rawsetups
不忽略行尾并产生预期输出的环境。
\starttext
\startsetups[framed:setups]
\startframed[align=flushleft,width=5cm]
First paragraph.
Second paragraph.
\stopframed
\stopsetups
\setup[framed:setups]
\startsetups[framed:backslash]
\startframed[align=flushleft,width=5cm]
First paragraph.\\
Second paragraph.
\stopframed
\stopsetups
\setup[framed:backslash]
\startsetups[framed:par]
\startframed[align=flushleft,width=5cm]
First paragraph.\par
Second paragraph.
\stopframed
\stopsetups
\setup[framed:par]
\startrawsetups[framed:rawsetups]
\startframed[align=flushleft,width=5cm]
First paragraph.
Second paragraph.
\stopframed
\stoprawsetups
\setup[framed:rawsetups]
\stoptext
环境的这种意外行为setups
是故意的,因为它通常用于创建应用设置列表(与条件结合),如以下两个示例:
\startsetups[...]
\setupXXX[..,..=..,..]
\setupY[..,..=..,..]
\stopsetups
\startsetups[...]
\doifelse{...}{...}
{
...
}
{
...
}
\stopsetups