我的书有:
- 某些页面有整页图片和标题
- 正文流经其他页面。我的文档分为几个部分,每个部分都从新的一页开始。
我尝试将整页图像和标题放在图层上,方法是将它们推迟到分节之前。典型的一个部分有 2 页正文和 3 张整页图像。我尝试使用浮动,但很难在正文中找到放置浮动的位置。
它大部分情况下运行良好,只是整页图像有时会推迟到错误的页面上。我怀疑推迟命令中的 \page 会造成混淆。以下是显示该问题的 MWE。
在我的 MWE 中,\startpostponing[+2]
应该将单词放在POSTPONED CONTENT
第 3 页,但单词却放在第 4 页。当我将推迟 +2 更改为 +1 或 +3 时,它可以正常工作。
有人能检查一下他们的计算机上是否也是这样吗?
\setuppapersize[A6, portrait][A3, landscape]
\setuppaper[nx=3,ny=2]
\setuparranging[XY]
\starttext
\startpostponing[+2]
POSTPONED CONTENT
\page
\stoppostponing
ON PAGE 1
\page
\dorecurse{3}{\input tufte}
\stoptext
答案1
一种不同的解决方案,使用浮点数而不是\startpostponing
来实现编辑中描述的目标:
\setuppapersize[A6, portrait][A3, landscape]
\setuppaper[nx=4,ny=2]
\setuparranging[XY]
\definefloat[endofsection][figure][
default={somewhere:endofsection},
minheight=\dimexpr\textheight-2\baselineskip,
frame=on,
]
\setupfloat[ntop=100]
\setuphead[section][
before={\page\placenamedfloat[endofsection][endofsection]\page}
]
\starttext
\section{Section One}
\dorecurse{2}{\samplefile{knuth}\par}
\placeendofsection{Caption One}{Content One}
\placeendofsection{Caption Two}{Content Two}
\section{Section Two}
\dorecurse{3}{\samplefile{bryson}\par}
\placeendofsection{Caption Three}{Content Three}
\placeendofsection{Caption Four}{Content Four}
\placeendofsection{Caption Five}{Content Five}
\section{Section Three}
\dorecurse{6}{\samplefile{zapf}\par}
\stoptext
这有点黑客行为,所以请将其作为起点而不是完成的解决方案:)
(如果使用层是一项硬性要求,那么您可能可以使用 Lua + 缓冲区来做一些事情,但这最适合另一个问题)
答案2
在我看来,这看起来像是一个错误。设置\c_page_postponed_mode
为0
似乎可以解决问题,尽管这可能会产生其他意想不到的后果:
\unprotect
\c_page_postponed_mode=0
\protect
\setuppapersize[A6, portrait][A3, landscape]
\setuppaper[nx=3,ny=2]
\setuparranging[XY]
\starttext
\startpostponing[+2]
POSTPONED CONTENT
\page
\stoppostponing
ON PAGE 1
\page
\dorecurse{3}{\input tufte}
\stoptext
我怀疑这个问题\aftergroup
与\page_otr_construct_and_shipout
(page-ini.mkxl:170-175
):
% this is tricky! we need to make sure we are in the output group
\ifnum\c_page_postponed_mode=\plusone
\aftergroup\page_postponed_blocks_flush
\else
\page_postponed_blocks_flush
\fi