我在附录中定义了一个新命令\mypageref
来引用文本部分的页码。这种文本部分的开头标记为,例如,标记为\label{text_begin}
,文本部分的结尾标记为\label{text_end}
。该语句旨在打印,例如,如果文本部分完全在第 42 页上,则打印“S. 42”,或者如果文本部分跨越多页,则打印,例如,打印“S. 42 - 44”。我使用包\ifthenelse
的语句ifthen
。该命令定义如下:
\newcommand{\mypageref}[2]{
\ifthenelse{\equal{\pageref{#1}}{\pageref{#2}}}
{S. \pageref{#1}}
{S. \pageref{#1}\ --\ \pageref{#2}}
}
它在正文和脚注中运行良好。但是,我遇到的情况是,我的附录包含的文本也属于“来源”,在我的 bib 文件中有一个自己的条目,比如说
@misc{biblabel,
author = {AAA},
title = {BBB},
year = 2014
}
现在,我想使用
\footcite[pre][\mypageref{text_begin}{text_end}]{biblabel}
失败并出现错误:“缺少\endcsname
插入”。
有趣的是,
\footcite[\mypageref{text_begin}{text_end}][post]{biblabel}
有效。换句话说,\mypageref
在第一个可选参数(前)中使用 有效,但在第二个可选参数(后)中无效。我使用biblatex
和biber
。请注意,\footcite
以及\mypageref
单独工作正常。
答案1
来自这个来源,我找到了解决问题的方法:
\usepackage{etoolbox}
\usepackage{refcount}
\newcommand{\mypageref}[2]{
\ifnumequal{\getpagerefnumber{#1}}{\getpagerefnumber{#2}}
{S. \pageref{#1}}
{S. \pageref{#1}\ --\ \pageref{#2}}
}