Latex之安装宏包

时间:2021-04-11 06:07:22

转载自:http://www.xuebuyuan.com/1673310.html

    宏包就是Latex发行版(TexLive、MikTex等)的插件功能,通过安装不同的宏包可以获得更多的功能。一般情况下,Latex的发行版都自带了一些宏包(多是CTAN中的),以便于使用者快速的编译。这些宏包默认安装在texmf/tex/latex/下,这里texmf是“Tex and MetaFont”的缩写,指代Latex发行版的目录树。以Windows
7 下MikTex2.9为例,texmf=“D:\Program Files\MiKTeX 2.9\”。宏包的功能可以通过CTAN的搜索功能查询到。

    一个宏包往往包含一个文件或多个文件,这些文件利用Tex命令定义了新的命令,用来改变Latex默认的功能。这些文件主要有两种类型:clas文件,以.cls为后缀;类型文件,以.sty为后缀。其它类型的文件多是辅助文件。当编译一篇tex文档时,如果引用某个缺失的宏包时,编译程序会报package missing的错误。当然,这些宏包是可以更新的。一个Latex发行版理论上可以安装任意多的宏包,但是,一篇文档可以使用的宏包数目是受限制的。

    虽然Latex发行版自带的宏包已经很多,并且自带的Package Manager也能自动从CTAN上下载和安装宏包。但是,宏包的数量远比CTAN拥有的为多。所以,下面介绍下安装宏包的三种方式:

1. 傻瓜式安装

    第一种方式比较简单,就是下载.cls或者.sty格式的文件,直接放在编译的目录下与主文件一起运行。这种方式简单易行,但是每次使用都要复制过去,更新也不易,如果使用几十个宏包,会使得编译目录里文件过多。只适合要使用期刊模板的情况。


2. 自动安装

    目前,多数的Latex发行版都带有宏包管理器,如TexLive的tlmgr,MikTex的Package Manager。对于TexLive,可以使用如下命令自动安装:

tlmgr install <package1> <package2> ...
tlmgr remove <package1> <package2> ...

对于MikTex,使用 Start -> All Programs -> MikTex -> Settings(admin),记得使用管理员模式来更改。


3. 手动安装

    手动安装相对前两种方式要稍微复杂些。如果你下载的宏包里包含sty等格式的必需文件,说明宏包已经经过编译了,可以直接跳到第三步;如果没有,对于较复杂的包,一般包含五个步骤:

(a)提取文件:在下载的宏包里找到后缀名为.ins格式的文件,然后运行“latex yourfilename.ins”命令或者用Latex发行版打开ins文件进行编译。此步骤可以从dtx格式的文件中提取制定的内容并生成需要的文件。

(b)创建文档:接着利用dtx文件创建说明文档,运行命令“latex yourfilename.dtx”。此步骤可以创建一个dvi格式的说明文档,以说明该宏包的功能。

(c)安装文件:此步是最关键的一步,也是容易出错的一步。此步骤的作用是将生成的必需文件,如cls文件和sty文件放到合适的本地位置,以便Latex发行版能够找到。关键是如何定义合适的本地位置呢?在Tex及其衍生物中,所谓合适的本地位置,就是以TDS(Tex Directory Structure)规则组织的文件夹及其子文件夹,也就是一个自定义的目录。一般情况,这个自定义的目录最上层的名字为texmf-local或者texmf。在不同的发行版本下,具体也不一样:

  • MacTex:Users/username/Library/texmf/.
  • Unix-type Systems:~/texmf.
  • MikTex:任意名字,但是子目录要满足一定的规则,具体规则在这里

TDS定义了不同类型的文件存放的位置不同。比如sty格式文件,一般放在texmf/tex/latex下不同的文件夹下,文件夹的名字即是宏包的名字。下面的表格中给出了文件存放的规则:

Where to put files from packages
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

(d)更新索引:最后更新Latex发行版的索引文件,以便Latex发行版能找到新安装的宏包。不同的发行版使用了不同的索引器:

  • teTeX, TeX Live, fpTeX:texhash.
  • web2c: mktexlsr
  • MacTeX: MacTeX appears to do this for you.
  • MikTeX: initexmf --update-fndb;或者使用GUI,即Start -> All Programs -> MikTex -> Settings(admin)下第一个tab,点击“Refresh FNDB”按钮即可。

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

此外,还有一些老版本的宏包并没有参照TDS格式,因此只能使用前两种方式。


此文参考了Wikibooks Latexstackexchange上的一些讨论。