bibtextkey 中的冒号

bibtextkey 中的冒号

我在表示参考书目中的项目时总是使用冒号(在 .bib 文件中): 李:05史密斯:11, ETC。

然而,贾布雷夫

某些字符不应在 bibtexkey 中使用,因为它们不兼容或不推荐使用:{ } ( ) , \ " - # ~ ^ : ' (注意冒号!)

冒号有什么问题?我的参考书目会因此出现问题吗?

答案1

询问一个字符在输入键中是否安全有两个方面。

  1. 文件中的字符被 BibTeX(或 Biber)读取时必须是安全的.bib
  2. 该字符在后续通过 LaTeX 处理时必须是安全的。

不安全字符的示例.bib包括,=和。这些字符在文件语法中具有特殊含义,不能在输入键中使用,因为这会使 BibTeX 或 Biber 在解析文件时产生{混淆。}.bib.bib

LaTeX 方面不安全字符的一个例子是~.~在文件方面绝对没问题.bib,但它对 LaTeX 有特殊定义(插入不可中断的空格)。因此,以下 MWE 会中断

\documentclass{article}
\usepackage{natbib}

\begin{filecontents}{\jobname.bib}
@book{appleby~1980,
  author  = {Humphrey Appleby},
  title   = {On the Importance of the Civil Service},
  year    = {1980},
}
\end{filecontents}

\begin{document}
\cite{appleby~1980}
\bibliographystyle{plainnat}
\bibliography{\jobname}
\end{document}

(注意biblatex 用 接受输入键~。)


:不是.bib事情有些问题,因为:在文件语法中没有特殊含义.bib

根据您的语言设置,:要么表现正常,要么具有特殊定义(例如法语)。如果冒号有特殊定义,则可能很危险。但我测试过的所有参考书目和引文设置(当然我只测试了常见的设置)都采取了预防措施来防止出现问题:,因此以下 MWE 可以很好地编译。

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage{natbib}
\usepackage{babel}

\begin{filecontents}{\jobname.bib}
@book{appleby:1980,
  author  = {Humphrey Appleby},
  title   = {On the Importance of the Civil Service},
  year    = {1980},
}
\end{filecontents}

\begin{document}
\cite{appleby:1980}
\bibliographystyle{plainnat}
\bibliography{\jobname}
\end{document}

类似的例子也适用于biblatex。事实上,biblatex示例文件biblatex-examples.bib在输入键中充分使用了冒号。

然而,偶尔会出现结肠问题,请参阅莱安德里斯' 关联参考书目键中的冒号与 babel、biblatex 和 tex4ht 不兼容

相关内容