我想要一个标志来忽略文档中引用的所有页码。目标是这两个命令显示相同的结果:
\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}