TeX Live
根据 Wikipedia
- TeX Live 是一个自由软件发行版,用于 TeX 排版系统,其中包括主要的 TeX 相关程序、宏包和字体。
TeX Live 包括
TeX Live 的替代品包括 MikTex 和 Tectonic,它们都带有最小安装,并在运行时下载必要的软件包。
Arch 打包的 TeX Live 与原生 TeX Live
有多种安装 TeX Live 的方法。虽然 Arch Linux 软件包仓库中应该提供 TeX Live 的快照(如下所述),但在大多数情况下,该快照每年只更新一次。相比之下,TeX Live 本身是一个滚动发布发行版,基于用户每年升级一次的模型,但个别软件包升级每天都有。
拥有原生且最新的 TeX Live 安装的优势包括可以访问最新的功能和错误修复以及相关文档。虽然可以在没有原生 TeX Live 的情况下升级或安装单个软件包(请参阅 TEXMFLOCAL
和 TEXMFHOME
),但这需要格外小心 - 必须确保所有相关软件包的版本相互兼容。
原生 TeX Live
安装
请参阅 quickinstall 文档,如有必要,请参阅 完整 文档。该过程归结为
- 下载 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,核心安装,基于medium 上游安装方案。该软件包包括 pacman hooks 以自动执行 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 实用程序应该可以开箱即用。 如果您仍然遇到问题,或者您使用的是旧软件包 texlive-core
,那么您应该按照以下步骤使 tlmgr 工作。
- 虽然 texlive-basic 在 TEXMFDIST 中提供了 tlmgr 脚本,但它是损坏的 (FS#74404)。 您可以按照下述方法修复它。
- texconfig(1) 命令在很大程度上已损坏,因为它部分依赖于 tlmgr (FS#59094)。
texconfig
的交互模式需要 dialog。
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。
您还可以访问在线文档,网址为
- https://tug.org/texlive/Contents/live/doc.html
- https://ctan.org/ – 有关 TeX 的各种材料的中心位置
- https://texdoc.org/ (
http://texdoc.org/pkg/packagename
直接生成相关的 PDF)
用法
请参阅以下资源
- Wikibooks:LaTeX
- The Not So Short Introduction to LaTeX 2ε
- Getting to Grips with LaTeX – Andrew Roberts
- TeX FAQ
有些人使用 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 存储(缓存的)运行时数据 |
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/tex/{format}/
目录结构({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
的两行。 例如,要使用 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
替换为 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
然后更新 fontconfig
$ fc-cache && mkfontscale && mkfontdir
- 如果相同的字体(单独地)对 TeX 和 Fontconfig 都可用,即如果搜索路径上有同一字体的多个副本,则这可能会导致与 XeTeX/XeLaTeX 冲突。
- Type 1 字体在 LibreOffice 5.3 及更高版本中不可用。
更新 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