我以前只使用 overleaf 编译我的 tex 文件,它可以处理所有底层事务。现在,我试图弄清楚不同的程序的作用。我知道 Texlive 和 MikTex 执行相同的功能,pdflatex 和 LuaTex 也是如此,然后还有 latexmk(它是一个 make 系统,不确定它是什么)。pdflatex 似乎是一个编译器,但我不确定 TeXLive 是什么,尽管我读过它只是一组库。
我还没有读过关于这方面的任何概述,所以希望可以澄清一下:TexLive、pdfLatex、Latexmk 等程序的功能是什么?它们之间有什么关系?也许澄清这个问题的一种方法是解释当使用 overleaf 等 IDE 编译 .tex 文件时如何调用这些不同的程序。
答案1
要使用 TeX,您需要:
- TeX 的实现(用现代术语来说就是“tex 引擎”),它可以将源文件转换为 PDF(或 DVI)。
pdftex
目前使用最广泛的变体。 - 用于编写 tex 文件的编辑器。(我使用但
emacs
,,,,texstudio
... )texshop
vim
notepad
- 可供使用的大量输入文件集合:字体、乳胶包、参考书目样式......
- 各个部分的文件。
- 辅助程序用于执行相关工作,例如对索引和参考书目进行排序:
bibtex
,,,,,...biber
makeindex
xindy
- 可选的包装器脚本可帮助决定以何种顺序运行哪些程序。一些编辑器菜单选项或实用程序(例如
latexmk
、、arara
...)可执行此操作 - 用于查看生成的 PDF 的预览器:
acrobat reader
、大多数 Web 浏览器、、xpdf
...
为了获得所有这些不同的部分,大多数人使用诸如 texlive 或 miktex 之类的发行版,它们提供所有这些部分并提供更新实用程序。Linux 系统在其标准 Linux 包管理器中包含 texlive 的变体,或者您可以直接安装 texlive 或 miktex。
Overleaf 提供了一个托管的 texlive 系统以及一个在线编辑器(ACE)和一个跨浏览器的 PDF 查看器(pdf.js,本质上是 Firefox 中使用的 PDF 阅读器,但打包为一个跨浏览器的 javascript 库)。它使用 latexmk 来控制处理,以便根据需要通过 pdflatex/bibtex/makeindex 等处理文档以生成显示的 PDF,