Biblatex 忽略 \cites 中的 postnode

Biblatex 忽略 \cites 中的 postnode

我想要一个标志来忽略文档中引用的所有页码。目标是这两个命令显示相同的结果:

\cite[1]{mykey}
\cite{mykey}

\cite我使用以下语句实现了该命令:

\let\oldcite\cite
\renewcommand{\cite}[2][]{\oldcite[]{#2}}

我该如何执行该\cites命令?目标是从这两个命令中获得相同的结果:

\cites[1]{mykey}[10-15]{mykey2}
\cites{mykey}{mykey2}

谢谢

答案1

这里有两个解决方案:要么重新定义命令\cites,要么使用新的命令\pageson对和\pagesoff来影响所有以下\cite命令,正如 moewe 所暗示的那样。通过清除字段可以实现页码的抑制postnote。我从中了解到biblatex字段抑制书内书引用中的非标准页面

示例代码的结果

\documentclass[a5paper]{article}
\usepackage{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Book{mykey,
  author = {Author, A},
  title =     {Title A},
  publisher = {Books A},
  year =      {2000},
}
@Book{mykey2,
  author = {Author, B},
  title =     {Title B},
  publisher = {Books B},
  year =      {2001},
}
\end{filecontents}
\addbibresource{\jobname.bib}

% Commands for setting page references on and off
\newcommand{\pageson}{\renewcommand{\conditionalpages}{}}
\newcommand{\pagesoff}{\renewcommand{\conditionalpages}{\clearfield{postnote}}}
\AtEveryCitekey{\conditionalpages}
\newcommand{\conditionalpages}{}

% Renewed \cites command
\let\savedcites\cites
\newcommand{\oldcites}{\pageson\savedcites}
\renewcommand{\cites}{\pagesoff\savedcites}

\begin{document}

\section*{Renewed command}
Using \verb+\cites+~\cites[1]{mykey}[10-15]{mykey2},
\verb+\oldcites+~\oldcites[1]{mykey}[10-15]{mykey2}.

\section*{Setting page references off}
\pagesoff
\verb+\autocites+~\autocites[1]{mykey}[10-15]{mykey2},
\verb+\footcites+~\footcites[1]{mykey}[10-15]{mykey2}.

\section*{Setting page references on}
\pageson
\verb+\autocites+~\autocites[1]{mykey}[10-15]{mykey2},
\verb+\footcites+~\footcites[1]{mykey}[10-15]{mykey2}.

\printbibliography
\end{document}

相关内容