Hyperref:可能与 \alph 和 \roman 页码冲突

Hyperref:可能与 \alph 和 \roman 页码冲突

我记得在某处读到过(现在似乎找不到实际的页面)为了避免重复引用,应该将未编号的页面(例如,标题页,版权页等)hyperref的页码切换为“未使用的”(例如)。\alph

此外,人们通常使用罗马数字(例如,\roman)来表示前言(例如,目录、图表列表、介绍等)。

我突然想到,如果前言比较长,这两种编号可能会发生冲突,而且您仍然会得到重复的引用。例如,假设您有 10 页未编号的页面,编号为 a 到 j,假设您有 60 页前言,编号为 i 到 dx:未编号部分的“d”会不会与前言中的“d”发生冲突?有没有办法避免这种情况?

答案1

确实,页码冲突仍然可能发生,尽管在正常情况下不太可能发生。但可以轻松避免:只需修改“不可见”的页码,使其包含永远不能成为罗马数字的一部分的内容。以下示例引入了一种新的页码样式myalph,它只是zalph输出前面添加一个:

\documentclass{article}

\makeatletter
\newcommand{\@myalph}{z\@alph}
\makeatother

\usepackage{hyperref}

\begin{document}

\pagenumbering{myalph}
\setcounter{page}{9}
test

\newpage
\pagenumbering{roman}
test

\end{document}

答案2

有五种“标准”页码样式:arabicromanRomanalphAlph和。当and (i、v、x、l、c、d、m)fnsymbol之间发生冲突时,您可以使用and或and或/ and ,而无需重新定义任何内容。(如果您在后记中使用另一种页码样式,当然,您可能仍必须使用 Vihrov 的解决方案。)alphromanalphRomanAlphromanalphAlphfnsymbol

相关内容