背景
希望使用 ConTeXt 将页码放在页面底部。以下最小工作示例 (MWE) 中的关键行是:
\setuplayout[
topspace=\zeropoint,
%bottomspace=\zeropoint,
]
我以为通过消除topspace
和消除bottomspace
页面的文本高度会自动计算以填充整个区域。
最小工作示例
一个显示我想要实现的目标的示例:
\setuppapersize[letter][letter]
\setuplayout[
topspace=\zeropoint,
%bottomspace=\zeropoint,
]
\showframe
% Use roman numerals for the front matter
\definestructureconversionset[frontpart:pagenumber] [] [romannumerals]
\setuppagenumbering[location={footer,right},alternative=singlesided]
\starttext
\startfrontmatter
\setuppagenumbering[conversion=romannumerals]
\setcounter[userpage][1]
% Table of Contents
\completecontent
\stopfrontmatter
\startbodymatter
\setuppagenumbering[conversion=numbers]
\setcounter[userpage][2]
\startchapter[
title={chapter},
reference=sec:chapter,
]
\startsection[
title={section},
reference=sec:section,
]
\stopsection
\stopchapter
\stopbodymatter
\stoptext
问题
如何将页码移动到页面的最底部,如下图所示:
这是需要动态层?
有关的
答案1
您可以使用height=fit
(参见Wiki-setuplayout),这会将文本高度拉伸到最大,将页脚(包括页码)一直向下推。由于您可能不希望文本高度那么大,因此可以增加footerdistance
。示例:
\setuplayout
[topspace=\zeropoint,
height=fit,
footerdistance=2cm]
\setuppagenumbering
[location={footer, right}]
\showframe
\starttext
\null
\stoptext
要将页码向右移动,可以使用
\setuppagenumbering
[location={footer, right, margin}]
答案2
Marco 已经回答了您的问题,但让我说明另一种直观地实现相同结果的方法。
图层是将内容放置在页面特定位置的便捷方式。例如,要将页码放置在页面的最底部,您可以使用
\setuppapersize[A6]
\definelayer
[pagenumber]
[
width=\paperwidth,
height=\paperheight,
preset=rightbottom,
]
\setupbackgrounds[page][background=pagenumber, setups=setpagenumber]
\startsetups setpagenumber
% Set the page number to be (2em, \lineheight) from the bottom right corner
% Note the `preset=rightbottom` above.
%
% The 2nd set of optional arguments are for the frame. For illustration I change
% the color and font of the page number
\setlayerframed
[pagenumber]
[
x=2em,
y=\lineheight,
]
[
frame=on,
foregroundcolor=red,
foregroundstyle=bold,
]
{\pagenumber}
\stopsetups
% Disable default page numbering
\setuppagenumbering[location=]
\starttext
\input knuth
\input knuth
\input knuth
\stoptext
这使
如果您需要将页码放在非常规位置(如在许多 ConTeXt 手册中所做的那样),则此方法很有用。