變數和目錄的配置

變數和目錄的配置

在使用 TeX Live 的類 Unix 系統上,該指令kpsewhich --var-value=TEXMFLOCAL給出了安裝自製軟體包的目錄路徑。例如,在我的 Mac 上,我獲取路徑/usr/local/texlive/texmf-local.

這可以在 Windows 上使用 TeX Live 運行嗎?

答案1

儘管您已經得到了一些答案(其中一些在評論中),但讓我說以下內容:TeXLive(以及據我所知的 MikTeX)

  1. 設定完畢,正確填寫即可使用總固體溶解度,這是 TeX 目錄結構。
  2. 正在使用 Karl Berry 搜尋路徑工具。因此,您可以使用命令列工具kpsewhich來確定文件所在的位置。該命令受到 Unixwhich工具的啟發,該工具嘗試查找給定可執行檔的位置。對於 TeX 系統中的使用,它有所增強。

特別是在 TeXLive 中(但我想在 MikTeX 中也是如此),您可以使用多個與另一棵並行的 TDS 樹。通常,TeXLive 系統設定為具有以下三個 TDS 樹:

  1. 發行版維護者的 TDS,
  2. 本機系統管理員的 TDS,
  3. 個人用戶的 TDS。

第一個包含 TeXLive(分別為 MikTeX)附帶的所有軟體套件。當您(作為系統管理員)安裝 TeXLive-System 時,它將被安裝。每當您更新 TeXLive 系統時,它都會更改。因此,您不應該將任何軟體包安裝到該 TDS 樹中(當然,除非您是 TeXLive 維護者。但是我為什麼要向您解釋設定呢?)。

第二個 TDS 樹適用於系統管理員,他透過易於安裝的本機軟體包的中央儲存庫為使用者提供支援。例如,遵循大學企業設計的樣式檔案將安裝在這裡。如果是網路共享,則整個大學(整個公司,如果您願意)的所有 TeX 用戶都可以使用此文件,而無需任何進一步配置。為了能夠在此樹中安裝軟體包,您通常還需要具有系統管理員權限,以便能夠在此處寫入檔案。

第三棵也是最後一棵樹是針對個人使用者的樹。它將位於使用者自己擁有的目錄中;通常,它位於 Unix 系統上使用者的主目錄中。

您可以使用 TeXLive 命令工具tlmgr來尋找這三個 TDS 在您個人電腦上的位置。趕緊跑

tlmgr conf

並檢查以以下內容開頭的行

  1. TEXMFDIST
  2. TEXMFLOCAL
  3. 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.clsCTAN 的最新版本可以在您的 TeXLive 系統上使用,而維護人員沒有將其合併到他們的發行版中,您必須將其安裝在TEXMFLOCAL或中TEXMFHOME,並透過以下方式配置您的系統temf.cnf以這種方式編輯,TEXMFDIST將在三個給定的 TDS 樹中最後進行搜尋。

答案2

要記住的一件事是,在 Windows 中,許多配置變數預設不會激活,除此之外,我們可以使用管理員權限執行某些操作,而其他操作則可以作為簡單使用者執行。我會傾向於簡單使用者的選項,也就是說配置只會影響系統的當前使用者。

對於這個例子,使用者名稱是yourself,每次我們啟動命令列時,cmd我們都會這樣做沒有管理員權限

變數和目錄的配置

  1. 配置TEXMFHOME 當您在命令列上運行時cmd您將得到:
C:\Users\yourself>kpsewhich -var-value=TEXMFHOME
C:/Users/yourself/texmf

但是,實際上該texmf目錄並不存在,我們必須按照結構建立它TDS。我們將在創建它時注意路徑分隔符,在本例中為\

C:\Users\yourself>mkdir texmf\tex\latex
  1. 配置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範例中的命令結合使用。

  1. 配置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協作項目相關說明。

相關內容