禁止在文内引用中显示页码,但仅限一次

禁止在文内引用中显示页码,但仅限一次

我的导师要求在文内引用时注明页码,请考虑以下 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 在结果中不显示页码?从实际源代码中删除它们会造成破坏,而且需要付出相当大的努力。

期望结果:
所需引用,无页码
但实际上并没有改变我的\textcite\parencite命令。

答案1

我完全同意你的导师的观点,引用中的页码是一件好事。因此,除非有非常好的理由删除它们,否则我不会这么做。

也就是说,这里有一个相当简单的方法,使用标准\AtEveryCitekey-\clearfield技巧(参见)从所有引用命令中删除前注和后注。自定义 biblatex 样式的指南使用 biblatex 禁用 ISSN 但保留 ISBN在 biblatex 书目中禁用月份?通常我更喜欢其他方法\clearfield,例如如何在使用 biblatex 时省略地址字段,但这\clearfield是唯一可行的方法,因为postnoteprenote是虚拟字段)。

\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}

Lorem(Sigfridsson 和 Ryde 1998)

答案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

相关内容