Konfiguration von Variablen und Verzeichnissen

Konfiguration von Variablen und Verzeichnissen

Auf Unix-ähnlichen Systemen mit TeX Live gibt der Befehl kpsewhich --var-value=TEXMFLOCALden Pfad des Verzeichnisses an, in dem das selbst erstellte Paket installiert werden soll. Auf meinem Mac erhalte ich beispielsweise den Pfad /usr/local/texlive/texmf-local.

Funktioniert dies unter Windows mit TeX Live?

Antwort1

Obwohl Sie bereits einige Antworten erhalten haben (einige davon in den Kommentaren), möchte ich Folgendes sagen: TeXLive (und MikTeX, soweit ich weiß)

  1. ist eingerichtet, um richtig gefüllt zu verwendenTDS, also TeX-Verzeichnisstrukturen.
  2. verwendet die Karl Berry Search Path Tools. Damit kann man mit dem Kommandozeilentool kpsewhichermitteln, wo eine Datei liegt. Dieser Befehl wurde von dem Unix which-Tool inspiriert, das den Speicherort einer bestimmten ausführbaren Datei zu ermitteln versucht. Für den Einsatz in TeX-Systemen wurde es etwas erweitert.

Insbesondere in TeXLive (aber ich denke auch in MikTeX) können Sie mehrere TDS-Bäume parallel zueinander verwenden. Normalerweise sind TeXLive-Systeme so eingerichtet, dass sie drei dieser TDS-Bäume haben:

  1. Die TDS für den Betreuer der Distributionen,
  2. Der TDS für den lokalen Systemadministrator,
  3. Der TDS für den einzelnen Benutzer.

Der erste enthält alle Pakete, die mit TeXLive (bzw. MikTeX) geliefert wurden. Er wird installiert, wenn Sie (als Systemadministrator) Ihr TeXLive-System installieren. Er wird geändert, wenn Sie Ihr TeXLive-System aktualisieren. Sie sollten daher keine Pakete in diesen TDS-Baum installieren (es sei denn, Sie sind TeXLive-Betreuer. Aber warum sollte ich Ihnen dann das Setup erklären?).

Der zweite TDS-Baum ist für den Systemadministrator, der seinen Benutzern ein zentrales Repository mit vorinstallierten lokalen Paketen zur Verfügung stellt. Hier werden beispielsweise die Style-Dateien installiert, die dem Corporate Design Ihrer Universität entsprechen. Handelt es sich um eine Netzwerkfreigabe, können alle TeX-Benutzer der gesamten Universität (wenn Sie so wollen, der gesamten Firma) diese Dateien ohne weitere Konfiguration verwenden. Um Pakete in diesem Baum installieren zu können, benötigen Sie normalerweise auch Systemadministratorrechte, um hier Dateien schreiben zu können.

Der dritte und letzte Baum ist der Baum für den einzelnen Benutzer. Er befindet sich in einem Verzeichnis, das dem Benutzer selbst gehört; auf Unix-Systemen war dies normalerweise das Home-Verzeichnis des Benutzers.

Mit dem TeXLive-Befehlstool können Sie tlmgrherausfinden, wo sich diese drei TDS auf Ihrem Computer befinden. Führen Sie dazu einfach

tlmgr conf

und suchen Sie nach Zeilen, die beginnen mit

  1. TEXMFDIST
  2. TEXMFLOCAL
  3. TEXMFHOME

Sie verweisen Sie auf die richtigen Stellen in Ihrer TeX-Installation.

(Ich kenne das Tool nicht, das diese Informationen zu MikTeX liefert, tut mir leid.)

Es gibt auch eine Zeile, texmf.cnfdie mit beginnt und den Speicherort der Master-Konfigurationsdatei auflistet. Wenn Sie jemals vorhaben, einige der Speicherorte zu ändern, und Sie wirklich wissen, was Sie dort tun, ist dies die Datei, die Sie bearbeiten müssen!

