我多次读到过这样的说明:“在文件上运行 Latex,然后运行 Bibtex,之后再次运行 Latex...”。我使用 TeXstudio 作为编辑器,在编译任何 tex 代码时,我只需按下编译按钮即可。这背后发生了什么对我来说并不重要,因为我想要的 pdf 无论如何都已经创建了。现在我正在使用.bib
文件进行引用,我遇到了一个问题,这个问题的解决方案与上面的相同。但我该怎么做呢?我只知道编译按钮。我如何从 Bibtex 单独运行 Latex,从 Latex 单独运行 Bibtex?当只需按下“编译”时,两者中的哪一个正在运行?
答案1
“编译”按钮正在运行默认的编译序列。听起来,对于你的情况,这可能是 pdfLaTeX。(如果你愿意,你可以更改它 - 许多编辑器允许你自定义默认值。)
要生成参考书目,您需要查看文档中的内容。您如何管理参考文献?如果您使用如下命令
\bibliographystyle{stylename}
\bibliography{bibfilename}
然后你需要运行
pdflatex
->bibtex
->pdflatex
->pdflatex
如果你有类似这样的情况:
\usepackage{biblatex}
\addbibresource{bibfilename.bib}% or \bibliography{bibfilename}
...
\printbibliography
然后你需要运行
pdflatex
->biber
->pdflatex
->pdflatex
可以使用bibtex
withbiblatex
但这不是默认设置。除非你有
\usepackage[backend=bibtex]{biblatex}
您无需担心这一点。如果您确实使用此选项,则应使用bibtex
上面的编译顺序,而不是该biber
顺序。
要运行编译,您可以使用命令行或编辑器。大多数编辑器都有按钮或菜单,其中包含非默认编译选项。即使 pdfLaTeX 是默认的,也可能有一个 bibTeX(也许还有 biber)的按钮或菜单选项。您可能可以进一步自定义以适合您的工作流程。
答案2
这是我喜欢使用的一个技巧:
在项目的根目录中创建一个名为 eg 的 python 脚本
compile_refs.py
,并将以下代码粘贴到其中:#!/usr/bin/python import subprocess, sys commands = [ ['pdflatex', sys.argv[1] + '.tex'], ['bibtex', sys.argv[1] + '.aux'], ['pdflatex', sys.argv[1] + '.tex'], ['pdflatex', sys.argv[1] + '.tex'] ] for c in commands: subprocess.call(c)
当您想要编译参考文献时,只需运行:
python compile_refs.py main_file_name
。
答案3
这里有一个有用的功能,Makefile
你可以使用它来自动化编译过程,如cfr 的答复:
DOCNAME=report
all: report
.PHONY: clean
report:
pdflatex $(DOCNAME).tex
bibtex $(DOCNAME).aux
pdflatex $(DOCNAME).tex
pdflatex $(DOCNAME).tex
view: report
open $(DOCNAME).pdf
clean:
rm *.blg *.bbl *.aux *.log
Makefile
只需将其粘贴到与主 .tex 文件位于同一目录中的文件中,然后将report
变量定义替换DOCNAME=report
为文件的名称。
然后您可以按如下方式使用它:
make
或者make report
将从 TeX 源创建 PDF 文档。make view
如果尚未创建,将创建 PDF 并使用系统默认的 PDF 查看器打开它。make clean
将清理 PDF 创建过程中创建的中间文件。
如果您需要使用biber
而不是bibtex
,您只需将 对 的调用替换bibtex
为 对 的调用biber
。
答案4
如果您正在使用 TEXSTUDIO。转到:设置 --> 编译并运行,等待每个步骤的执行:
1 pdflatex。--> 2 bibtex。--> 3 pdflatex。--> 4 pdflatex。