Bibtex 引用关键字段的正式格式

Bibtex 引用关键字段的正式格式

我见过多篇文章提到,人们可能会使用哪些“好”的格式来引用 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

我做了一些实验。

  1. 不允许使用括号。如果在初始位置它们被 LaTeX 参数扫描仪删除,则在中间位置它们会导致 BibTeX 失败

    Stuff after "}"---line 2 of file bibstump.aux
     : \citation{b{ra
     :               }ces}
    I'm skipping whatever remains of this command
    
  2. 显然不允许使用逗号作为字段分隔符。

  3. 由于明显的技术问题,反斜杠(即使转义)也是不允许的。

  4. 由于类似的原因,百分比也是不允许的。

  5. 其他字符在 LaTeX 环境中可能会很危险,例如法语中的双标点符号babel或几种语言中的直引号babel

  6. 引用关键字应由可打印的 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 进行字符串管理而引起的)。

相关内容