
Auf Unix-ähnlichen Systemen mit TeX Live gibt der Befehl kpsewhich --var-value=TEXMFLOCAL
den 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ß)
- ist eingerichtet, um richtig gefüllt zu verwendenTDS, also TeX-Verzeichnisstrukturen.
- verwendet die Karl Berry Search Path Tools. Damit kann man mit dem Kommandozeilentool
kpsewhich
ermitteln, wo eine Datei liegt. Dieser Befehl wurde von dem Unixwhich
-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:
- Die TDS für den Betreuer der Distributionen,
- Der TDS für den lokalen Systemadministrator,
- 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 tlmgr
herausfinden, wo sich diese drei TDS auf Ihrem Computer befinden. Führen Sie dazu einfach
tlmgr conf
und suchen Sie nach Zeilen, die beginnen mit
TEXMFDIST
TEXMFLOCAL
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.cnf
die 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 texhash
Befehl oder , mktexlsr
was die Kurzform von „Make the TeX ls-minus-R database“ ist (Um genau zu sein: es ist nichts anderes als ls -R $TEXMFDIST
oder 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 TEXMFHOME
Teil 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.cls
Version 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 TEXMFLOCAL
oder installieren TEXMFHOME
und Ihr System durch Bearbeiten temf.cnf
so konfigurieren, dass TEXMFDIST
im 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 yourself
und jedes Mal, wenn wir eine Befehlszeile startencmd
werden wir dies tunohne Administratorrechte.
Konfiguration von Variablen und Verzeichnissen
- Konfiguration von:
TEXMFHOME
Wenn Sie es in einer Befehlszeile ausführen,cmd
erhalten Sie:
C:\Users\yourself>kpsewhich -var-value=TEXMFHOME
C:/Users/yourself/texmf
Aber in Wirklichkeit texmf
existiert das Verzeichnis nicht als solches, wir müssen es entsprechend der TDS
Struktur erstellen. Wir werden es erstellen und dabei auf den Pfadtrenner achten, der in diesem Fall ist \
.
C:\Users\yourself>mkdir texmf\tex\latex
- Konfiguration von:
TEXMFCNF
Öffnen Sie eine Befehlszeilecmd
und 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 auxtrees
Befehl im Beispiel verwendet.
- Konfiguration von
TEXINPUTS
Angenommen, wir haben ein VerzeichnisD:/transcripts
mit Abschnitten oder Bildern, die aber nur lokal verfügbar sind und die wir zum Testen benötigen. In diesem Fall ist es am besten, dieTEXINPUTS
Variable 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 TEXINPUTS
in IhremUmgebungsvariableund jetzt durchdringt es sich.
TEXINPUTS
Wenn Sie die Umgebungsvariable sehen müssen , verwenden Sie:
C:\Users\yourself>reg query HKEY_CURRENT_USER\Environment
TEXINPUTS
Wenn 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 .zip
Format 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 TDS
Ordner 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 stycole
der TDS
Struktur:
└───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 auxtrees
ermöglicht es, mehrere Projekte zu verwalten, ohne das gesamte System mit der TEXMFLOCAL
Variable 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.cnf
enthält die folgende Zeile:
TEXMFAUXTREES = D:/ltxcole/stycole/,
und Sie können so viele Projekte hinzufügen, wie Sie möchten, solange Sie die TDS
Struktur 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 README
mit entsprechenden Anweisungen für ein Gemeinschaftsprojekt.