textlive中添加自定義包或類

1 介紹

在我們使用 LaTeX 的過程中,經(jīng)常會創(chuàng)建一些我們自己的 .sty.cls 文件。本文介紹了如何設(shè)置 texlive 的搜索路徑,使其能夠搜索到我們自定義的包或者類文件。本文主要參考了 Where do I place my own .sty or .cls files,to make them available to all my .tex files?How to register my own packages or classes in a separate drive to TeX Live installation? .

如果我們編寫的包或者類只使用一次,只需要將其放置到使用這些包或者類的 .tex 文件所在的目錄下即可。這是一種比較簡單的方法,在包或類僅復(fù)用幾次的情況下,將其粘貼到對應(yīng)的 .tex 文件所在目錄都是不錯的選擇。但是如果我們需要多次復(fù)用這些包(類)或者這些包(類)仍在開發(fā)中需要不斷的修改。這種方法就十分不合理了,因為每次包(類)的更新都需要手動的修改所有文件。

下面提供的方法能夠讓 LaTeX 像使用標(biāo)準(zhǔn)包一樣找到我們自定義的包(類)。本教程使用的操作系統(tǒng)為 Win10.使用的 LaTex 環(huán)境為 texlive2018TeXstudio 2.12.10.在 linux 下的操作步驟和本文類似,只是對應(yīng)的目錄稍有不同。

2 一種簡單的方法

在 cmd 命令行中輸入下面命令查看文件搜索的家目錄。

kpsewhich -var-value=TEXMFHOME

我這里顯示為 C:/Users/10091/texmf 。接下來對應(yīng)的創(chuàng)建目錄 C:\Users\10091\texmf\tex\latex 。一般情況下后三級目錄是不存在的需要我們手動創(chuàng)建。創(chuàng)建完畢之后,我們將自己編寫的 .sty.cls 文件放到該目錄下即可。當(dāng)然在該目錄下創(chuàng)建更多目錄也是允許的,比如創(chuàng)建 C:\Users\10091\texmf\tex\latex\mysty 文件夾用來放置文件類,創(chuàng)建 C:\Users\10091\texmf\tex\latex\mycls 文件夾用來放置包。

放置完畢后,我們可以在命令行中輸入下面命令來檢查一下 LaTeX 是否能找到對應(yīng)的包(類)。

kpsewhich 文件名.sty(.cls)

如這里我創(chuàng)建了名為 ldbox.sty 的包放置到 mysty 文件夾下,輸入 kpsewhich ldbox.sty 時就會輸出 C:\Users\10091\texmf\tex\latex\mysty\ldbox.sty 。

3 詳細的配置方法

3.1 添加包(類)搜索路徑

上面我們給出了一種較為快速的添加自定義包(類)的方法。本質(zhì)上是將我們的自定義文件放置到 LaTeX 搜索目錄下,而不是添加額外的搜索路徑。下面將較為詳細的介紹 texlive 搜索路徑的配置過程。

texlive 有兩個配置文件,一個是全局配置文件一個是用戶配置文件,可以通過輸入下面命令查看配置文件的所在位置。

kpsewhich -a texmf.cnf

我這里顯示內(nèi)容如下:

d:/software3/texlive/2018/texmf.cnf
d:/software3/texlive/2018/texmf-dist/web2c/texmf.cnf

其中第一個是用戶配置文件,用來保存用戶的個人配置。第二個是全局配置文件,全局配置文件在更新時會丟失所有的配置,因此不建議修改全局配置文件而是修改個人配置。

首先查看全局配置文件,這里我們關(guān)心其中的兩個變量 TEXMFTEXMFLOCALTEXMF 變量保存了所有的搜索路徑。該變量的在文中定義如下:

TEXMF = {...,$TEXMFHOME,!!$TEXMFLOCAL,...}

可以看到 TEXMF 變量包含了 TEXMFLOCAL 和上一節(jié)我們提到的 TEXMFHOME 。同樣的我們也可以在命令行中 kpsewhich -var-value=變量名 來查看 TEXMFTEXMFLOCAL 變量的值。

由于 TEXMF 變量包含了 TEXMFLOCAL 變量,所以這里我們在用戶配置文件中定義 TEXMFLOCAL 變量即可。我這里定義 TEXMFLOCAL 如下:

TEXMFLOCAL=D:/software3/texlive/myLib

如果需要添加多個搜索路徑的話,使用,分割。且結(jié)尾不包含逗號和反斜杠,如:

TEXMFLOCAL=D:/software3/texlive/myLib,d:/myTexLib2

同樣在搜索目錄下創(chuàng)建 tex/latex 目錄,然后將自定義的包(類)放到該目錄下。

注意:LaTeX 只搜索設(shè)定目錄中 text/latex 子路徑下的包(類)文件。對應(yīng)這里為 D:/software3/texlive/myLib/tex/latex。

然后在命令行輸入下面命令來更新包(類)數(shù)據(jù)庫:

texhash

這一點和上一節(jié)不同,上一節(jié)中我們直接將文件放到對應(yīng)文件夾中即可,并不需要輸入更新命令。

最后同樣可以輸入 kpsewhich 文件名.sty(.cls) 來驗證是否能夠找到對應(yīng)的自定義包(類)。

下圖給出了上面提到的幾個命令及其運行結(jié)果:

命令及運行結(jié)果

3.2 添加資源文件搜索路徑

有時候我們在編寫自定義的文檔類時會使用到一些圖片,如給首頁添加一張背景圖片或添加 logo 到頁眉中。這些圖片應(yīng)該放置什么地方呢?如果我們使用模板時是將模板放置到.tex 文件夾下(本文的方法一),則這些圖片和普通的.tex文件調(diào)用圖片放置到相同目錄下即可。

如果我們使用上面的方法二和方法三來添加自定義文檔類時,則只需要將其放置在搜索路勁下的 tex/latex/文檔類所在文件夾/resources 文件夾下即可(文檔類指的是.cls 后綴的文件)。我這里對應(yīng)的路徑為:

D:\software3\texlive\myLib\tex\latex\obit\resources

即使是添加了資源,也應(yīng)該使用 texhash 命令來更新數(shù)據(jù)庫。更多關(guān)于 TEX 目錄結(jié)構(gòu)(TEX Directory Structure 簡稱TDS)可以參考 How to write a LaTeX package that bundles not only .sty and .cls files but also some logos in .pdf or .eps formats? 的回答以及文檔 A Directory Structure for TEX Files。

4 總結(jié)

在 texlive 中使用自定義的包(類)一共有三種方法:

  • 直接將自定義的包(類)放置到需要使用的 .tex 所在文件夾下。最為簡單但局限性很大。
  • 將自定義的包(類)放置到預(yù)定義的目錄(TEXMFHOME)下。這種方法無需更新數(shù)據(jù)庫,較為簡單且局限性較小。
  • 將自定義的包(類)放置到自定義的目錄(通過TEXMFLOCAL指定)下。除了要放置文件外,還需要手動更新數(shù)據(jù)庫。該方法靈活性很高。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,253評論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,716評論 25 709
  • 午后,生起制茶的念頭。恰月見草開得好,便開始鼓搗,方罷。 很久之前制的束口袋,竹子繪得可爛,本用來送友,想著不大美...
    蘇長亭閱讀 1,418評論 98 48
  • 側(cè)臉
    做自己就完美了閱讀 287評論 0 1

友情鏈接更多精彩內(nèi)容