使用 ConTeXt,如何在设置内的图层内保留段落分隔符?

使用 ConTeXt,如何在设置内的图层内保留段落分隔符?

我正在尝试创建一个信头,其中包含收件人的姓名、日期和每页边缘的页面。

这是我的尝试:

\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

您将您的环境置于忽略行尾的环境layersetups。这意味着不同行上的单词之间不会添加空格,并且输入中的空行不会导致新段落。

\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

相关内容