TeX Live
根據Wikipedia:
- TeX Live 是一種自由的的 TeX 排版系統發行版,包含主要的 TeX 相關程序、宏包和字體。
TeX Live 包括:
TeX Live 的替代方案包括 MikTeX 和 Tectonic,它們採用最小化安裝方式,並在運行時按需下載所需的包。
Arch-packaged TeX Live 與原生 TeX Live 的對比
安裝 TeX Live 有多種方式。雖然 TeX Live 的一個快照應該可以通過 Arch Linux 包倉庫獲得(如下所述),但該快照大多數情況下每年只更新一次。相比之下,TeX Live 本身是一個滾動發布的發行版,基於用戶每年必須升級一次的模型,但每個軟體包可以在子日級別進行更新。
擁有原生且最新的 TeX Live 安裝的優點包括可以訪問最新的功能和 bug 修復,以及相關的文檔。儘管在沒有原生 TeX Live 的情況下(請參見 TEXMFLOCAL 和 TEXMFHOME),仍然可以升級或安裝單獨的軟體包,但這需要額外的注意——必須確保所有相關軟體包的版本彼此兼容。
與原生 TeX Live 相比,Arch 倉庫中的軟體包通常不包括文檔,這是一個問題,因為來自 CTAN 的文檔通常僅適用於 TeX 包的最新版本。
原生 TeX Live
安裝
請參見 quickinstall 文檔,並根據需要查看 full 文檔。安裝過程如下:
- 下載 netinstall 壓縮包
- 解壓壓縮包並進入新創建的目錄
- 運行安裝腳本,
perl ./install-tl,啟動一個交互式安裝程序(文本界面)- 設置所需的安裝路徑
- 可選地選擇 TeX Live 提供的某些「集合」包
- 可選地選擇 Letter 紙張尺寸作為默認,而不是 A4
- 等待所有文件下載完畢
- 安裝腳本會在過程結束時通知您,需要將 TeX Live 安裝路徑添加到系統可執行文件和文檔路徑中:
PATH、MANPATH、INFOPATH。安裝腳本會輸出在退出前所需的具體路徑。
或者,也可以安裝 texlive-installerAUR 包,然後按照上述步驟運行 install-tl 。
更新
請參閱 tlmgr 文檔,tlmgr update --all 將升級安裝時選擇的所有包集合。它還會安裝已添加到安裝的 TeX Live 包集合中的新包。
每年一次,當 TeX Live 發布新版本時,tlmgr update --all 會失敗,這時需要重新安裝 TeX Live。
Arch 打包的 TeX Live
-
texlive包組 組包含大多數 TeX Live 包,按上游集合分類(見 [1])。
- texlive-basic包,基礎安裝,基於上游的「中等」安裝方案。該包包括 pacman hook 自動化操作 mktexlsr、fmtutil 和 updmap。
-
texlive-latex包 包含必要的 LaTeX 包。(例如,如果您打算使用
pdflatex,則需要此包)。 -
texlive-latexrecommended包 和 texlive-latexextra包 包含許多有用的 LaTeX 包,如
polyglossia、amsmath和graphicx。 - texlive-fontsrecommended包 包含必需的字體(包括默認的 Latin Modern)。
- texlive-fontsextra包 包含附加字體,可在 LaTeX 字體目錄查看。
- texlive-xetex包 和 texlive-luatex包 分別包含 XeTeX 和 LuaTeX 的包。
- texlive-bibtexextra包 包含 BibLaTeX 包和額外的 BibTeX 樣式及參考文獻資料庫。
- texlive-mathscience包 包含數學、自然科學和計算機科學所需的基本包。
- texlive-lang包組 組包含為非拉丁字符語言提供字符集和功能的包。
- biber包 提供 BibLaTeX 的替代參考文獻處理後端。
請注意,texlive-binextra包 中的某些工具有可選依賴項,未自動安裝。例如,latexindent 依賴於 perl-yaml-tiny包 和 perl-file-homedir包。
pacman -F 來查找提供該文件的 Arch 包:
$ pacman -F soul.sty
extra/texlive-plaingeneric 2023.66594-19 (texlive)
usr/share/texmf-dist/tex/generic/soul/soul.sty
如果需要安裝一個可用的 CTAN TeX 包,請運行以下命令來確定它是否包含在 Arch 的 texlive- 包中:
$ tlmgr info ctan_package_name | grep collection
這將列出與 Arch texlive- 包對應的 TeX Live 包集合名稱(也可以檢查 texlive包組 組以確認是否存在此包)。例如,輸出 collection: collection-plaingeneric 表示該 TeX 包包含在 texlive-plaingeneric包 中。
另外,可以使用 tlmgr 手動安裝單個 TeX 包(見下文)。
tllocalmgr
tllocalmgr 工具由 tllocalmgrAUR 提供,允許您將來自 CTAN 的包作為 pacman 包安裝(和更新)。請參見使用方法(-h)了解詳細信息。
tlmgr
使用 texlive-basic包 時,tlmgr 工具應當開箱即用。
默認情況下,其需要root權限才可運行。
# tlmgr install package_name
如您想在不使用 root 權限的情況下運行程序,請使用內置的用戶模式。默認情況下,該功能會將 CTAN 軟體包安裝到 ~/texmf 目錄。 tlmgr 必須先對此目錄進行初始化,因此請運行:
$ tlmgr init-usertree
現在,你可以使用用戶模式:
$ tlmgr --usermode install package_name
要更改包的安裝位置,請更改 TEXMFHOME 這個環境變量。
$ export TEXMFHOME="$HOME/.local/texmf"
$ tlmgr init-usertree
$ ...
tlmgr 會自行選擇一個合適的鏡像。不過,你也可以自行設置首選鏡像網站。需要你在鏡像路徑末尾添加 /systems/texlive/tlnet。例如:
$ tlmgr option repository http://mirrors.rit.edu/CTAN/systems/texlive/tlnet
包文檔
官方倉庫中的包不包含字體/宏包的文檔或源文件。
要使用texdoc 離線訪問文檔,請安裝 texlive-doc包 包,它包含完整的 TeX Live 文檔和源文件。
您也可以在線訪問文檔:
- https://tug.org/texlive/Contents/live/doc.html
- https://ctan.org/ – TeX 相關材料的中心
-
https://texdoc.org/ (
http://texdoc.org/pkg/packagename可直接獲取相關 PDF)
用法
請參見以下資源:
- Wikibooks:LaTeX
- 《LaTeX 2ε 簡明介紹》
- 學習 LaTeX – Andrew Roberts
- TeX FAQ
- 《GNU TeX for the Impatient》(中文譯本:《TeX 急就帖》)
有些人使用 TeX 編輯器來創建文檔。
編譯文檔的高級封裝器
通常來說,使用 latexmk(1) 等高級工具,或者使用 arara(1),比直接調用 pdflatex(1) 更有意義,主要是因為較低級的工具通常需要多次運行才能完全編譯一個文檔。
texmf 樹和 Kpathsea
texmf 樹(texmf 代表 TeX 和 Metafont)應遵循 TeX 目錄結構,否則可能無法找到文件。[3]
TeX Live 使用 Kpathsea 庫來通過文件名查找路徑,跨越多個 texmf 樹和當前工作目錄。
Kpathsea 按逆序搜索以下變量(較晚的樹會覆蓋較早的樹)。
| 變量 | Arch 默認值 1) | 由 [4] 使用 |
|---|---|---|
TEXMFDIST |
/usr/share/texmf-dist |
原始分發文件 |
TEXMFLOCAL |
/usr/local/share/texmf:/usr/share/texmf |
系統管理員用於全局安裝附加或更新的宏、字體等 |
TEXMFSYSVAR |
/var/lib/texmf |
updmap 和 fmtutil(用戶模式)存儲(緩存)運行時數據 |
TEXMFSYSCONFIG |
/etc/texmf |
updmap 和 fmtutil(用戶模式)存儲修改後的配置數據 |
TEXMFHOME |
~/texmf |
用戶用於個別安裝附加或更新的宏、字體等 |
TEXMFVAR |
~/.texlive/texmf-var |
updmap 和 fmtutil(系統模式)存儲(緩存)運行時數據 |
TEXMFCONFIG |
~/.texlive/texmf-config |
用戶模式的配置數據 |
TEXMFCACHE
|
$TEXMFSYSVAR;
|
使用 ConTeXt MkIV 和 LuaLaTeX 存儲(緩存的)運行時數據 |
Kpathsea 提供了 kpsewhich(1) 命令來查找路徑。當使用 --var-brace-value=VARIABLE 參數運行時,它還可以列印變量的值。
Kpathsea 使用文件名資料庫(ls-R)來加速在系統級 texmf 樹(通過 TEXMFDBS 變量配置)中的搜索。這意味著當系統級文件樹發生更改時,需要以 root 運行 mktexlsr(1) 或 texhash(符號連結)。texlive-basic包 通過 pacman hook 實現了自動化,該 hook 針對所有默認的系統級 texmf 樹,但 /usr/local/share/texmf。[6] 因此,只要您通過 pacman 安裝系統級軟體包,就完全不需要運行 mktexlsr 或 texhash 。
~/texmf/目錄結構{format} 通常是latex),其中自定義類位於 ./{format}文件夾的根目錄中,其他本地文件則放在同名文件夾中(例如,mycustompackage.sty放在./{formats}/mycustompackage/mycustompackage.sty文件夾中),然後運行texhash來更新用戶資料庫。竅門與技巧
更改默認紙張尺寸
目前無法使用 texlive 工具設置默認頁面大小,因為它們與標準的 Arch 軟體包不兼容。
通常情況下,你會運行 texconfig 或 tlmgr ,它們還可以更改其他有用的設置。
您可以按如下方式編輯配置文件。
- 要為 pdftex 系列命令( pdftex 、 pdflatex 等)設置紙張大小,請編輯
/etc/texmf/tex/generic/tex-ini-files/pdftexconfig.tex文件。
也可以通過運行 kpsewhich pdftexconfig.tex 來發現。修改指定 pdfpageheight 和 pdfpagewidth 的兩行。例如,要使用信紙大小,請修改
\pdfpageheight = 297 true mm \pdfpagewidth = 210 true mm
到
\pdfpageheight = 11 true in \pdfpagewidth = 8.5 true in
遺憾的是,這只有在 .fmt 二進制文件重新構建後才會生效。您可以使用 fmtutil-sys 來完成此操作。使用 pacman 重新安裝 texlive-bin 也能達到同樣的效果。
- 對於 dvips ,您可以使用
-t選項指定紙張尺寸:dvips -t letter foo.dvi。要更改默認值,請編輯/etc/texmf/dvips/config/config.ps文件。
也可以使用 kpsewhich config.ps 命令來查找。該文件的末尾列出了 dvips 已知的所有紙張尺寸。列表中第一個紙張尺寸將作為默認值。只需將您希望設為默認值的紙張尺寸移動到列表頂部即可。一旦該文件發生更改, dvips 的行為就會受到影響。
讓字體在Fontconfig下識別
默認情況下,各種 TeX Live 宏包自帶的字體不會自動被 Fontconfig 識別 。如果您想在 XeTeX 或 LibreOffice 等軟體中使用這些字體,最簡單的方法是在字體目錄中創建一個指向用戶字體路徑下子目錄的符號連結。對於 OpenType 字體,請運行以下命令:
$ ln -s /usr/share/texmf-dist/fonts/opentype/public/some_fonts_you_want ~/font_path/OTF/
要使 fontconfig 能夠訪問它們,請運行:
$ fc-cache ~/font_path $ mkfontscale ~/font_path/OTF $ mkfontdir ~/font_path/OTF
TrueType 字體和 Type 1 字體的操作步驟類似。在上面的幾行代碼中,將 opentype 替換為 truetype 或 type1 ,將 OTF 替換為 TTF 或 Type1 。
或者, texlive-basic 包含文件 /usr/share/fontconfig/conf.avail/09-texlive-fonts.conf ,其中包含 TeX Live 使用的字體目錄列表。您可以將此文件與以下命令一起使用:
# ln -s /usr/share/fontconfig/conf.avail/09-texlive-fonts.conf /etc/fonts/conf.d/09-texlive-fonts.conf
然後更新系統配置
$ fc-cache && mkfontscale && mkfontdir
更新babelbib語言定義
如果您遇到 babelbib 沒有您需要的最新語言定義這一特殊問題,並且不想重新編譯所有內容,您可以從 https://www.tug.org/texlive/devsrc/Master/texmf-dist/tex/latex/babelbib/ 手動獲取這些定義,並將其放入 /usr/share/texmf-dist/tex/latex/babelbib/ 中。例如:
$ cd /usr/share/texmf-dist/tex/latex/babelbib/ # wget https://www.tug.org/texlive/devsrc/Master/texmf-dist/tex/latex/babelbib/romanian.bdf # wget [...all-other-language-files...] # wget https://www.tug.org/texlive/devsrc/Master/texmf-dist/tex/latex/babelbib/babelbib.sty
之後,您需要運行 texhash 來更新 TeX 資料庫:
# texhash