Zref 和信息提取(参考可扩展命令)

Zref 和信息提取(参考可扩展命令)

我正在尝试创建一个简单的 if 命令来查看引用是否跨越一页或多页。如果是单页,则添加“p.”前缀,否则添加“pp.”前缀。

我正在使用zref包。我试图使用命令\zref@extractdefault提取页面的值并在两个标签之间创建一个测试。我在zref手册中看到该命令\zref@extractdefault是可扩展的,但是当我尝试编译时,我收到错误“缺少数字,视为零。”

我做错了什么?

\documentclass{scrbook}

\usepackage[USenglish]{babel}
\usepackage[titleref, user, abspage]{zref}
\usepackage{etoolbox}
\makeatletter%
\def\pagetest#1#2{%
\ifnumcomp{\zref@extractdefault{#1}{page}}{=}{\zref@extractdefault{#2}{page}}{p. \zref[page]{#1}}{pp. \zref[page]{#1}-\zref[page]{#2}}%
}%
\makeatother%
\begin{document}

Bla bla\zlabel{foo1}
\newpage
Bla bla bla\zlabel{foo2}

\pagetest{foo1}{foo2}

\zref[page]{foo1} and \zref[page]{foo2}


\end{document}

答案1

您几乎已经到达!:\zref@extractdefault接受三个参数,而不是两个。

\documentclass{scrbook}

\usepackage[USenglish]{babel}
\usepackage[titleref, user, abspage]{zref}
\usepackage{etoolbox}
\makeatletter%
\def\pagetest#1#2{%
\ifnumcomp{\zref@extractdefault{#1}{page}{0}}{=}{\zref@extractdefault{#2}{page}{0}}{p. \zref[page]{#1}}{pp. \zref[page]{#1}-\zref[page]{#2}}%
}%
\makeatother%
\begin{document}

Bla bla\zlabel{foo1}
\newpage
Bla bla bla\zlabel{foo2}

\pagetest{foo1}{foo2}

\zref[page]{foo1} and \zref[page]{foo2}

\end{document}

在此处输入图片描述

相关内容