是否可以通过在条目中添加字段来“手动覆盖” BibTeX 的引用键选择?

是否可以通过在条目中添加字段来“手动覆盖” BibTeX 的引用键选择?

通常情况下,我基本上可以接受 BibTeX 对引用键的选择(我的意思是它在最终文档中显示的短符号,如 [2] 或 [Hil05],而不是在 tex 文件中输入的键),但偶尔会有一篇论文迫切需要特定的键(例如 Freyd、Hoste、Lickorish、Millet、Ocneano 和 Yetter 的论文,其中明确定义了 HOMFLY 多项式,应该使用键 [HOMFLY],而不是 [FHL+95]),或者 BibTeX 选择了一个特别糟糕的键。

在这些情况下,是否有一个字段可以插入到 bibtex 条目中以覆盖密钥选择,或者除了编辑 .bbl 文件之外还可以做些什么?

答案1

使用biblatex,您可以添加shorthand字段:

\documentclass{article}

\usepackage[style=alphabetic]{biblatex}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@misc{A01,
  shorthand = {Author},
  author = {Author, A.},
  year = {2001},
  title = {Alpha},
}
@misc{B02,
  author = {Buthor, B.},
  year = {2002},
  title = {Bravo},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\nocite{*}

\begin{document}

\printbibliography

\end{document}

在此处输入图片描述

答案2

如果你使用natbib包中,你可以为某个源声明一个“别名”或者替代引用:

例如,以下.bib条目:

@techreport{caltrans2002,
    Author = {{California Department of Transportation}},
    Title = {{Humboldt Bay Bridges Seismic Substructure Retrofit Environmental  Assessment/Finding of No Significant Impact (EA/FONSI)}},
    Year = {2002}}

\citep{caltrans2002}在文档中使用时会产生以下输出:


不含别名的示例引用。


引用占了大部分行可能会很麻烦 - 尤其是当全名必须出现在参考书目中时,但在文本中引用时应该使用一个很好的速记方法。通过\usepackage{natbib}在序言中包含,您可以访问引用别名:

\defcitealias{caltrans2002}{\scshape CalTrans, 2002}

然后使用\citepalias{caltrans2002}而不是\citep{caltrans2002}产生以下输出:


使用别名的示例引用。


在这两种情况下,参考书目中的相关条目如下所示:


示例书目文本。


我用来创建此示例的 LaTeX 和 BibTeX 源可以从以下位置获取GitHub

答案3

Stack Overflow 上实际上有一个非常好的答案:有没有办法覆盖特定条目的 bibtex 样式文件?

事实上,BibTeX 样式文件 (.bst) 所使用的编程语言名为 BAFLL,这可能提醒您这种问题很难处理。

答案4

如果只需要更改一两个标签,并希望坚持bibtex并避免编辑文件bst,那么这是一个非常棘手的解决方案。

唯一的变化是在.bib文件中,我们在其中添加了两个宏。

@preamble{"\newcommand\HOlabel{}"}
@preamble{"\newcommand\HO[2]{HOMFLY}"}
@article{HOMFLY,
  author  = {\HOlabel{P.~Freyd, D.~Yetter, J.~Hoste, W.~B.~R.~Lickorish, K.~Millett, and A.~Ocneanu}},
  title   = {{A new polynomial invariant of knots and links}},
  journal = {Bull. Amer. Math. Soc. (N.S.)},
  volume  = {12},
  Year    = {1985}
}

生成的文件中的条目bbl将如下所示

\bibitem[\HO85]{HOMFLY}
\HOlabel{P.~Freyd, D.~Yetter, J.~Hoste, W.~B.~R.~Lickorish, K.~Millett, and A.~Ocneanu}.
\newblock {A new polynomial invariant of knots and links}.
\newblock {\em Bull. Amer. Math. Soc. (N.S.)}, 12, 1985.

第一个宏会误bibtex以为这\HO是作者姓名的前三个字母,因此标签变为\HO85。然后第二个宏会吃掉这两个数字并输出所需的标签。

此外,此条目将按 排序HO(即,它将出现在字母下,H而不是F

相关内容