我见过多篇文章提到,人们可能会使用哪些“好”的格式来引用 bibtex 引用键,比如
@ARTICLE{ FormatInQuestion,
author = {XXX},
title = {YYY},
}
我的问题有所不同,在做的时候出现
bibtool --preserve.key.case=on --preserve.keys=on refs.bib > refs_new.bib
我在哪里
@article{ doi:10.1016/s0012-365x(97)00126-x,
_________________________________^
*** BibTool ERROR: (line 2101 in ./references.bib): Unexpected character encountered
因此,即使我要求 bibtool 不要更改任何引用键,它也会抱怨(
键中有一个左括号。
我的问题是
引用键“FormatInQuestion”正式允许使用什么格式?
举个例子,我预计只有右括号FormatInQuestion
=}
可能不被允许。对吗?
答案1
我做了一些实验。
不允许使用括号。如果在初始位置它们被 LaTeX 参数扫描仪删除,则在中间位置它们会导致 BibTeX 失败
Stuff after "}"---line 2 of file bibstump.aux : \citation{b{ra : }ces} I'm skipping whatever remains of this command
显然不允许使用逗号作为字段分隔符。
由于明显的技术问题,反斜杠(即使转义)也是不允许的。
由于类似的原因,百分比也是不允许的。
其他字符在 LaTeX 环境中可能会很危险,例如法语中的双标点符号
babel
或几种语言中的直引号babel
。引用关键字应由可打印的 ASCII 字符组成(上述例外情况除外)。
以下.bib
文件
@article{quo"tes,
author={A B},
title={T},
journal={J},
year=2000,
}
@article{(paren),
author={A B},
title={T},
journal={J},
year=2000,
}
@article{o@th[;]er,
author={A B},
title={T},
journal={J},
year=2000,
}
在非babel
文档中生成以下.bbl
文件
\begin{thebibliography}{1}
\bibitem{quo"tes}
A~B.
\newblock T.
\newblock {\em J}, 2000.
\bibitem{(paren)}
A~B.
\newblock T.
\newblock {\em J}, 2000.
\bibitem{o@th[;]er}
A~B.
\newblock T.
\newblock {\em J}, 2000.
\end{thebibliography}
另一方面,使用与问题中相同的选项运行文件会bibtool
产生.bib
@article{quo"tes,
_____________^
*** BibTool ERROR: (line 1 in ./bibstump.bib): Unexpected character encountered
*** BibTool WARNING: Skipping to next '@'
*** BibTool WARNING: (line 7 in ./bibstump.bib): 49 non-space characters ignored.
@article{(paren),
________________^
*** BibTool ERROR: (line 7 in ./bibstump.bib): Unexpected character encountered
*** BibTool WARNING: Skipping to next '@'
*** BibTool WARNING: (line 13 in ./bibstump.bib): 46 non-space characters ignored.
因此我得出结论,BibTool 引发的错误是程序员的决定(可能是由于使用 Perl 进行字符串管理而引起的)。