BibTeX 使用 natbib 处理荷兰语“van”名称前缀

BibTeX 使用 natbib 处理荷兰语“van”名称前缀

我想用 LaTeX/BibTeX 生成以下内容:

正文如下:

...我们请读者参阅 Van Noort (2010) 的作品。

在参考书目中:

托马斯·范诺特。一份重要的论文。 2010 年。

我尝试了很多技巧,但似乎无法满足所有要求:

  1. “Thomas van Noort” 必须按名称“Noort”排序出现在参考书目中。
  2. 在运行文本中,“Van”需要大写“V”
  3. 在参考书目中,“van”需要有小写的“v”
  4. 我正在使用 hyperref,并且希望整个“Van Noort (2010)”文本链接到参考文献。

使用 plain\citet将生成:

...我们请读者参阅 van Noort (2010) 的作品。

请注意小写的“v”;根据荷兰名称的标准处理,这是不可接受的。将 BibTeX 名称设置为Van Noort, Thomas使运行文本引用看起来没问题,但在参考书目中我得到了

托马斯·范诺特。一份重要的论文。 2010 年。

请注意大写的“V”;这也是不可接受的,因为它前面没有名字时才应该是大写的。

(1) 很简单:我将 BibTeXauthor字段设置为{\noopsort{Noort}}{van Noort}, Thomas。 (2) 和 (3) 我可以通过说类似的话来伪装we refer the reader to the work of Van Noort \citeyear{...},但这并不好,并且不能满足 (4)。

有人有什么建议吗?我印象中 LaTeX 和 BibTeX 在设计时就考虑到了这些事情,所以也许我遗漏了一些东西...

答案1

一个可行的方案似乎是

\documentclass{article}
\usepackage[authoryear]{natbib}
\usepackage{hyperref}

% #1: sorting key, #2: prefix for citation, #3: prefix for bibliography
\DeclareRobustCommand{\VAN}[3]{#2} % set up for citation

\begin{document}
\citet{vannoort}
\citet{other}

\bibliographystyle{plainnat}

% here we change the meaning of \VAN to use the prefix for the bibliography
\DeclareRobustCommand{\VAN}[3]{#3}

\bibliography{vannoort}
\end{document}

文件中的条目.bib

@article{vannoort,
author={{\VAN{Noort}{Van}{van}} Noort, Thomas},
title={An important paper},
year=2010,
}

在第一个参数中,\VAN您可以放置​​任何您需要的内容以确保正确排序。


正如 Florian Rubach 所问,我问您几句话。

对于 BibTeX 来说,类似的东西{\command{something}}就像一个“重音符号”;通常人们会这样做{\"{u}}来将 ü 排序为“u”(这在德语中可能不正确,但在英语中是正确的)。但是,可以使用此功能强制进行我们想要的排序。

\DeclareRobustCommand{\VAN}[3]{#2}序言中,我们说当 LaTeX\VAN{Noort}{Van}{van}在文档中找到内容时,它应该忽略第一个和第三个参数,因此打印“Van”。这将来自读取文件时存储的内容aux。但是,在参考书目之前,我们更改了命令,以便它忽略第一个和第二个参数,因此打印“van”,这是参考书目中所需要的。

第一个参数是绝不LaTeX 使用,但它是由 BibTeX 使用的;第一个参数中的字符串可以是任何确保正确排序的内容:它位于姓氏的其余部分之前,因此它将是排序的最重要信息。

我应该提到,我不会改变一个名字在两个地方的出现方式。

答案2

我理解,忽略作者姓名中的“von”部分用于分类目的是荷兰印刷术中的常见做法——很可能是因为大约一半的荷兰人的名字中都有“de”或“van”。(好吧,“大约一半”可能有点夸张。)顺便说一句,“荷兰”排序方式并非荷兰独有;例如,我知道瑞士德语区也在某种程度上采用这种排序方式。例如,住在苏黎世的名叫“Peter von Matt”的人在电话簿中会被归类为“M”(如“Matt, Peter von”)而不是“V”。

实际上,修改大多数书目样式以实现“荷兰”排序样式相当容易。修改书目样式文件可以免去您手动编辑.bib文件中的作者字段(可能很多)以覆盖相关名称的默认排序方法的任务。为了具体起见,我将在以下示例中假设您采用plainnat书目样式。对于许多其他书目样式,调整应该不会太难。

  • 在你的 TeX 发行版中找到该文件plainnat.bst。复制此文件并将副本命名为 。plaindutch.bst(不要直接编辑/修改 TeX 发行版的原始文件。)

  • plaindutch.bst在您最喜欢的文本编辑器中打开。

  • 找到函数sort.format.names。在该函数中,找到以下行:

       s nameptr "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
    

    将此行更改为:

       s nameptr "{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
    

    即使您完全不熟悉 BibTeX 的语法,我相信您也能够知道发生了什么:经过这样的改变,按作者姓名排序将忽略任何“von”组件。

  • 将文件保存plaindutch.bst在与主文件相同的目录中.tex,或保存在 TeX 发行版搜索的目录中。如果使用后一种方法,请务必更新 TeX 发行版的文件名数据库。

  • \bibliographystyle{plaindutch}通过在文件中发布指令开始使用新的书目样式.tex

祝您 BibTeX 愉快!

评论:这个答案最初是为了解决这个问题而发布的Latex 引用 Bibtex。错误的大写字母和字母顺序。但是,这个问题被关闭了,因为它是此帖子的重复。我迁移了我的答案,希望其他人可以看到它。

答案3

Natbib\Citet为通常使用小写字母但不在句首的语言提供了命令。此命令将使货车等等大写。没有什么可以阻止你在\Citet任何地方使用。这可以与你的\noopsort解决方案相结合:

\documentclass{article}
\usepackage[authoryear]{natbib}
\usepackage{hyperref}

\newcommand{\noopsort}[2]{#2}

\begin{document}
\citet{vannoort}
\Citet{vannoort}
\Citet{other}

\bibliographystyle{plainnat}
\bibliography{vannoort}
\end{document}

vannoort.bib:

@article{vannoort,
    author={\noopsort{Noort}{van Noort}, Thomas},
    title={An important paper},
    year=2010
}

@article{other,
    author={Other, Some},
    title={Not so important paper},
    year=2011
}

输出:

在此处输入图片描述

答案4

在您开始破解或使用 LaTeX 代码来解决这个问题之前:也许 bibtex 可以本地做到这一点?

Bibtex 可以识别 4 个姓名部分,但只有您以一种可以区分每个部分的格式输入作者姓名时,它才能做到:

  • “jr”(jr、sr 等名称)
  • “von” 部分(例如 von、van、van de、di 等名称)

http://maverick.inria.fr/~Xavier.Decoret/resources/xdkbibtex/bibtex_summary.html#names了解更多信息。

简短版本:使用 author = {von Last, jr, First} 时“von”部分不用大写字母,姓氏和名字均大写。jr 可以大写,也可以不大写。

我不确定这是否能解决您的问题,但如果不能,那么您可能确实需要修补 \citet 以正确处理大写字母。

相关内容