1. 程式人生 > >Latex之安裝巨集包

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文件時,如果引用某個缺失的巨集包時,編譯

程式會報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上的一些討論。