![如何避免长边注延伸到 ConTeXt 中的页脚中?](https://linux22.com/image/342662/%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D%E9%95%BF%E8%BE%B9%E6%B3%A8%E5%BB%B6%E4%BC%B8%E5%88%B0%20ConTeXt%20%E4%B8%AD%E7%9A%84%E9%A1%B5%E8%84%9A%E4%B8%AD%EF%BC%9F.png)
又是我。:) 仍在尝试为书籍布局设置 ConTeXt 环境文件。
我现在遇到了一个我从未想过会出现的问题。以下是 MWE:
\usemodule[visual]
\mainlanguage[de]
\language[de]
\definecolor[lightbrown] [r=0.83, g=0.76, b=0.71]
\setuppapersize[A4][A4]
\setuplayout
[
backspace=11.67mm, width=131.25mm,
topspace=21.21mm, height=254.57mm,
headerdistance=13pt, header=13pt,
footerdistance=13pt, footer=13pt,
rightmargindistance=13pt, rightmargin=39.5mm,
]
\setuppagenumbering[alternative=doublesided, location=]
\setupmargindata[
style=\ss\tf,
color=lightbrown,
stack=continue,
]
\starttext
\chapter{Testing Margin Notes}
\input{knuth}
\input{knuth}
\input{knuth}
\inouter{\input{knuth}}
\input{knuth}
\input{knuth}
\input{knuth}
\stoptext
它看起来是这样的:
我确信你能看到问题所在:保证金说明我放在第一页外边距的是太长用于边距区域并延伸至页脚,直至页面末尾。
现在,我确实意识到这是一个很长的边注,边注通常不会那么长。但是,如果我理解正确的话,即使边注短到两三行,也会出现这个问题:只要它们被放置在离文本区域末尾足够近的地方,它们就会进入页脚。
坦白说,我没想到自己会遇到这种低级排版问题。在我看来,除非系统能够解决这种情况(例如将边注稍微向上移动或跨页拆分),否则边注几乎无法使用。所以,我想我一定漏掉了什么。有没有什么好的解决方案?
提前致谢。
更新: 正如我在下面的评论中提到的,我确实意识到由于各种原因,跨页边注很难实现。但无论如何,这不是我需要的。我需要的是一种有点自动化的方法来防止非常短的边注(比如三四行)延伸到文本区域末尾以下。边注目前的工作方式(如果我错了,请纠正我)意味着,如果它们碰巧在页面上的位置太靠后,我将始终必须手动调整它们的位置。我希望避免这种手动干预。
答案1
据我所知,无法跨页面拆分边注。因此,如果您有较大的边注(或边注出现在页面边界附近),则有两种可能性:
voffset
使用键或使用键将边注上移line
。例如:\inouter[voffset=-25\lineheight]{\input{knuth}}
或者
\inouter[line=-25]{...}
也许可以实现此自动化(排版边注,测量其高度,如果高度大于页面上剩余的行数,则将注释上移),但如果有多个长边注,则这种方法将不起作用。
将边注放在其锚点的顶部(而不是底部)。例如,使用
\inouter[method=top]{....}
或者使用 进行全局设置
\setupmargindata[inouter][method=top]
。诸如method=depth
或 之类的变体method=height
也有效。但这只会将问题转移到不同的区域。现在,过于靠近顶部的边注可能会溢出。
简而言之,你需要人工干预。如果你能想出一个关于如何放置边注的强大算法,那么实现它应该相对简单(请参阅 了解typo-mar.lua
当前实现)。
笔记:一般来说,您可能需要添加dy=\lineheight
或类似的东西,以便堆叠的笔记之间留出一些空间。