$\LaTeX{}$宏包安装

本文总结了如何安装和更新 \(\LaTeX{}\) 的宏包。


安装和更新宏包

\(\textrm{TeX Live}\)\(\textrm{MiKTeX}\) 分别提供了图形界面的宏包管理器 \(\textrm{TEX Live Manager}\)\(\textrm{MiKTeX Package Manager}\),用于安装、管理和更新宏包。一般情况下,直接在图形界面的工具下按提示操作即可(\(\textrm{MiKTeX Package Manager}\) 有普通权限和管理员权限的版本,建议总是使用管理员权限的版本)。

两者也可以通过各自的命令行工具安装和更新宏包:

1
2
3
4
5
6
7
8
9
10
11
12
13
% TeX Live 命令行工具 tlmgr 的使用示例
% 安装/卸载宏包
tlmgr install <package-name>
tlmgr remove <package-name>
% 更新所有宏包(包括 tlmgr 本身)
tlmgr update --all --self
% 列出所有可更新的宏包
tlmgr update --list
% 指定更新源地址
% <CTAN mirrors> 形如 https://mirrors.tuna.tsinghua.edu.cn/CTAN
tlmgr repository set <CTAN mirrors>/systems/texlive/tlnet
% 查看宏包信息,加 --list 参数可列出宏包的所有文件
tlmgr info <package-name>
1
2
3
4
5
6
7
8
9
10
11
12
13
% MiKTeX 命令行工具 mpm 的使用示例
% 建议始终加 --admin 参数使用
% 安装/卸载宏包
mpm --admin --install <package-name>
mpm --admin --uninstall <package-name>
% 更新所有宏包
mpm --admin --update
% 列出所有可更新的宏包
mpm --admin --find-updates
% 指定更新源地址
mpm --admin --set-repository=<CTAN mirrors>/systems/win32/miktex/tm/packages
% 查看宏包信息
mpm --admin --print-package-info <package-name>

\(\textrm{TeX Live}\) 默认安装所有宏包, \(\textrm{MiKTeX}\) 的安装程序只包含了 \(\LaTeX{}\) 的一些基本宏包。从 \(\textrm{TeX Live}\) 的光盘镜像和 \(\textrm{MiKTeX}\) 的安装包体积可见一斑。 默认情况下,编译过程中如果遇到宏包未安装而报错的情况下,\(\textrm{MiKTeX}\) 会弹出一个对话框,让用户可以选择临时安装宏包,安装成功后继续编译。


手动安装宏包

\(\textcolor{red}{如非万不得已,尽量不要手动安装宏包}\)。绝大多数宏包都已打包到 \(\textrm{TeX Live}\)\(\textrm{MiKTeX}\) 两大发行版的安装源,可用宏包管理器安装。如果用户知道某个宏包的名称,但不确定是否在发行版中已打包,可在CTAN中搜索,。

在手动安装之前,有必要了解一下 \(\TeX{}\) 目录结构(\(\TeX{}\) Directory Structure, TDS)。它是 \(\TeX{}\) 发行版中宏包、字体、帮助文档等文件的组织结构。TDS 有时也称为 \(\textrm{TEXMF}\) 树,取 \(\TeX+\textrm{METAFONT}\) 之意。

\(\textrm{TeX Live}\) 为例,假设系统的 \(\textrm{TEXMF}\) 树根目录为 \(\textrm{C:\\texlive\\2020\\texmf-dist}\),其下有很多子目录,仅举几例:

\(\textrm{tex/latex}\) \(\LaTeX{}\) 宏包
\(\textrm{doc/latex}\) \(\LaTeX{}\) 宏包的帮助文档
\(\textrm{source/latex}\) \(\LaTeX{}\) 宏包的源代码
\(\textrm{bibtex}\) \(\textrm{BibTeX}\) 工具相关文件,许多宏包配套的 \(\textrm{BibTeX}\) 格式文件位于子目录 \(\textrm{bst}\)
\(\textrm{fonts/tfm}\) $ $ 使用的字体文件,\(\textrm{TFM}\) 格式
\(\textrm{fonts/type1}\) \(\textrm{PostScript}\) 字体文件(\(\textrm{Type1}\)),\(\textrm{PFB}\) 格式
\(\textrm{fonts/opentype}\) \(\textrm{OpenType}\) 格式的字体文件

需要手动安装的宏包,一般已经按照上述目录结构打包完成。手动安装时,尽量不要拷贝到系统的 \(\textrm{TEXMF}\) 树,而是拷贝到发行版提供的用户 \(\textrm{TEXMF}\) 树,如 \(\textrm{TeX Live}\)\(\textrm{C:\\texlive\\texmf-local}\)。安装完成后,还需刷新 \(\TeX{}\) 发行版的文件名数据库,令新安装的宏包文件能够被系统找到。\(\textrm{TeX Live}\) 用户须在 Windows 命令行或者 Linux 终端执行命令:

1
mktexlsr

\(\textrm{MiKTeX}\) 用户的命令为:

1
initexmf --update-fndb

下载下来的宏包,有的直接包含\(\textrm{.sty}\) 文件(\(\textrm{.sty}\)文件就是package的最终形式);有的下载下来只包含了\(\textrm{.ins}\),\(\textrm{.dtx}\),以及一个 \(\textrm{readme}\) 文件,这时需要自己编译生成 \(\textrm{.sty}\) 文件,以及生成相应的 \(\textrm{manual}\) 。下面详细介绍生成 \(\textrm{.sty}\) 文件以及帮助文档的步骤。

  • 第一步:下载宏包,解压,下载地址

  • 第二步:找到你的解压后安装包地址,打开电脑的命令提示符界面,切换路径到这个package所在文件夹;

  • 第三步:生成*.sty,在命令提示符界面输入 latex *.ins;生成帮助文档manual, 在命令提示符界面输入latex *.dtx,编译完成以后,会生成一个叫做*.dvi的文件,这个文件也可以用ctex自带的yap程序打开,不过不是很方便,所以最好还是把它转为pdf格式,分为两步,先输入 dvips *.dvi,生成 *.ps文件,再输入ps2pdf *.ps,最终就生成了*.pdf的帮助文档,可以打开查看这个package的基本用法,命令的格式等。

  • 第四步:生成 *.sty文件以后还需要把这个文件放到LaTeX能够识别的路径下,在CTEX下,可以是 ~\CTEX\MiKTeX\tex\latex\(\textrm{TeX Live}\) 下,可以选择 ~\texlive\texmf-local\tex\latex\local, 你可以在这个路径下建立一个文件夹,文件夹的名字即是宏包的名字,把*.sty放到这里,接着找到MikTeX的Console,以管理员方式打开,点击“任务”——“刷新文件名数据库”。

下面的表格中给出了文件存放的规则:

Type Directory (under texmf/ or texmf-local/) Description
.afm fonts/afm/foundry/typeface Adobe Font Metrics for Type 1 fonts
.bst bibtex/bst/packagename BibTeX style
.cls tex/latex/base Document class file
.dvi doc package documentation
.enc fonts/enc Font encoding
.fd tex/latex/mfnfss Font Definition files for METAFONT fonts
.fd tex/latex/psnfss Font Definition files for PostScript Type 1 fonts
.map fonts/map/ Font mapping files
.mf fonts/source/public/typeface METAFONT outline
.pdf doc package documentation
.pfb fonts/type1/foundry/typeface PostScript Type 1 outline
.sty tex/latex/packagename Style file: the normal package content
.tex doc TeX source for package documentation
.tex tex/plain/packagename Plain TeX macro files
.tfm fonts/tfm/foundry/typeface TeX Font Metrics for METAFONT and Type 1 fonts
.ttf fonts/truetype/foundry/typeface TrueType font
.vf fonts/vf/foundry/typeface TeX virtual fonts
others tex/latex/packagename other types of file unless instructed otherwise

如果一个宏包还顺带安装了一些字体,还应该更新字体的映射。详细方法参详这里


参考博文

[1] Partl H, Hyna I, Schlegl E. 一份 (不太) 简短的 LATEX2ε 介绍[J]. 2024.

[2] LaTeX手动安装宏包(package)以及生成帮助文档的整套流程

[3] Latex之安装宏包