LaTeX
LaTeX 的附加功能称为“宏包”。其中许多宏包已经预安装在 LaTeX 中,并可以立即在文档中使用。它们通常存储在 texmf/tex/latex
子目录中,每个宏包都有一个与其同名的子目录。texmf
目录名代表 "TEX 和 METAFONT"。要了解其他可用的宏包及其功能,可以使用 CTAN 搜索页面,其中包含 Graham Williams 的宏包目录链接。
一个宏包是一个文件或多个文件的集合,包含额外的 LaTeX 命令和编程,旨在为文档添加新的样式功能或修改已有的样式功能。主要有两种文件类型:扩展名为 .cls
的类文件和扩展名为 .sty
的样式文件。也可能存在附带的其他文件。当你尝试排版需要某个尚未安装的宏包的文档时,LaTeX 会用错误消息提醒你缺少该宏包。你可以下载已安装宏包的更新(包括与你的 LaTeX 版本一起安装的宏包,以及你自己添加的宏包)。你可以安装的宏包数量没有限制(除了磁盘空间!),但在任何 LaTeX 文档中同时使用的宏包数量有配置限制,尽管这个限制取决于每个宏包的大小。实际上,使用几十个宏包是没有问题的。
大多数 LaTeX 安装都会预安装大量样式宏包,因此你可以使用 TeX 发行版的包管理器或系统上的包管理器来管理它们。参见自动安装。但是,互联网上还有更多的宏包。查找样式宏包的主要地方是 CTAN。一旦你确定需要的宏包不在你的发行版中,可以使用任何 CTAN 服务器上的索引来找到你需要的宏包及其下载目录。参见手动安装。
自动安装
如果你的操作系统支持包管理器或 portage 树,通常可以在仓库中找到宏包。
在 MikTeX 中,有一个包管理器,允许你单独选择需要的宏包。作为便捷功能,当你编译需要未安装宏包的文件时,MikTeX 会自动提示安装缺失的宏包。
在 TeX Live 中,通常会将发行版打包成几个大软件包。例如,要安装与国际化相关的内容,你可能需要安装像 texlive-lang
这样的包。对于手动安装的 TeX Live,可以使用 tlmgr
来单独管理宏包。
tlmgr install <package1> <package2> ...
tlmgr remove <package1> <package2> ...
tlmgr
的使用在安装章节中有详细介绍。
如果通过上述方法找不到所需的宏包,请参见手动安装。
特定操作系统的安装说明
在 Ubuntu 等版本(如 Trusty)上,你可以使用 texlive
和 texlive-extra
软件包,例如 texlive-full
、texlive-latex-extra
、texlive-math-extra
、texlive-plain-extra
、texlive-bibtex-extra
、texlive-generic-extra
以及语言包,这些都可以在 Ubuntu 的包网站上找到。你可以使用以下命令安装这些包:
sudo apt-get install <package-name>
手动安装
下载宏包
通常你需要查找两个文件,一个以 .dtx
结尾,另一个以 .ins
结尾。第一个文件是 DOCTeX 文件,它将宏包程序和文档结合成一个文件。第二个文件是安装例程(通常较小)。你必须始终下载这两个文件。如果没有这两个文件,可能有两种情况:
-
宏包是一个更大的捆绑包的一部分,通常你不应该更新,除非你更换了 LaTeX 版本;
-
它是一个较老或相对简单的宏包,作者没有使用
.dtx
文件。
将宏包文件下载到临时目录。通常会有一个 readme.txt
文件,简要描述宏包。你应当首先阅读这个文件。
安装宏包
安装 LaTeX 宏包有五个步骤。如果你没有 .dtx
和 .ins
文件,而是直接获取了宏包文件,则可以跳过步骤 3,直接进行安装。
-
解压文件
运行 LaTeX 处理.ins
文件。也就是说,在编辑器中打开该文件并像处理 LaTeX 文档一样处理它,或者你也可以在命令窗口中输入latex
后跟.ins
文件名来处理文件。这将从.dtx
文件中提取所需的所有文件(因此你必须确保临时目录中有这两个文件)。如果有很多文件,记下或打印文件名(如果你想再次查看它们,可以查看日志文件)。 -
创建文档
运行 LaTeX 处理.dtx
文件。你可能需要运行两次或更多次,以确保交叉引用正确(就像其他 LaTeX 文档一样)。这将创建一个文档的.dvi
文件,解释宏包的用途以及如何使用它。如果你更倾向于创建 PDF,可以使用pdfLaTeX
替代。如果你还创建了.idx
文件,则说明文档中包含了索引。要正确生成索引,遵循索引部分的步骤。有时你还会看到生成了.glo
(术语表)文件。这时,可以运行以下命令:
makeindex -s gglo.ist -o name.gls name.glo
-
安装文件
当文档正在打印时,将宏包文件从临时目录移动或复制到 TeX 本地安装目录树中的正确位置。手动安装的宏包应始终放在“本地”目录树中,而不是包含所有预安装宏包的目录树中。这样做的目的是:
a) 防止新安装的宏包覆盖 TeX 主要目录中的文件;
b) 避免在下一次更新 LaTeX 时覆盖新安装的文件。
对于符合 TDS(TeX 目录结构)标准的系统,你的“本地安装目录树”是一个文件夹及其子文件夹。最外层的文件夹应命名为 texmf-local/
或 texmf/
。其具体位置取决于你的系统:
-
MacTeX:
Users/username/Library/texmf/
-
Unix 系统: 通常是
~/texmf/
。例如在 Ubuntu 18 上使用 TexMaker 时,可能位于/usr/share/texmf/
-
MiKTeX: 你的本地目录树可以是任何文件夹,只要你将其注册为用户管理的
texmf
目录(参见 MiKTeX 文档)。
"正确的位置" 有时会引起混淆,尤其是当你的 TeX 安装较旧或不符合 TeX 目录结构(TDS)时。对于符合 TDS 标准的系统,LaTeX .sty
文件的正确位置是 texmf/tex/latex/
子目录中一个合适命名的子文件夹。这个子文件夹的命名应简洁且有意义(且最好较短)。例如,对于像 paralist
这样的包,可以将目录命名为 texmf/tex/latex/paralist
。
宏包文件的存放位置
通常,安装的宏包只有一个 .sty
文件需要移动,但对于复杂的宏包来说,可能会有多个文件,并且它们可能需要存放在不同的位置。例如,新的 BibTeX 宏包或字体宏包通常会有多个文件需要安装。这就是为什么创建一个子目录来存放宏包,而不是把文件直接放入杂项文件夹中的原因。如果宏包包含配置文件或其他文件,阅读文档以了解是否有特殊或推荐的位置存放这些文件。
宏包文件的存放位置
文件类型 | 目录(在 texmf/ 或 texmf-local/ 下) |
描述 |
---|---|---|
.afm |
fonts/afm/foundry/typeface |
Adobe 字体度量文件(Type 1 字体) |
.bib |
bibtex/bib/bibliography |
BibTeX 参考文献 |
.bst |
bibtex/bst/packagename |
BibTeX 样式 |
.cls |
tex/latex/base |
文档类文件 |
.dvi |
doc |
宏包文档 |
.enc |
fonts/enc |
字体编码 |
.fd |
tex/latex/mfnfss |
METAFONT 字体定义文件 |
.fd |
tex/latex/psnfss |
PostScript Type 1 字体定义文件 |
.map |
fonts/map |
字体映射文件 |
.mf |
fonts/source/public/typeface |
METAFONT 外轮廓 |
.pdf |
doc |
宏包文档 |
.pfb |
fonts/type1/foundry/typeface |
PostScript Type 1 外轮廓 |
.sty |
tex/latex/packagename |
样式文件:正常的宏包内容 |
.tex |
doc |
宏包文档的 TeX 源文件 |
.tex |
tex/plain/packagename |
Plain TeX 宏文件 |
.tfm |
fonts/tfm/foundry/typeface |
METAFONT 和 Type 1 字体的 TeX 字体度量 |
.ttf |
fonts/truetype/foundry/typeface |
TrueType 字体 |
.vf |
fonts/vf/foundry/typeface |
TeX 虚拟字体 |
其他 | tex/latex/packagename |
除非另有指示,否则其他类型的文件 |
对于大多数 CTAN 上的字体,foundry(字体厂)是公共的。
更新你的索引
最后,运行你的 TeX 索引程序以更新宏包数据库。这个程序在每个现代版本的 TeX 中都有,根据你使用的 LaTeX 发行版,它的名字可能有所不同。(阅读随安装提供的文档以了解具体名称,或者查阅 http://www.tug.org/fonts/fontinstall.html#fndb):
-
teTeX, TeX Live, fpTeX:
texhash
-
web2c:
mktexlsr
-
MacTeX: MacTeX 会为你自动执行此操作。
-
MiKTeX:
initexmf --update-fndb
(或使用 GUI)
对于 MiKTeX 2.7 或更高版本,安装在 Windows XP 至 Windows 7 上:通过 开始 -> 所有程序 -> MiKTeX -> 设置,在 Windows 8 中,使用“设置”关键字并选择带有 MiKTeX 图标的选项。在“设置”菜单中,选择第一个选项卡,然后点击“刷新 FNDB”按钮(MiKTeX 将检查程序文件目录并更新文件名数据库)。之后只需点击“确定”进行验证。
这个步骤非常重要,否则一切都无法正常工作。
更新字体映射
如果你的宏包安装了任何 TrueType 或 Type 1 字体,除了更新索引外,你还需要更新字体映射文件。宏包作者应该已经为字体包含了一个 .map
文件。字体映射更新程序通常是 updmap
的某种变体,具体取决于你的发行版:
-
TeX Live 和 MacTeX:
updmap --enable Map=mapfile.map
(如果你将文件安装在个人目录树中),或者updmap-sys --enable Map=mapfile.map
(如果你将文件安装在系统目录中)。 -
MiKTeX: 运行
initexmf --edit-config-file updmap
,将"Map mapfile.map"
添加到打开的文件中,然后运行initexmf --mkmaps
。
详见 http://www.tug.org/fonts/fontinstall.html。
手动安装
下载宏包
你通常需要查找两个文件,一个以 .dtx
结尾,另一个以 .ins
结尾。第一个是 DOCTeX 文件,它将宏包程序和文档合并为一个文件。第二个是安装例程(通常较小)。你必须始终下载这两个文件。如果没有这两个文件,可能有两种情况:
-
宏包是一个更大捆绑包的一部分,通常你不应该更新,除非更换 LaTeX 版本;
-
它是一个较旧或简单的宏包,作者没有使用
.dtx
文件。
将宏包文件下载到临时目录。通常会有一个 readme.txt
文件,简要描述宏包。你应该首先阅读这个文件。
安装宏包
安装 LaTeX 宏包有五个步骤。如果你没有 .dtx
和 .ins
文件,而是直接获得了宏包文件,则可以跳过步骤 3,直接开始安装。
-
解压文件
运行 LaTeX 处理.ins
文件。也就是说,在编辑器中打开该文件并像处理 LaTeX 文档一样处理它,或者在命令窗口中输入latex
后跟.ins
文件名。这样可以从.dtx
文件中提取所有所需文件(因此必须确保两个文件都在临时目录中)。记下或打印文件名(如果文件太多,可以查看日志文件)。 -
创建文档
运行 LaTeX 处理.dtx
文件。你可能需要运行多次,以确保交叉引用正确(就像其他 LaTeX 文档一样)。这将生成一个.dvi
文件,解释宏包的用途和使用方法。如果你更喜欢创建 PDF,可以使用pdfLaTeX
代替。如果你还创建了.idx
文件,说明文档包含索引。要正确生成索引,按照索引部分的步骤操作。有时你还会看到生成了.glo
(术语表)文件。这时可以运行以下命令:
makeindex -s gglo.ist -o name.gls name.glo
-
安装文件
在文档生成的同时,将宏包文件从临时目录移动或复制到 TeX 本地安装目录树中的正确位置。手动安装的宏包应始终放入“本地”目录树中,而不是包含所有预安装宏包的目录树中。这样做可以防止新宏包覆盖 TeX 主要目录中的文件,并确保新安装的文件在下次更新 LaTeX 时不会被覆盖。
对于符合 TDS(TeX 目录结构)标准的系统,"本地安装目录树" 是一个文件夹及其子文件夹。最外层的文件夹通常应命名为 texmf-local/
或 texmf/
。其具体位置取决于你的系统:
-
MacTeX:
Users/username/Library/texmf/
-
Unix 系统: 通常是
~/texmf/
,例如在 Ubuntu 18 上使用 TexMaker 时,可能位于/usr/share/texmf/
-
MiKTeX: 本地目录树可以是任何文件夹,只要你将其注册为用户管理的
texmf
目录。
检查宏包状态
检查文件是否可供 TeX 编译器使用的通用方法是使用命令行工具 kpsewhich
。
$ kpsewhich tikz
/usr/local/texlive/2012/texmf-dist/tex/plain/pgf/frontendlayer/tikz.tex
kpsewhich
只会搜索文件,而不是宏包,它返回文件的路径。若要查看特定宏包的详细信息,可以使用命令行工具 tlmgr
(仅适用于 TeX Live):
tlmgr info <package>
tlmgr
工具有更多选项,详细信息可以通过以下命令查阅:
tlmgr help
宏包文档
要了解一个宏包提供了哪些命令(以及如何使用它们),你需要阅读宏包的文档。在你的安装目录中的 texmf/doc
子目录下,应该有一个包含 .dvi
文件的目录,每个已安装的宏包都有一个相关的文档。此位置是特定于发行版的,但通常可以在以下路径中找到:
发行版 | 路径 |
---|---|
MacTeX | /Library/TeX/Documentation/texmf-doc/latex |
MiKTeX | %MIKTEX_DIR%\doc\latex |
TeX Live | $TEXMFDIST/doc/latex |
通常,大部分宏包的文档都在 latex
子目录中,尽管其他宏包(如 BibTeX 和字体宏包)会存放在 doc
中的其他子目录下。文档目录的名称通常与宏包名称相同(例如 amsmath
),通常包含一个或多个相关的文档文件,格式可以是 .dvi
、.txt
、.pdf
等。如果安装过程中没有安装文档,你可以从 CTAN 下载这些 .dvi
文件。在使用宏包之前,你应该仔细阅读文档,尤其是通常称为“用户接口”的子部分,这部分描述了宏包提供的命令。
你通常可以通过 texdoc
命令自动打开任何已安装宏包的文档:
texdoc <package-name>
外部资源
查找 LaTeX 宏包的最佳方法是访问之前提到的 CTAN 搜索页面。CTAN 还提供了其他资源,形成了 TeX 在线目录: