在下面这个最小工作示例的末尾有一个有趣的内容\startdelimitedtext[endtext]
,它应该打印在最后一页的底部,而不必在分页符上分割。我如何呈现[endtext]
不可分割?
\setuppapersize [A4][A4]
\setuplayout [width=middle, backspace=1.5in, cutspace=1.5in,
height=middle, topspace=0.75in, bottomspace=0.75in]
\setuppagenumbering[location={footer,center}]
\setuptolerance[horizontal, tolerant, stretch]
\setupexternalfigures [location=default]
\definedelimitedtext[endtext]
\setupdelimitedtext[endtext][before={\vfill}]
\starttext
\input douglas.tex
\input douglas.tex
One line
A second line
And another line
\startendtext
\startalignment[middle]
Written in Hasselt, Belgium!\crlf
\externalfigure[cow][height=31pt]\crlf
This work is licensed under a Creative Cows\crlf Attribution-NonCowmercial-MilkAlike 3.0 Unported License.\crlf
Other licensing available on request. Typesetting by \ConTeXt\ \contextmark.
\stopalignment
\stopendtext
\stoptext
答案1
框不能跨页面拆分,因此在这里使用框是有意义的。\framed
命令和
\startframedtext
环境是盒子的例子。
由于您使用了,\vfill
我假设文本应放在页面底部。这不会按预期工作,因为 TeX 会删除垂直空间。这是 TeX 中分页方式的副作用。通常不希望以垂直空间开始页面,然后是段落,因此 TeX 会将其删除。这就是 的用途\null
。它是一个空框,因此页面以框而不是垂直空间开始。惩罚可防止此框和垂直空间之间出现分页符。否则,垂直空间将再次出现在页面顶部并被 TeX 删除。
此外,\placefloats
确保在排版之前打印所有浮点数endtext
。
最后,我把你的替换\crlf
为线路环境它确实尊重新行。
\setupexternalfigures
[location=default]
\defineframedtext
[endtext]
[before=\placefloats\null\penalty\plustenthousand\vfill,
width=fit]
\startbuffer
\startendtext
\startlines [align=middle]
Written in Hasselt, Belgium!
\midaligned{\externalfigure[cow][height=31pt]}
This work is licensed under a Creative Cows
Attribution-NonCowmercial-MilkAlike 3.0 Unported License.
Other licensing available on request. Typesetting by \ConTeXt\ \contextmark.
\stoplines
\stopendtext
\stopbuffer
\starttext
\dorecurse{9}{\input ward\par}
\getbuffer
\page
\dorecurse{5}{\input ward\par}
\getbuffer
\page
\dorecurse{9}{\input ward\par}
\getbuffer
\stoptext