Latex之安裝巨集包
巨集包就是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文件時,如果引用某個缺失的巨集包時,編譯
雖然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下不同的資料夾下,資料夾的名字即是巨集包的名字。下面的表格中給出了檔案存放的規則:
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 |
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 Latex和stackexchange上的一些討論。