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 包站点上找到,以及这里的 Trusty 更新。您可以使用sudo apt-get install <在此处插入包名称>
安装这些包。
您需要查找的通常是两个文件,一个以.dtx结尾,另一个以.ins结尾。第一个是 DOCTeX 文件,它将包程序及其文档组合在一个文件中。第二个是安装程序(更小)。您必须始终下载这两个文件。如果这两个文件不存在,则表示两种情况之一
- 或者该包是更大捆绑包的一部分,除非您更改 LaTeX 版本的 LaTeX,否则您通常不应更新该捆绑包;
- 或者它是由未使用.dtx文件的作者编写的较旧或相对简单的包。
将包文件下载到临时目录。通常会有一个readme.txt文件,其中包含对包的简要描述。您当然应该先阅读此文件。
安装 LaTeX 包有五个步骤。(这些步骤也可用于您自己编写的复杂包的部分;在这种情况下,直接跳到步骤 3。)
1. 解压文件在.ins文件上运行 LaTeX。也就是说,在您的编辑器中打开该文件并像处理 LaTeX 文档一样处理它(它确实是一个 LaTeX 文档),或者如果您愿意,在临时目录中的命令窗口中键入 latex 后跟.ins文件名。这将从.dtx文件(这就是为什么您必须在临时目录中同时包含这两个文件)。如果创建的文件很多,请记下或打印创建的文件的名称(如果要再次查看它们的名称,请阅读日志文件)。
2. 创建文档 在.dtx文件上运行 LaTeX。您可能需要运行两次或更多次才能正确处理交叉引用(就像任何其他 LaTeX 文档一样)。这将创建一个.dvi文件,其中包含解释包的用途和使用方法的文档。如果您希望创建 PDF,则运行 pdfLaTeX 而不是。如果您创建了一个.idx文件,则表示该文档也包含索引。如果要正确创建索引,请按照索引部分中的步骤操作。有时您会看到一个.glo(词汇表)文件已生成。请改用以下命令
makeindex -s gglo.ist -o name.gls name.glo
3. 安装文件 在打印文档的同时,将包文件从临时目录移动或复制到 TeX 本地安装目录树中的正确位置。手动安装的包应始终放在您的“本地”目录树中,而不是放在包含所有预安装包的目录树中。这样做是为了a)防止您的新包意外覆盖主 TeX 目录中的文件;以及b)避免在下次更新 TeX 版本时覆盖新安装的文件。
对于符合 TDS(TeX 目录结构)的系统,您的“本地安装目录树”是一个文件夹及其子文件夹。最外层的文件夹可能应该命名为texmf-local/或texmf/. 它的位置取决于您的系统
- MacTeXUsers/用户名/Library/texmf/.
- Unix 型系统:通常~/texmf/. 如果您在Ubuntu 18上使用TexMaker,它可能位于
/usr/share/texmf/
中 - MikTeX:您的本地目录树可以是您喜欢的任何文件夹,只要您将其注册为用户管理的 texmf 目录(请参阅http://docs.miktex.org/manual/localadditions.html#id573803)。
“正确的位置”有时会导致混淆,尤其是在您的 TeX 安装过旧或不符合 TeX 目录结构 (TDS) 的情况下。对于符合 TDS 的系统,“正确的位置”用于 LaTeX.sty文件是texmf/tex/latex/的适当命名的子目录。 “适当命名”意味着合理且有意义(并且可能很短)。例如,对于像 paralist 这样的包,我将目录命名为texmf/tex/latex/paralist.
通常只有一个.sty文件需要移动,但在复杂包的情况下,可能会有更多文件,并且它们可能属于不同的位置。例如,新的 BibTeX 包或字体包通常会有多个要安装的文件。这就是为什么为包创建一个子目录而不是将文件与其他无关的东西一起转储到 misc 中是一个好主意。如果存在配置或其他文件,请阅读文档以了解是否有特殊或首选的位置可以将它们移动到。
类型 | 目录(在texmf/或texmf-local/) | 描述 |
---|---|---|
.afm | fonts/afm/铸造厂/字体 | Type 1 字体的 Adobe 字体度量 |
.bib | bibtex/bib/参考文献 | BibTeX 参考文献 |
.bst | bibtex/bst/包名 | 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/字体 | METAFONT 轮廓 |
doc | 包文档 | |
.pfb | fonts/type1/铸造厂/字体 | PostScript Type 1 轮廓 |
.sty | tex/latex/包名 | 样式文件:正常的包内容 |
.tex | doc | 包文档的 TeX 源代码 |
.tex | tex/plain/包名 | 纯 TeX 宏文件 |
.tfm | fonts/tfm/铸造厂/字体 | METAFONT 和 Type 1 字体的 TeX 字体度量 |
.ttf | fonts/truetype/铸造厂/字体 | TrueType 字体 |
.vf | fonts/vf/铸造厂/字体 | TeX 虚拟字体 |
其他 | tex/latex/包名 | 除非另有指示,否则为其他类型的文件 |
对于 CTAN 上的大多数字体,铸造厂是public.
4. 更新索引 最后,运行您的 TeX 索引程序以更新包数据库。此程序随每个现代版本的 TeX 一起提供,并且根据您使用的 LaTeX 发行版具有不同的名称。(阅读随安装提供的文档以了解它是哪个,或咨询http://www.tug.org/fonts/fontinstall.html#fndb)。
- teTeX、TeX Live、fpTeXtexhash
- web2cmktexlsr
- MacTeX:MacTeX 似乎会为您执行此操作。
- MikTeXinitexmf --update-fndb(或使用 GUI)
- 在 Windows XP 到 Windows 7 上安装的 MiKTeX 2.7 或更高版本:开始 -> 所有程序 -> MikTex -> 设置。在 Windows 8 中,使用关键字设置并选择带有 MiKTex 徽标的设置选项。在设置菜单中,选择第一个选项卡,然后单击刷新 FNDB按钮(然后 MiKTex 将检查 Program Files 目录并更新文件名称数据库列表)。之后,只需单击“确定”进行验证。
此步骤绝对必要,否则将无法正常工作。 |
5. 更新字体映射 如果您的包安装了任何 TrueType 或 Type 1 字体,则除了更新索引之外,还需要更新字体映射文件。您的包作者应该已包含一个.map用于字体的文件。地图更新程序通常是updmap的一些变体,具体取决于您的发行版
- TeX Live 和 MacTeXupdmap --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。
此过程尚未广泛自动化的原因是,仍然存在数千个不符合 TDS 的安装,例如旧的共享 Unix 系统和某些 Microsoft Windows 系统,因此安装程序无法猜测将文件放在哪里:您必须知道这一点。还有一些系统,其中所有者、用户或安装程序选择不遵循推荐的 TDS 目录结构,或者由于政治或安全原因(例如用户无法写入受保护目录的共享系统)而无法这样做。拥有texmf-local目录(在某些系统上称为texmf.local) 的原因是为了提供一个用于本地修改或个人更新的地方,尤其是在您是共享或托管系统(Unix、Linux、VMS、Windows NT/2000/XP 等)上的用户时,您可能没有写入权限到主 TeX 安装目录树。您也可以在自己的登录目录中拥有一个个人texmf子目录。但是,必须配置您的安装以首先查找这些目录,以便在主texmf树中找到任何对标准包的更新之前找到它们。所有现代 TeX 安装都应该这样做,但如果不是,您可以编辑texmf/web2c/texmf.cnf自己。
检查文件是否可用于 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等)中包含一个或多个相关文档。这些文档的名称通常与包的名称相同,但也有例外(例如,amsmath的文档位于latex/amsmath/amsdoc.dvi)。如果您的安装过程未安装文档,则可以从 CTAN 下载所有 DVI 文件。在使用包之前,您应该仔细阅读文档,尤其是通常称为“用户界面”的小节,其中描述了包提供的命令。您不能只是猜测并希望它能工作:您必须阅读它并找出答案。
您通常可以使用texdoc命令自动打开任何已安装的包文档
texdoc <package-name>
查找 LaTeX 包的最佳方法是前面提到的 CTAN: 搜索。其他资源来自 TeX 在线目录