在最近我使用的乳胶模板中,我在参考书目命令中看到了两个文件名
\bibliography{biblio, chapter1}
这是什么意思?
答案1
指令
\bibliography{<list of one or more files with extension "bib">}
服务于两个截然不同但并非毫无关联的目的:
对于 BibTeX,它提供了所有 bib 文件的列表,这些文件可能(实际上应该!)包含通过各种
\cite
命令引用的书目条目。BibTeX 搜索列出的 .bib 文件,并(假设它可以找到\cite
d 个条目)根据指令指向的文件中包含的说明对其进行格式化\bibliographystyle
。BibTeX 将其输出放在名为 的文件中\jobname.bbl
,其中“\jobname
”是您的主 tex 文件的名称——包含\documentclass
指令的文件。对于 LaTeX,该指令的
\bibliography
意思是“打开文件\jobname.bbl
并将其内容包含在您正在处理的输入流中,并打印出 bbl 文件的内容就在这儿\bibliography
“。LaTeX 还将参数中指定的任何 bib 文件的名称写入文件\jobname.aux
。
第一次运行 LaTeX 时\jobname.tex
,即前BibTeX 运行后,\jobname.bbl
根据定义,文件仍为空。因此,LaTeX 会打印一个空的书目并发出警告,表示未找到任何书目项。如上所述,它还会将书目文件列表写入文件aux
。此外,在执行 BibTeX 运行之前,所有\cite
命令都打印为,?
因为尚未处理和格式化任何书目项。LaTeX 还会将通过\cite
指令引用的所有书目条目的键写入文件aux
。
当 BibTeX 运行时,它会读取文件\jobname.aux
并找出 (a) 要使用哪种参考书目样式、哪些文件(扩展名为 .bib)可能包含 bib 条目,以及要在文件中查找哪些条目bib
;回想一下,每条\cite
指令都会在文件中生成一行项目\jobname.aux
。BibTeX 使用这些信息来创建文件\jobname.bbl
。
下次运行 LaTeX 时,文件\jobname.bbl
不再为空;因此,LaTeX 将其内容包含在输入流中并生成打印的参考书目。通过查阅文件\jobname.aux
,LaTeX 还会对命令及其对应条目进行匹配\cite
;在运行结束时,LaTeX 会将.aux
每个命令的输出写入文件\cite
。(我相信您知道,某些参考书目样式需要数字引用标注,而其他样式则需要作者年份样式的标注。)
在 BibTeX 传递之后第二次运行 LaTeX 时,它会重新读取文件aux
,现在可以将引用命令与它们应该生成的命令(各种格式的标注)进行匹配。假设没有出现拼写错误或其他错误,所有引用标注现在都应该得到正确解决。
这就是为什么你经常会看到这样的警告:先运行 LaTeX,然后运行 BibTeX,然后再运行 BibTeX再两次完全传播编辑 tex 文件时可能生成的所有更改。