TeX Live

出自 ArchWiki
(重定向自 TeX

根据 维基百科

TeX LiveTeX 排版系统的自由软件发行版,其中包含主要的 TeX 相关程序、宏包和字体。

TeX Live 包括

  • 许多 TeX 引擎,例如
  • 基本宏包(在 TeX 术语中称为格式),例如
  • 许多用户制作的软件包

TeX Live 的替代品包括 MikTex 和 Tectonic,它们都带有最小安装,并在运行时下载必要的软件包。

Arch 打包的 TeX Live 与原生 TeX Live

安装 TeX Live 有多种方法。虽然可以从 Arch Linux 软件包仓库获得 TeX Live 的快照(如下所述),但在大多数情况下,该快照每年只更新一次。相比之下,TeX Live 本身是一个滚动发布发行版,基于用户每年升级一次的模型,但个别软件包升级每天多次可用。

拥有原生且最新的 TeX Live 安装的优势包括可以访问最新的功能和错误修复以及相关文档。虽然可以在没有原生 TeX Live 的情况下升级或安装单个软件包(参见 TEXMFLOCALTEXMFHOME),但这需要格外小心 - 必须确保所有相关软件包的版本相互兼容。

注意: TeX Live 的多个安装可以和平共存在单个系统上。

原生 TeX Live

安装

请参阅 快速安装 文档,如有必要,请参阅 完整 文档。该过程归结为

  1. 下载 netinstall 归档文件
  2. 解压归档文件并更改到新创建的目录
  3. 运行安装脚本 perl ./install-tl,它会在文本界面中启动交互式安装过程
    1. 设置所需的安装路径
    2. 可选地,选择 TeX Live 提供的软件包集合的子集
    3. 可选地,选择 Letter 纸张尺寸作为默认尺寸,而不是 A4
    4. 等待一切下载完成
  4. 正如安装脚本将在过程结束时通知您的一样,有必要将 TeX Live 安装添加到系统可执行文件和文档路径:PATHMANPATHINFOPATH。安装脚本在退出前会打印所需的精确添加项。

或者,也可以安装 texlive-installerAUR 软件包,并在遵循上述步骤的同时运行 install-tl

更新

请参阅 tlmgr 文档,tlmgr update --all 升级安装期间选择的集合中的所有软件包。它还将安装新添加到已安装的 TeX Live 集合中的任何软件包。

每年一次,当有新的 TeX Live 版本发布时,tlmgr update --all 将会失败,并且需要重新安装 TeX Live。

Arch 打包的 TeX Live

请注意,texlive-binextra 中的某些工具具有可选依赖项,这些依赖项不会自动安装。例如,latexindent 依赖于 perl-yaml-tinyperl-file-homedir

提示: 如果您缺少特定的 .sty 文件,您可以运行 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 软件包(见下文)。

注意: TeX Live 中包含的某些工具和实用程序依赖于 ghostscriptperlpythonruby。有关详细信息,请参阅每个软件包的可选依赖项。

tllocalmgr

警告: 有人建议 tllocalmgr 将不再工作。参见 [2]

tllocalmgr 实用程序由 tllocalmgrAUR 提供,使您可以将 CTAN 中的软件包作为 pacman 软件包安装(和更新)。有关详细信息,请参阅 其用法 (-h)。

tlmgr

使用 texlive-basictlmgr 实用程序应该可以开箱即用。如果您仍然遇到问题,或者您正在使用旧软件包 texlive-core,则应按照以下步骤操作以使 tlmgr 工作。

注意
  • 虽然 texlive-basicTEXMFDIST 中提供了 tlmgr 脚本,但它是损坏的 (FS#74404)。您可以按照下述方法修复它。
  • texconfig(1) 命令在很大程度上已损坏,因为它部分依赖于 tlmgr (FS#59094)。texconfig 的交互模式需要 dialog

本文或本节的事实准确性存在争议。

原因: “修复”应合并到 texlive-basic 软件包中。编辑 TEXMFDIST 中的文件在软件包升级后将无法保留。(在 Talk:TeX Live 中讨论)

tlmgr 实用程序是从 CTAN 安装和更新软件包的标准方法。它需要进行如下小修复

首先,编辑 TEXMFDIST/scripts/texlive/tlmgr.pl 并将 $Master = "$Master/../.."; 替换为 $Master = "${Master}/../../..";。路径前缀 TEXMFDIST 不是预定义的环境变量,它在本文的下面定义。将其替换为正确的值。

也可以通过命令行使用以下命令完成此操作

# sed -i 's/\$Master = "\$Master\/..\/..";/\$Master = "\$Master\/..\/..\/..";/' "$TEXMFDIST/scripts/texlive/tlmgr.pl"

为 perl 脚本创建一个别名(您可以将其添加到您的 shell 初始化文件中)。

alias tlmgr="$TEXMFDIST/scripts/texlive/tlmgr.pl --usermode"

现在您可以在用户模式下初始化它(这将使用 ~/texmf 作为安装前缀)

$ tlmgr init-usertree

设置您首选的 镜像。您需要将 /systems/texlive/tlnet 附加到镜像的路径。例如

$ tlmgr option repository http://mirrors.rit.edu/CTAN/systems/texlive/tlnet

现在您可以像往常一样安装 CTAN 软件包

$ tlmgr install package_name

软件包文档

官方仓库中的软件包不包含字体/宏包的文档或源文件。

为了使用 texdoc 进行离线访问,安装 整个 TeX Live 文档和源文件,使用 texlive-doc

您还可以访问在线文档,网址为

用法

请参阅以下资源

有些人使用 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 updmap 和 fmtutil(系统模式)用于存储修改后的配置数据
TEXMFCACHE $TEXMFSYSVAR;$TEXMFVAR ConTeXt MkIV 和 LuaLaTeX 用于存储(缓存的)运行时数据
注意: 默认值在 /etc/texmf/web2c/texmf.cnf[5] 中定义;它们可以使用 环境变量 覆盖。

Kpathsea 提供了 kpsewhich(1) 命令来查找路径。当使用 --var-brace-value=VARIABLE 参数运行时,它还可以打印变量的值。

Kpathsea 使用文件名数据库 (ls-R) 来加速在系统范围的 texmf 树中搜索(使用 TEXMFDBS 变量配置)。这意味着当系统范围的文件树发生更改时,需要以 root 身份运行 mktexlsr(1)texhash(一个符号链接)。幸运的是,texlive-basic 使用针对所有默认系统范围的 texmf 树(但不包括 /usr/local/share/texmf)的 pacman hook 自动执行此操作。[6] 因此,只要您通过 pacman 安装系统范围的软件包,您就应该根本不需要运行 mktexlsrtexhash

提示: 为了设置本地存储库,您可以创建 ~/texmf/tex/{format}/ 目录结构({format} 通常是 latex),其中自定义类位于 ./{format} 文件夹的根目录中,其他本地文件放在同名文件夹中(例如 mycustompackage.sty 放在 ./{formats}/mycustompackage/mycustompackage.sty 中),然后运行 texhash 以更新用户数据库。

技巧与窍门

更改默认纸张尺寸

本文或本节的事实准确性存在争议。

原因: 可以通过直接编辑配置文件来实现。[7] (在 Talk:TeX Live 中讨论)

目前无法使用 texlive 工具设置默认页面大小,因为它们不适用于标准 Arch 软件包。

通常,您会运行 texconfigtlmgr,它们也能够更改其他有用的设置。

您可以按如下方式编辑配置文件。

  • 要为 pdftex 命令系列(pdftexpdflatex 等)设置纸张尺寸,请编辑 /etc/texmf/tex/generic/tex-ini-files/pdftexconfig.tex 文件。

也可以通过运行 kpsewhich pdftexconfig.tex 找到该文件。更改指定 pdfpageheightpdfpagewidth 的两行。例如,要使用 letter 尺寸,请更改

\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 替换为 truetypetype1,并将 OTF 替换为 TTFType1

或者,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

然后更新 fontconfig

$ fc-cache && mkfontscale && mkfontdir
注意
  • 如果相同的字体(分别)可用于 TeX 和 Fontconfig,即如果同一字体的多个副本在搜索路径上可用,则这可能会导致与 XeTeX/XeLaTeX 冲突。
  • Type 1 字体在 LibreOffice 5.3 及更高版本中将不可用。

更新 babelbib 语言定义

本文或章节需要语言、wiki 语法或风格改进。有关参考,请参阅 Help:Style

原因: 您不应更改 /usr/share/texmf-dist/。(在 Talk:TeX Live 中讨论)

如果您遇到 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

参见