我的导师要求在文内引用时注明页码,请考虑以下 MWE 及其输出:
\documentclass{article}
\begin{filecontents}{references.bib}
@article{einstein,
author = "Albert Einstein",
year = "1905"
}
@article{shakespeare,
author = "Shakespeare",
year = "1603"
}
\end{filecontents}
\usepackage[style=authoryear]{biblatex}
\bibliography{references}
\begin{document}
Hello! \parencites[893]{einstein}[79]{shakespeare}
\end{document}
我的问题:
是否有选项或某种方法可以让 PDF 在结果中不显示页码?从实际源代码中删除它们会造成破坏,而且需要付出相当大的努力。
答案1
我完全同意你的导师的观点,引用中的页码是一件好事。因此,除非有非常好的理由删除它们,否则我不会这么做。
也就是说,这里有一个相当简单的方法,使用标准\AtEveryCitekey
-\clearfield
技巧(参见)从所有引用命令中删除前注和后注。自定义 biblatex 样式的指南,使用 biblatex 禁用 ISSN 但保留 ISBN,在 biblatex 书目中禁用月份?通常我更喜欢其他方法\clearfield
,例如如何在使用 biblatex 时省略地址字段,但这\clearfield
是唯一可行的方法,因为postnote
和prenote
是虚拟字段)。
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=authoryear]{biblatex}
\AtEveryCitekey{%
\clearfield{prenote}%
\clearfield{postnote}%
}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem \autocite[379]{sigfridsson}
ipsum \autocites[380]{sigfridsson}[24]{nussbaum}{geer}[21]{worman}
\printbibliography
\end{document}
答案2
存储旧的\parencite
并重新定义它以忽略任何可选参数:
\documentclass{article}
\begin{filecontents*}[overwrite]{references.bib}
@article{einstein,
author = {Albert Einstein},
year = {1905}
}
\end{filecontents*}
\usepackage[style=authoryear]{biblatex}
\addbibresource{references.bib}
\NewCommandCopy\oldparencite\parencite% Copy \parencite into \oldparencite
\DeclareDocumentCommand{\parencite}{o m}{\oldparencite{#2}}
\begin{document}
Hello! \parencite[893]{einstein}
\end{document}
以上内容需要最新的 LaTeX(2020 年 10 月之后)。如果没有,请添加xparse
或使用
\let\oldparencite\parencite% Copy \parencite into \oldparencite
\renewcommand{\parencite}[2][]{\oldparencite{#2}}
一个更普遍的方法是利用biblatex
:
\makeatletter
\DeclareRobustCommand{\blx@cite@parencite}[4]{%
\begingroup
\blx@citeinit
\mkbibparens{%
\blxciteicmd{parencite}{#1}{}{#3}{}%
}#4%
\endgroup
}
\DeclareRobustCommand{\blx@cite@textcite}[4]{%
\begingroup
\blx@citeinit
\blxciteicmd{textcite}{#1}{}{#3}{}%
\endgroup
}
\patchcmd{\blx@multicite@add}{#2}{}
\makeatother
上述命令更新\parencite
、、和以忽略它们的第二个\parencites
参数——可选参数。\textcite
\textcites