BibTeX 文件中不鼓励评论吗?

BibTeX 文件中不鼓励评论吗?

biber抱怨 BibTeX 文件中本应被视为注释行的内容中有“垃圾”。我想知道 BibTeX 是否根本不鼓励注释。

\documentclass {article}

\usepackage {filecontents}

\begin {filecontents} {ref.bib}
 @book {book1,
 author={author 1},
 title={title 1}}

 book {book2,
 author={author 2},
 title={title 2}}

 @book {book3,
 author={author 3},
 title={title 3}}
\end{filecontents}

\usepackage [backend=biber] {biblatex}
\addbibresource {ref.bib}

\begin {document} 
 \nocite{*}
 \printbibliography
\end {document}

以下是biber的输出:

INFO - This is Biber 2.1
INFO - Logfile is 'mwe.blg'
INFO - Reading 'mwe.bcf'
INFO - Using all citekeys in bib section 0
INFO - Processing section 0
INFO - Looking for bibtex format file 'ref.bib' for section 0
INFO - Decoding LaTeX character macros into UTF-8
INFO - Found BibTeX data source 'ref.bib'
WARN - BibTeX subsystem: /tmp/No7MbpTruX/ref.bib_31209.utf8, line 13, warning: 43 characters of junk seen at toplevel
INFO - Overriding locale 'en-US' defaults 'variable = shifted' with 'variable = non-ignorable'
INFO - Overriding locale 'en-US' defaults 'normalization = NFD' with 'normalization = prenormalized'
INFO - Sorting list 'nty' of type 'entry' with scheme 'nty' and locale 'en-US'
INFO - No sort tailoring available for locale 'en-US'
INFO - Writing 'mwe.bbl' with encoding 'ascii'
INFO - Output to mwe.bbl
INFO - WARNINGS: 1

答案1

我们绝不会阻止你对任何你写过的文件进行评论。你遇到的只是对评论的处理上的轻微分歧,或者你对评论的构成存在分歧。

根据btxdoc,§4,第 7 项,第 13 页

BibTeX 允许在数据库文件中添加任何不在条目内的注释。如果要注释掉某个条目,只需删除@条目类型前面的字符即可。

这意味着不在@<entrytype>{...}条目块内的任何内容都必须被解析器视为注释。

此外,在第 14 页第 4 项中,我们发现

LaTeX 的注释字符%不是数据库文件中的注释字符。

因此从技术上来说(如果你愿意的话,从法律上来说),你使用的阻止book2确实是一条评论。

不过,Biber 警告它提到了“垃圾字符”。您可以放心地忽略此警告,就像 Biber 忽略这些字符一样。相反,您可以将这些警告视为 Biber 的一项附加服务,以警告您可能出现问题。有时人们真的会忘记@或文件中确实有一些垃圾。

与上面引用的摘录相反,Biber 认为以 开头的行%是真正的注释,并且在这些情况下不会发出垃圾字符警告。因此,如果您同意%在文件中的注释开头使用.bib,Biber 不会再打扰您,尽管从技术上讲,块外的行如果没有也@应该被视为注释。%

由于 biber 认为%这是一个真正的注释符号,因此它处理注释条目的方式与 BibTeX 不同。以

%@article{A,

将被 biber 忽略(其余的将成为垃圾),但 bibtex 仍会看到它。

由于%BibTeX 不认为是注释字符,但会逐字传递到 LaTeX(它会被识别为注释,可能会造成灾难性的后果),所以最好不要使用% 里面一个条目。(外面的条目无关紧要,因为它会与所有其他条目一起被忽略)。

入口

@ARTICLE{auchunbekannt,
  title = {Beispielaufsatz},
  journal = {Zeitschrift},
  year = {2001},
  %volume = {7},
  pages = {1--35, 99--291},
  annotation = {lorem},
}

用 Biber 编译会很好(当然,输出中不会出现volume字段),但 BibTeX 会抛出错误。因此,排除字段的更安全方法是重命名它:

 xxxvolume = {7},

相似地,

@article{B,
    author  = {Uthor, A.}, % her full name is Anne Uthor
    journal = {Journal 1},
    title   = {Title},
    year    = {2015},
}

可以使用 Biber 编译,但会抛出错误

You're missing a field name---line 6 of file biblio.bib
 :         author  = {Uthor, A.}, 
 :                                % her full name is Anne Uthor
I'm skipping whatever remains of this entry

使用 BibTeX。

另一方面

@article{A,
    author = {Author, A.},
    journal = {Journal 1},
    title = {Title %1
            },
    year = {2014},
}

可以与 BibTeX 一起使用,但使用 biber 你会在 bbl 中得到这个:

\field{title}{Title %1}

这导致争论失控。

如果您的目标是带注释的参考书目,您还可以在 Biber/BibTeX 未知的字段中注释条目内的条目,这样就可以选择在文档中输出(如果需要)。biblatex甚至有一个annotation字段可以由样式随意显示reading,所有其他标准样式都会忽略它,但它会传递给文件.bbl。诸如这样的新字段myann将被 Biber 和 BibTeX 完全忽略,因此也可以用您的注释填充。

相关内容