TeX Live
根据Wikipedia:
- TeX Live 是一种自由的的 TeX 排版系统发行版,包含主要的 TeX 相关程序、宏包和字体。
TeX Live 包括:
TeX Live 的替代方案包括 MikTeX 和 Tectonic,它们采用最小化安装方式,并在运行时按需下载所需的包。
Arch-packaged TeX Live 与原生 TeX Live 的对比
安装 TeX Live 有多种方式。虽然 TeX Live 的一个快照应该可以通过 Arch Linux 包仓库获得(如下所述),但该快照大多数情况下每年只更新一次。相比之下,TeX Live 本身是一个滚动发布的发行版,基于用户每年必须升级一次的模型,但每个软件包可以在子日级别进行更新。
拥有原生且最新的 TeX Live 安装的优点包括可以访问最新的功能和 bug 修复,以及相关的文档。尽管在没有原生 TeX Live 的情况下(请参见 TEXMFLOCAL 和 TEXMFHOME),仍然可以升级或安装单独的软件包,但这需要额外的注意——必须确保所有相关软件包的版本彼此兼容。
与原生 TeX Live 相比,Arch 仓库中的软件包通常不包括文档,这是一个问题,因为来自 CTAN 的文档通常仅适用于 TeX 包的最新版本。
原生 TeX Live
安装
请参见 quickinstall 文档,并根据需要查看 full 文档。安装过程如下:
- 下载 netinstall 压缩包
- 解压压缩包并进入新创建的目录
- 运行安装脚本,
perl ./install-tl,启动一个交互式安装程序(文本界面)- 设置所需的安装路径
- 可选地选择 TeX Live 提供的某些“集合”包
- 可选地选择 Letter 纸张尺寸作为默认,而不是 A4
- 等待所有文件下载完毕
- 安装脚本会在过程结束时通知您,需要将 TeX Live 安装路径添加到系统可执行文件和文档路径中:
PATH、MANPATH、INFOPATH。安装脚本会输出在退出前所需的具体路径。
或者,也可以安装 texlive-installerAUR 包,然后按照上述步骤运行 install-tl 。
更新
请参阅 tlmgr 文档,tlmgr update --all 将升级安装时选择的所有包集合。它还会安装已添加到安装的 TeX Live 包集合中的新包。
每年一次,当 TeX Live 发布新版本时,tlmgr update --all 会失败,这时需要重新安装 TeX Live。
Arch 打包的 TeX Live
-
texlive包组 组包含大多数 TeX Live 包,按上游集合分类(见 [1])。
- texlive-basic包,基础安装,基于上游的“中等”安装方案。该包包括 pacman hook 自动化操作 mktexlsr、fmtutil 和 updmap。
-
texlive-latex包 包含必要的 LaTeX 包。(例如,如果您打算使用
pdflatex,则需要此包)。 -
texlive-latexrecommended包 和 texlive-latexextra包 包含许多有用的 LaTeX 包,如
polyglossia、amsmath和graphicx。 - texlive-fontsrecommended包 包含必需的字体(包括默认的 Latin Modern)。
- texlive-fontsextra包 包含附加字体,可在 LaTeX 字体目录查看。
- texlive-xetex包 和 texlive-luatex包 分别包含 XeTeX 和 LuaTeX 的包。
- texlive-bibtexextra包 包含 BibLaTeX 包和额外的 BibTeX 样式及参考文献数据库。
- texlive-mathscience包 包含数学、自然科学和计算机科学所需的基本包。
- texlive-lang包组 组包含为非拉丁字符语言提供字符集和功能的包。
- biber包 提供 BibLaTeX 的替代参考文献处理后端。
请注意,texlive-binextra包 中的某些工具有可选依赖项,未自动安装。例如,latexindent 依赖于 perl-yaml-tiny包 和 perl-file-homedir包。
pacman -F 来查找提供该文件的 Arch 包:
$ pacman -F soul.sty
extra/texlive-plaingeneric 2023.66594-19 (texlive)
usr/share/texmf-dist/tex/generic/soul/soul.sty
如果需要安装一个可用的 CTAN TeX 包,请运行以下命令来确定它是否包含在 Arch 的 texlive- 包中:
$ tlmgr info ctan_package_name | grep collection
这将列出与 Arch texlive- 包对应的 TeX Live 包集合名称(也可以检查 texlive包组 组以确认是否存在此包)。例如,输出 collection: collection-plaingeneric 表示该 TeX 包包含在 texlive-plaingeneric包 中。
另外,可以使用 tlmgr 手动安装单个 TeX 包(见下文)。
tllocalmgr
tllocalmgr 工具由 tllocalmgrAUR 提供,允许您将来自 CTAN 的包作为 pacman 包安装(和更新)。请参见使用方法(-h)了解详细信息。
tlmgr
使用 texlive-basic包 时,tlmgr 工具应当开箱即用。
默认情况下,其需要root权限才可运行。
# tlmgr install package_name
如您想在不使用 root 权限的情况下运行程序,请使用内置的用户模式。默认情况下,该功能会将 CTAN 软件包安装到 ~/texmf 目录。 tlmgr 必须先对此目录进行初始化,因此请运行:
$ tlmgr init-usertree
现在,你可以使用用户模式:
$ tlmgr --usermode install package_name
要更改包的安装位置,请更改 TEXMFHOME 这个环境变量。
$ export TEXMFHOME="$HOME/.local/texmf"
$ tlmgr init-usertree
$ ...
tlmgr 会自行选择一个合适的镜像。不过,你也可以自行设置首选镜像网站。需要你在镜像路径末尾添加 /systems/texlive/tlnet。例如:
$ tlmgr option repository http://mirrors.rit.edu/CTAN/systems/texlive/tlnet
包文档
官方仓库中的包不包含字体/宏包的文档或源文件。
要使用texdoc 离线访问文档,请安装 texlive-doc包 包,它包含完整的 TeX Live 文档和源文件。
您也可以在线访问文档:
- https://tug.org/texlive/Contents/live/doc.html
- https://ctan.org/ – TeX 相关材料的中心
-
https://texdoc.org/ (
http://texdoc.org/pkg/packagename可直接获取相关 PDF)
用法
请参见以下资源:
- Wikibooks:LaTeX
- 《LaTeX 2ε 简明介绍》
- 学习 LaTeX – Andrew Roberts
- TeX FAQ
- 《GNU TeX for the Impatient》(中文译本:《TeX 急就帖》)
有些人使用 TeX 编辑器来创建文档。
编译文档的高级封装器
通常来说,使用 latexmk(1) 等高级工具,或者使用 arara(1),比直接调用 pdflatex(1) 更有意义,主要是因为较低级的工具通常需要多次运行才能完全编译一个文档。
texmf 树和 Kpathsea
texmf 树(texmf 代表 TeX 和 Metafont)应遵循 TeX 目录结构,否则可能无法找到文件。[3]
TeX Live 使用 Kpathsea 库来通过文件名查找路径,跨越多个 texmf 树和当前工作目录。
Kpathsea 按逆序搜索以下变量(较晚的树会覆盖较早的树)。
| 变量 | Arch 默认值 1) | 由 [4] 使用 |
|---|---|---|
TEXMFDIST |
/usr/share/texmf-dist |
原始分发文件 |
TEXMFLOCAL |
/usr/local/share/texmf:/usr/share/texmf |
系统管理员用于全局安装附加或更新的宏、字体等 |
TEXMFSYSVAR |
/var/lib/texmf |
updmap 和 fmtutil(用户模式)存储(缓存)运行时数据 |
TEXMFSYSCONFIG |
/etc/texmf |
updmap 和 fmtutil(用户模式)存储修改后的配置数据 |
TEXMFHOME |
~/texmf |
用户用于个别安装附加或更新的宏、字体等 |
TEXMFVAR |
~/.texlive/texmf-var |
updmap 和 fmtutil(系统模式)存储(缓存)运行时数据 |
TEXMFCONFIG |
~/.texlive/texmf-config |
用户模式的配置数据 |
TEXMFCACHE
|
$TEXMFSYSVAR;
|
使用 ConTeXt MkIV 和 LuaLaTeX 存储(缓存的)运行时数据 |
Kpathsea 提供了 kpsewhich(1) 命令来查找路径。当使用 --var-brace-value=VARIABLE 参数运行时,它还可以打印变量的值。
Kpathsea 使用文件名数据库(ls-R)来加速在系统级 texmf 树(通过 TEXMFDBS 变量配置)中的搜索。这意味着当系统级文件树发生更改时,需要以 root 运行 mktexlsr(1) 或 texhash(符号链接)。texlive-basic包 通过 pacman hook 实现了自动化,该 hook 针对所有默认的系统级 texmf 树,但 /usr/local/share/texmf。[6] 因此,只要您通过 pacman 安装系统级软件包,就完全不需要运行 mktexlsr 或 texhash 。
~/texmf/目录结构{format} 通常是latex),其中自定义类位于 ./{format}文件夹的根目录中,其他本地文件则放在同名文件夹中(例如,mycustompackage.sty放在./{formats}/mycustompackage/mycustompackage.sty文件夹中),然后运行texhash来更新用户数据库。窍门与技巧
更改默认纸张尺寸
目前无法使用 texlive 工具设置默认页面大小,因为它们与标准的 Arch 软件包不兼容。
通常情况下,你会运行 texconfig 或 tlmgr ,它们还可以更改其他有用的设置。
您可以按如下方式编辑配置文件。
- 要为 pdftex 系列命令( pdftex 、 pdflatex 等)设置纸张大小,请编辑
/etc/texmf/tex/generic/tex-ini-files/pdftexconfig.tex文件。
也可以通过运行 kpsewhich pdftexconfig.tex 来发现。修改指定 pdfpageheight 和 pdfpagewidth 的两行。例如,要使用信纸大小,请修改
\pdfpageheight = 297 true mm \pdfpagewidth = 210 true mm
到
\pdfpageheight = 11 true in \pdfpagewidth = 8.5 true in
遗憾的是,这只有在 .fmt 二进制文件重新构建后才会生效。您可以使用 fmtutil-sys 来完成此操作。使用 pacman 重新安装 texlive-bin 也能达到同样的效果。
- 对于 dvips ,您可以使用
-t选项指定纸张尺寸:dvips -t letter foo.dvi。要更改默认值,请编辑/etc/texmf/dvips/config/config.ps文件。
也可以使用 kpsewhich config.ps 命令来查找。该文件的末尾列出了 dvips 已知的所有纸张尺寸。列表中第一个纸张尺寸将作为默认值。只需将您希望设为默认值的纸张尺寸移动到列表顶部即可。一旦该文件发生更改, dvips 的行为就会受到影响。
让字体在Fontconfig下识别
默认情况下,各种 TeX Live 宏包自带的字体不会自动被 Fontconfig 识别 。如果您想在 XeTeX 或 LibreOffice 等软件中使用这些字体,最简单的方法是在字体目录中创建一个指向用户字体路径下子目录的符号链接。对于 OpenType 字体,请运行以下命令:
$ ln -s /usr/share/texmf-dist/fonts/opentype/public/some_fonts_you_want ~/font_path/OTF/
要使 fontconfig 能够访问它们,请运行:
$ fc-cache ~/font_path $ mkfontscale ~/font_path/OTF $ mkfontdir ~/font_path/OTF
TrueType 字体和 Type 1 字体的操作步骤类似。在上面的几行代码中,将 opentype 替换为 truetype 或 type1 ,将 OTF 替换为 TTF 或 Type1 。
或者, texlive-basic 包含文件 /usr/share/fontconfig/conf.avail/09-texlive-fonts.conf ,其中包含 TeX Live 使用的字体目录列表。您可以将此文件与以下命令一起使用:
# ln -s /usr/share/fontconfig/conf.avail/09-texlive-fonts.conf /etc/fonts/conf.d/09-texlive-fonts.conf
然后更新系统配置
$ fc-cache && mkfontscale && mkfontdir
更新babelbib语言定义
如果您遇到 babelbib 没有您需要的最新语言定义这一特殊问题,并且不想重新编译所有内容,您可以从 https://www.tug.org/texlive/devsrc/Master/texmf-dist/tex/latex/babelbib/ 手动获取这些定义,并将其放入 /usr/share/texmf-dist/tex/latex/babelbib/ 中。例如:
$ cd /usr/share/texmf-dist/tex/latex/babelbib/ # wget https://www.tug.org/texlive/devsrc/Master/texmf-dist/tex/latex/babelbib/romanian.bdf # wget [...all-other-language-files...] # wget https://www.tug.org/texlive/devsrc/Master/texmf-dist/tex/latex/babelbib/babelbib.sty
之后,您需要运行 texhash 来更新 TeX 数据库:
# texhash