Bibtex、Latex 编译

Bibtex、Latex 编译

我多次读到过这样的说明:“在文件上运行 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

可以使用bibtexwithbiblatex但这不是默认设置。除非你有

\usepackage[backend=bibtex]{biblatex}

您无需担心这一点。如果您确实使用此选项,则应使用bibtex上面的编译顺序,而不是该biber顺序。

要运行编译,您可以使用命令行或编辑器。大多数编辑器都有按钮或菜单,其中包含非默认编译选项。即使 pdfLaTeX 是默认的,也可能有一个 bibTeX(也许还有 biber)的按钮或菜单选项。您可能可以进一步自定义以适合您的工作流程。

答案2

这是我喜欢使用的一个技巧:

  1. 在项目的根目录中创建一个名为 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)
    
  2. 当您想要编译参考文献时,只需运行: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为文件的名称。

然后您可以按如下方式使用它:

  1. make或者make report将从 TeX 源创建 PDF 文档。
  2. make view如果尚未创建,将创建 PDF 并使用系统默认的 PDF 查看器打开它。
  3. make clean将清理 PDF 创建过程中创建的中间文件。

如果您需要使用biber而不是bibtex,您只需将 对 的调用替换bibtex为 对 的调用biber

答案4

如果您正在使用 TEXSTUDIO。转到:设置 --> 编译并运行,等待每个步骤的执行:

1 pdflatex。--> 2 bibtex。--> 3 pdflatex。--> 4 pdflatex。

相关内容