背景
为了影响 ConTeXt 放置寄存器条目的顺序,你可以在
\index[KEY]{Term}
例如,如果你想在寄存器中混合使用大写和小写条目,这很有用,例如
\defineregister[regname]
\setupregister[regname]
[compress=yes,
indicator=no,
pagestyle=\tf,
n=1,
before=\blank]
\starttext
\page
% mixed
Aa\regname[AA]{Aa}
ab\regname[AB]{ab}
Ac\regname[AC]{Ac}
% not mixed
Ba\regname[Ba]{Ba}
bb\regname[bb]{bb}
Bc\regname[Bc]{Bc}
\page
\placeregname
\stoptext
导致
问题
有时有些单词只是首字母不同(大写与小写)。当两者都出现在登记册中并在不同的页面上提及时,登记册条目不会崩溃,因为这些术语本身以不同的字母开头。例如
\defineregister[regname]
\setupregister[regname]
[compress=yes,
indicator=no,
pagestyle=\tf,
n=1,
before=\blank]
\starttext
hebräisch\regname[HEBRÄISCH]{hebräisch}
Hebräisch\regname[HEBRÄISCH]{Hebräisch}
\page
hebräisch\regname[HEBRÄISCH]{hebräisch}
Hilfe\regname[HILFE]{Hilfe}
\page
\placeregname
\stoptext
结果是
问题:
是否可以对首字母相同的条目进行求和,而无需将所有小写条目放在所有大写条目后面?我想要实现这样的目标:
答案1
不要使用可选参数。可选参数适用于无法从内容推断排序的情况,即\regname[CONTEXT]{\ConTeXt}
。这显然不是您使用的单词的情况。添加此可选参数并具有不同的条目可使单词免于参与导致您观察到的行为的折叠。不要试图欺骗 ConTeXt 认为所有内容都是大写的,只需通过调整排序方法告诉它您希望在索引中将大写单词放在小写单词之前。
\defineregister[regname]
\setupregister[regname]
[compress=yes,
indicator=no,
pagestyle=\tf,
n=1,
before=\blank,
method={zc,mm,uc}]
\starttext
hebräisch\regname{hebräisch}
Hebräisch\regname{Hebräisch}
helfen\regname{helfen}
Herrscher\regname{Herrscher}
hölzern\regname{hölzern}
\page
hebräisch\regname{hebräisch}
Hilfe\regname{Hilfe}
haben\regname{haben}
Holz\regname{Holz}
\page
\placeregname
\stoptext
如果您坚持使用可选参数,则必须对不同的条目使用不同的键。
\defineregister[regname]
\setupregister[regname]
[compress=yes,
indicator=no,
pagestyle=\tf,
n=1,
before=\blank]
\starttext
hebräisch\regname[Hebräisch]{hebräisch}
Hebräisch\regname[HEBRÄISCH]{Hebräisch}
\page
hebräisch\regname[Hebräisch]{hebräisch}
Hilfe\regname[HILFE]{Hilfe}
\page
\placeregname
\stoptext