Es gibt noch einen weiteren wichtigen Punkt, den Sie beachten sollten. Heutzutage besteht ein voll entwickeltes TeX-System aus Hunderttausenden von Dateien. Es wäre für Ihren Computer mühsam, jeden Pfad immer wieder zu durchsuchen, nur um beispielsweise zu finden book.cls. (Habe ich schon erwähnt, dass Computer dumm sind? Computer können sich diese Speicherorte nicht merken, wenn Sie nicht mithelfen!) Um das Suchen und Suchen und nochmalige Suchen zu verhindern, werden alle Dateien, die sich im Distributions-TDS-Baum und im lokalen TDS-Baum befinden, in einer einfachen Datenbank gespeichert. Daher reicht es nicht aus, eine Datei in einen dieser Bäume zu kopieren. TeX wird diese Dateien nicht finden, es sei denn, Sie aktualisieren die Datenbank. Natürlich benötigen Sie Superuser-Rechte (auch bekannt als Super Cow Power :-)), um die Datenbank zu aktualisieren. Auf klassischen Unix-Systemen war dies früher der texhashBefehl oder , mktexlsrwas die Kurzform von „Make the TeX ls-minus-R database“ ist (Um genau zu sein: es ist nichts anderes als ls -R $TEXMFDISToder welcher TDS-Baum auch immer Sie zu Ihrer Datenbank hinzufügen möchten.)

Um das alles zusammenzufassen: Wenn Sie planen, die Welt zu bereichern, indem Sie ein Paket von Ihnen veröffentlichen, das auf einem anderen Computer installiert werden soll, wäre es am besten, die TeXLive-Betreuer davon zu überzeugen, es in TeXLive aufzunehmen. Dann müssen Sie sich keine Sorgen mehr machen. Wenn Ihr Paket nicht so wichtig ist, dass Sie die TeXLive-Betreuer davon überzeugen könnten, es aufzunehmen, ist es vielleicht am besten, Ihre Kunden anzuweisen, es in dem TEXMFHOMETeil ihres Systems zu installieren. Bitten Sie sie einfach, Folgendes auszuführen:

tlmgr conf | grep TEXMFHOME

auf Unix-ähnlichen Systemen. Auf neueren Windows-Systemen, auf denen Bash installiert ist, könnte es auch funktionieren. Dort müssen sie weder über Superkräfte verfügen, noch müssen sie sich mit der Aktualisierung der Datenbank herumschlagen. Wenn Sie Ihr Paket zufällig Systemadministratoren geben, wissen diese normalerweise, wo das Paket zu speichern ist und wie die Datenbank aktualisiert wird.

PS: Wenn Sie sicherstellen möchten, dass die neueste book.clsVersion von CTAN auf Ihrem TeXLive-System verwendet werden kann, obwohl die Betreuer sie nicht in ihre Distribution integriert haben, müssen Sie sie entweder in TEXMFLOCALoder installieren TEXMFHOMEund Ihr System durch Bearbeiten temf.cnfso konfigurieren, dass TEXMFDISTim letzten der drei angegebenen TDS-Bäume gesucht wird.

Antwort2

Beachten Sie, dass in Windows viele der Konfigurationsvariablen standardmäßig nicht aktiviert sind. Darüber hinaus können wir einige Dinge mit Administratorrechten und andere als einfacher Benutzer tun. Ich tendiere zur Option „einfacher Benutzer“, d. h. die Konfigurationen wirken sich nur auf den aktuellen Benutzer des Systems aus.

Für dieses Beispiel ist der Benutzername yourselfund jedes Mal, wenn wir eine Befehlszeile startencmd werden wir dies tunohne Administratorrechte.

Konfiguration von Variablen und Verzeichnissen

  1. Konfiguration von: TEXMFHOME Wenn Sie es in einer Befehlszeile ausführen, cmderhalten Sie:
C:\Users\yourself>kpsewhich -var-value=TEXMFHOME
C:/Users/yourself/texmf

Aber in Wirklichkeit texmfexistiert das Verzeichnis nicht als solches, wir müssen es entsprechend der TDSStruktur erstellen. Wir werden es erstellen und dabei auf den Pfadtrenner achten, der in diesem Fall ist \.

C:\Users\yourself>mkdir texmf\tex\latex
  1. Konfiguration von: TEXMFCNF Öffnen Sie eine Befehlszeile cmdund führen Sie die folgende Zeile aus:
C:\Users\yourself>kpsewhich -all texmf.cnf
c:/texlive/2019/texmf.cnf
c:/texlive/2019/texmf-dist/web2c/texmf.cnf

Die Ausgabe zeigt an, dass die Variable für unseren Benutzer nicht konfiguriert ist. Wir konfigurieren sie folgendermaßen:

C:\Users\yourself>setx TEXMFCNF C:/Users/yourself/texmf;

CORRECTO: se guardó el valor especificado.

Wir gehen raus und wir gehen wieder rein und rennen:

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;

