在 footcite 的第二个可选(后置)参数中命令(使用 \ifthenelse)

在 footcite 的第二个可选(后置)参数中命令(使用 \ifthenelse)

我在附录中定义了一个新命令\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在第一个可选参数(前)中使用 有效,但在第二个可选参数(后)中无效。我使用biblatexbiber。请注意,\footcite以及\mypageref单独工作正常。

答案1

来自这个来源,我找到了解决问题的方法:

    \usepackage{etoolbox}
    \usepackage{refcount}

    \newcommand{\mypageref}[2]{
      \ifnumequal{\getpagerefnumber{#1}}{\getpagerefnumber{#2}}
        {S. \pageref{#1}}
        {S. \pageref{#1}\ --\ \pageref{#2}}
    }

相关内容