背景
对于索引/寄存器中的折叠或扩展页码,您可以使用 \defineregister[name][compress=yes|no]
,例如
\defineregister
[photographer]
[compress=yes]
\starttext
\dorecurse{4}{%%
Foo
\photographer{Yousuf Karsh} \page}
\completephotographer
\stoptext
这将导致索引将页面引用纳入“1-4”。
(示例取自http://wiki.contextgarden.net/Command/defineregister。
问题
压缩参数工作正常,但当我们有两个连续的页码时它也会崩溃,例如“1-2”
不幸的是,这在德语中并不常见。当条目指代两个连续的页面时,你应该写“1f.”而不是“1-2”。
问题
是否可以将包含两个连续页面的页面引用归入例如“1f.”,同时将引用两个以上页面的引用合并到例如“1-3”?如果可以,您将如何操作?
答案1
您可以侵入 ConTeXt 中页面范围的显示。
\defineregister
[photographer]
[compress=yes]
\unprotect
\unexpanded\def\registerpagerange#1#2#3#4#5#6#7%
{\registerpageseparator
\global\setconstant\c_strc_registers_page_state\plusone
\dostarttagged\t!registerpagerange\empty
\dostarttagged\t!registerfrompage\empty
\withregisterpagecommand{#1}{#2}{#3}{#4}%
\dostoptagged
\ifnum\the\numexpr#6-#3\relax=1
f.%
\else
\registeronepagerangeseparator
\dostarttagged\t!registertopage\empty
\withregisterpagecommand{#1}{#5}{#6}{#7}%
\dostoptagged
\fi
\dostoptagged}
\protect
\starttext
\dorecurse{1}{Foo\photographer{Foo Bar} \page}
\dorecurse{2}{Foo\photographer{John Doe} \page}
\dorecurse{4}{Foo\photographer{Yousuf Karsh} \page}
\completephotographer
\stoptext