我想cleveref
将对一页或两页的页面范围的引用显示为“5f.”或“5ff.”,而不是分别显示为“5–6”或“5–7”。
根据马丁·施罗德的评论参考页码范围:LaTeX 可以将“3-4”转换为第 4f 页,或者将“3-5”转换为第 3ff 页吗?这应该是可行的,不幸的是,我找不到任何关于如何实现这一点的提示。
答案1
这可以通过宏来完成\cpagerangelabelformat{type}{format}
。
该格式可以使用#1
参数#6
值,#1
并且#2
是从文件中提取的真实页计数器值.aux
。
这个例子还不够完美,但是它显示了一页或一页差异大于 1 且恰好为 1 的正确值。
确实如此不是处理页面标签以错误顺序出现的情况!
\documentclass{article}
\usepackage{blindtext}
\usepackage{cleveref}
\crefrangelabelformat{page}{%
\ifnum #2 = #1 % same page
#1%
\else
\ifnum #2 > \numexpr #1+1\relax % Difference > 1
#1ff.\@%
\else
#1f.\@% Difference = 1
\fi
\fi
}
\begin{document}
In \cpagerefrange{sec:one}{sec:one} we see
In \cpagerefrange{sec:one}{sec:another} we see
In \cpagerefrange{sec:one}{sec:yetanother} we have
Wrong usage (reversed labels!): in \cpagerefrange{sec:yetanother}{sec:one}
\section{A section} \label{sec:one}
\blindtext[5]
\section{Another section} \label{sec:another}
\blindtext[10]
\section{Yet another section} \label{sec:yetanother}
\blindtext[5]
\end{document}