我在表示参考书目中的项目时总是使用冒号(在 .bib 文件中): 李:05,史密斯:11, ETC。
然而,贾布雷夫说
某些字符不应在 bibtexkey 中使用,因为它们不兼容或不推荐使用:{ } ( ) , \ " - # ~ ^ : ' (注意冒号!)
冒号有什么问题?我的参考书目会因此出现问题吗?
答案1
询问一个字符在输入键中是否安全有两个方面。
- 文件中的字符被 BibTeX(或 Biber)读取时必须是安全的
.bib
。 - 该字符在后续通过 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 不兼容。