TeX Live

出自 ArchWiki
(重定向自 Tex

根据 Wikipedia

TeX Live 是一个自由软件发行版,用于 TeX 排版系统,其中包括主要的 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

安装

请参阅 quickinstall 文档,如有必要,请参阅 完整 文档。该过程归结为

  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 使用 pacman hook 自动化了此过程,该 hook 针对所有默认的系统范围的 texmf 树,但不包括 /usr/local/share/texmf[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

参见