Wir haben das Festlegen dieser Variable abgeschlossen. Diese Variable wird in Verbindung mit dem auxtreesBefehl im Beispiel verwendet.

  1. Konfiguration von TEXINPUTS Angenommen, wir haben ein Verzeichnis D:/transcriptsmit Abschnitten oder Bildern, die aber nur lokal verfügbar sind und die wir zum Testen benötigen. In diesem Fall ist es am besten, die TEXINPUTSVariable zu verwenden. Dabei kommt es darauf an, ob die Konfiguration permanent (immer verfügbar) oder temporär (nur in der aktuellen Konsole) sein soll.

a. Temporäre Konfiguration Öffnen Sie eine Befehlszeile cmd und führen Sie aus:

C:\Users\yourself>set TEXINPUTS=.;D:/transcripts//;

Dies funktioniert so lange, bis Sie die Befehlszeile schließen, d. h. Sie müssen dies ausführenjedes Malnach dem Schließen einer Befehlszeile.

b. Permanente Konfiguration Öffnen Sie eine Befehlszeile cmd und führen Sie aus:

C:\Users\yourself>setx TEXINPUTS .;D:/transcripts//;

Befehlszeile schließen. Auf diese Weise haben wir TEXINPUTSin IhremUmgebungsvariableund jetzt durchdringt es sich.

TEXINPUTSWenn Sie die Umgebungsvariable sehen müssen , verwenden Sie:

C:\Users\yourself>reg query HKEY_CURRENT_USER\Environment

TEXINPUTSWenn Sie aus der Umgebungsvariablen löschen müssen , verwenden Sie:

C:\Users\yourself>reg delete HKEY_CURRENT_USER\Environment /v TEXINPUTS /f

Alternativ können Sie dies auch grafisch tun, indem SieUmgebungsvariable.

Vollständiges Beispiel mitauxtrees

Dies ist ein Teil der Konfiguration, die wir mit einer Gruppe von Kollegen bei meiner Arbeit verwenden, indem wir ein Projekt verwenden, das in gehostet wird github(das wir auch im .zipFormat verteilen), wobei wir einige Pakete und benutzerdefinierte Klassen verwenden. Transkribieren Sie den Teil, der sich auf Windows bezieht (ich hoffe, Sie verstehen, dass meine Muttersprache Spanisch ist). Der TDSOrdner für dieses Beispiel befindet sich in D:/ltxcole/stycole/und die Struktur des Projekts ist:

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

Der Schlüssel liegt in stycoleder TDSStruktur:

└───stycole
    └───tex
        └───latex
               colegio-new2019.sty
               keyanswer.sty
               logoaurora.jpg
               tkz-custom.sty

Die TeXLive-Dokumentation für Windows-Konfigurationen ist nicht sehr "erklärend", im Forum gibt es aber gute Informationen. Die Verwendung von auxtreesermöglicht es, mehrere Projekte zu verwalten, ohne das gesamte System mit der TEXMFLOCALVariable zu beeinträchtigen oder alles in zu laden TEXMFHOME.

Öffnen Sie eine Befehlszeile cmd und führen Sie Folgendes aus:

C:\Users\yourself>tlmgr conf auxtrees --conffile C:/Users/yourself/texmf/texmf.cnf show
tlmgr.pl: no auxiliary texmf trees defined.

Die Ausgabe zeigt, dass wir nichts konfiguriert haben. Jetzt führen wir Folgendes aus:

C:\Users\yourself>tlmgr conf auxtrees --conffile C:/Users/yourself/texmf/texmf.cnf add D:/ltxcole/stycole/

Um zu überprüfen, ob alles korrekt ist, führen wir Folgendes aus:

C:\Users\yourself>tlmgr conf auxtrees --conffile C:/Users/yourself/texmf/texmf.cnf show
List of auxiliary texmf trees:
  D:/ltxcole/stycole/

Damit haben wir die Konfiguration unseres Projekts abgeschlossen. Die darin abgelegten Dateien D:/ltxcole/stycole/tex/latex/stehen nun allen unseren Dateien zur Verfügung. Die Datei C: Users\yourself\texmf.cnfenthält die folgende Zeile:

TEXMFAUXTREES = D:/ltxcole/stycole/,

und Sie können so viele Projekte hinzufügen, wie Sie möchten, solange Sie die TDSStruktur einhalten.

Wenn Sie nur Tests für sich selbst durchführen möchten, ist es natürlich einfacher TEXMFHOME, , obwohl der Vorteil der Verwendung vonauxtrees+git besteht jedoch darin, dass Sie eineplattformübergreifendAufbauSkript oder eine einfache READMEmit entsprechenden Anweisungen für ein Gemeinschaftsprojekt.

verwandte Informationen