
在使用 TeX Live 的類 Unix 系統上,該指令kpsewhich --var-value=TEXMFLOCAL
給出了安裝自製軟體包的目錄路徑。例如,在我的 Mac 上,我獲取路徑/usr/local/texlive/texmf-local
.
這可以在 Windows 上使用 TeX Live 運行嗎?
答案1
儘管您已經得到了一些答案(其中一些在評論中),但讓我說以下內容:TeXLive(以及據我所知的 MikTeX)
- 設定完畢,正確填寫即可使用總固體溶解度,這是 TeX 目錄結構。
- 正在使用 Karl Berry 搜尋路徑工具。因此,您可以使用命令列工具
kpsewhich
來確定文件所在的位置。該命令受到 Unixwhich
工具的啟發,該工具嘗試查找給定可執行檔的位置。對於 TeX 系統中的使用,它有所增強。
特別是在 TeXLive 中(但我想在 MikTeX 中也是如此),您可以使用多個與另一棵並行的 TDS 樹。通常,TeXLive 系統設定為具有以下三個 TDS 樹:
- 發行版維護者的 TDS,
- 本機系統管理員的 TDS,
- 個人用戶的 TDS。
第一個包含 TeXLive(分別為 MikTeX)附帶的所有軟體套件。當您(作為系統管理員)安裝 TeXLive-System 時,它將被安裝。每當您更新 TeXLive 系統時,它都會更改。因此,您不應該將任何軟體包安裝到該 TDS 樹中(當然,除非您是 TeXLive 維護者。但是我為什麼要向您解釋設定呢?)。
第二個 TDS 樹適用於系統管理員,他透過易於安裝的本機軟體包的中央儲存庫為使用者提供支援。例如,遵循大學企業設計的樣式檔案將安裝在這裡。如果是網路共享,則整個大學(整個公司,如果您願意)的所有 TeX 用戶都可以使用此文件,而無需任何進一步配置。為了能夠在此樹中安裝軟體包,您通常還需要具有系統管理員權限,以便能夠在此處寫入檔案。
第三棵也是最後一棵樹是針對個人使用者的樹。它將位於使用者自己擁有的目錄中;通常,它位於 Unix 系統上使用者的主目錄中。
您可以使用 TeXLive 命令工具tlmgr
來尋找這三個 TDS 在您個人電腦上的位置。趕緊跑
tlmgr conf
並檢查以以下內容開頭的行
TEXMFDIST
TEXMFLOCAL
TEXMFHOME
它們會向您指出 TeX 安裝中的正確位置。
(我不知道在 MikTeX 上提供此資訊的工具,抱歉。)
還有一行以texmf.cnf
該行開頭將列出主設定檔的位置。如果您計劃更改某些位置並且您確實知道您在那裡做什麼,那就是要編輯的文件!
還有一件重要的事情需要指出。如今,一個成熟的 TeX 系統由數十萬個文件組成。對於您的計算機來說,一遍又一遍地搜索每條路徑,只是為了找到例如book.cls
. (我有沒有提到過,計算機是愚蠢的?如果您不提供任何幫助,計算機就無法記住這些位置!)為了防止搜索、搜索和再次搜索,位於分發 TDS 樹中的所有文件和在本地TDS樹中,儲存在一個簡單的資料庫中。因此,將文件複製到其中一棵樹中是不夠的。 TeX 將找不到這些文件,除非您更新資料庫。當然,你絕對需要超級使用者權限(又稱超級牛力:-))來更新資料庫。在經典的 Unix 系統上,這曾經是命令texhash
,或者mktexlsr
是“Make the TeX ls-minus-R database”的縮寫形式(事實上:它只不過是ls -R $TEXMFDIST
您想要添加到資料庫中的任何 TDS 樹。 )
總而言之:如果您打算透過發布自己的軟體包來豐富世界,並將其安裝在其他人的電腦上,那麼最好的方法是說服 TeXLive 維護人員將其包含在 TeXLive 中。那你就不用再擔心了。如果您的軟體套件不是那麼重要,您可以說服 TeXLive 維護人員將其包含在內,那麼最好指導您的客戶將其安裝在TEXMFHOME
他們的系統中。只要叫他們跑就可以了
tlmgr conf | grep TEXMFHOME
在類別 Unix 系統上。在安裝了 bash 的較新 Windows 系統上,它也可能有效。在那個位置,他們不需要擁有超級牛的力量,也不需要費心更新資料庫。如果您碰巧將軟體包交給系統管理員,他們通常知道在哪裡儲存軟體包以及如何更新資料庫。
PS:如果您想確保book.cls
CTAN 的最新版本可以在您的 TeXLive 系統上使用,而維護人員沒有將其合併到他們的發行版中,您必須將其安裝在TEXMFLOCAL
或中TEXMFHOME
,並透過以下方式配置您的系統temf.cnf
以這種方式編輯,TEXMFDIST
將在三個給定的 TDS 樹中最後進行搜尋。
答案2
要記住的一件事是,在 Windows 中,許多配置變數預設不會激活,除此之外,我們可以使用管理員權限執行某些操作,而其他操作則可以作為簡單使用者執行。我會傾向於簡單使用者的選項,也就是說配置只會影響系統的當前使用者。
對於這個例子,使用者名稱是yourself
,每次我們啟動命令列時,cmd
我們都會這樣做沒有管理員權限。
變數和目錄的配置
- 配置
TEXMFHOME
當您在命令列上運行時cmd
您將得到:
C:\Users\yourself>kpsewhich -var-value=TEXMFHOME
C:/Users/yourself/texmf
但是,實際上該texmf
目錄並不存在,我們必須按照結構建立它TDS
。我們將在創建它時注意路徑分隔符,在本例中為\
。
C:\Users\yourself>mkdir texmf\tex\latex
- 配置
TEXMFCNF
打開命令列cmd
並執行以下行:
C:\Users\yourself>kpsewhich -all texmf.cnf
c:/texlive/2019/texmf.cnf
c:/texlive/2019/texmf-dist/web2c/texmf.cnf
輸出表明該變數沒有為我們的使用者配置。我們透過以下方式配置它:
C:\Users\yourself>setx TEXMFCNF C:/Users/yourself/texmf;
CORRECTO: se guardó el valor especificado.
我們出去然後再回來跑:
C:\Users\yourself>reg query HKEY_CURRENT_USER\Environment
HKEY_CURRENT_USER\Environment
Path REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
TEMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp
TMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp
OneDrive REG_EXPAND_SZ C:\Users\yourself\OneDrive
TEXMFCNF REG_SZ C:/Users/yourself/texmf;
我們已經完成了這個變數的設定。該變數將與auxtrees
範例中的命令結合使用。
- 配置
TEXINPUTS
假設我們有一個目錄D:/transcripts
部分或映像,但它們僅在本地可用,並且我們希望它們用於測試。在這種情況下最好的方法是使用TEXINPUTS
變量,這取決於我們希望配置是永久的(始終可用)還是臨時的(僅在當前控制台中)。
A。臨時配置打開命令列cmd
並執行:
C:\Users\yourself>set TEXINPUTS=.;D:/transcripts//;
這將一直有效,直到您關閉命令行,也就是說,您必須執行此操作每次關閉命令列後。
b.永久配置打開命令列cmd
並執行:
C:\Users\yourself>setx TEXINPUTS .;D:/transcripts//;
關閉命令列。這樣我們就TEXINPUTS
在你的配置中配置好了環境變數現在它正在滲透。
如果您需要TEXINPUTS
從環境變數中查看,請使用:
C:\Users\yourself>reg query HKEY_CURRENT_USER\Environment
如果需要TEXINPUTS
從環境變數中刪除,請使用:
C:\Users\yourself>reg delete HKEY_CURRENT_USER\Environment /v TEXINPUTS /f
或者,這可以在圖形模式下完成,調整您的環境變數。
完整範例使用auxtrees
這是我們在工作中與一群同事一起使用的配置的一部分,使用託管的項目github
(我們也以.zip
格式分發),並使用一些包和自定義類,轉錄與 Windows 相關的部分(我希望你明白,我的母語是西班牙語)。此範例的資料TDS
夾位於下列位置D:/ltxcole/stycole/
,項目結構為:
D:\ltxcole>tree
Listado de rutas de carpetas para el volumen driveD
El número de serie del volumen es FACD-A6DF
D:.
├───octavo
│ ├───diagnostico
│ ├───guias
│ ├───pruebas
│ ├───test
│ └───trabajos
├───produccion
├───septimo
│ ├───diagnostico
│ ├───guias
│ ├───pruebas
│ └───test
├───sintesis
└───stycole
└───tex
└───latex
關鍵是stycole
其中有一個TDS
結構:
└───stycole
└───tex
└───latex
colegio-new2019.sty
keyanswer.sty
logoaurora.jpg
tkz-custom.sty
Windows 配置的 TeXLive 文件不是很“解釋”,但論壇中有很好的資訊。使用auxtrees
允許您維護多個項目,而不會使用變數影響整個系統TEXMFLOCAL
或將所有內容載入到TEXMFHOME
.
打開命令列cmd
並執行:
C:\Users\yourself>tlmgr conf auxtrees --conffile C:/Users/yourself/texmf/texmf.cnf show
tlmgr.pl: no auxiliary texmf trees defined.
輸出告訴我們我們沒有任何配置,現在我們運行:
C:\Users\yourself>tlmgr conf auxtrees --conffile C:/Users/yourself/texmf/texmf.cnf add D:/ltxcole/stycole/
為了驗證一切是否正確,我們運行:
C:\Users\yourself>tlmgr conf auxtrees --conffile C:/Users/yourself/texmf/texmf.cnf show
List of auxiliary texmf trees:
D:/ltxcole/stycole/
這樣我們就完成了專案的配置,放置的檔案D:/ltxcole/stycole/tex/latex/
將可供我們的所有檔案使用。該文件C: Users\yourself\texmf.cnf
包含以下行:
TEXMFAUXTREES = D:/ltxcole/stycole/,
只要您尊重結構,您就可以添加任意數量的項目TDS
。
當然,如果您只想自己做測試,那麼使用更簡單TEXMFHOME
,儘管使用的優點auxtrees+git
是您可以產生一個跨平台配置腳本 或簡單的README
協作項目相關說明。