Ich weiß, wie man ein Paket oder eine Klasse definiert, aber wie mache ich sie (für mich) jederzeit verfügbar?
Nehmen wir an, ich habe die Paketdatei "commonstuff.sty" (oder "myprettyclass.cls"), die ich in jede "tex"-Datei aufnehmen möchte, die ich auf meinem Computer erstelle. Wo soll ich sie einfügen? Muss ich dafür ein Installationsprogramm ausführen, oder reicht es aus, sie in einem bestimmten Ordner zu speichern?
Anmerkung: Ich weiß, dass ich sie einfach in denselben Ordner wie die .tex
-Datei legen kann, aber das ist nicht das, was ich hier suche. Ich suche nach einer Möglichkeit, das Paket zentral auf meinem Computer* zu installieren.
Sie könnten einen Ordner unterhalb Ihres TeX-Hauptverzeichnisses erstellen und Ihre .sty
-Datei darin ablegen. Verwenden Sie diesen Befehl an der Eingabeaufforderung, um herauszufinden, wo:
kpsewhich -var-value=TEXMFHOME
Auf meinem Computer zeigt es
C:/Users/stefan/texmf
aber auf einem Linux- oder Unix-Computer könnte es auch ~/texmf/
sein.
Der TeX-Verzeichnisstruktur folgend, sollten Sie Ihre Datei in einem Unterverzeichnis wie ~/texmf/tex/latex/commonstuff/
ablegen, gemäß Arthur's Kommentar unten. Dies hat den Vorteil, dass es nicht notwendig ist, die Paketdatenbank zu aktualisieren, da TeX Ihren persönlichen texmf
-Baum direkt durchsucht. Wenn es eine ls-R'-Datei in Ihrem persönlichen
texmf'-Baum gibt, können Sie sie getrost löschen, da TeX sie sowieso nicht verwenden wird. (Anmerkung: Dies setzt voraus, dass sich Ihr persönlicher Baum auf einem lokalen Dateisystem befindet: Benutzer mit entfernt gemounteten Home-Ordnern müssen möglicherweise immer noch einen Hash durchführen).
Was MiKTeX anbelangt, werfen Sie einen Blick auf den Abschnitt "Installieren von sty- oder cls-Dateien" in der Antwort auf die Frage Wie kann ich ein Paket unter MikTex (Windows) manuell installieren.
Sie können dann überprüfen, welche Datei mit verwendet wird:
kpsewhich filename.sty
Dies zeigt den Pfad zu der Datei an, die von der TeX-Implementierung übernommen wird.
Die .sty
Dateien müssen in einem Unterverzeichnis von tex/latex
in einem texmf Baum abgelegt werden. Diese Bäume haben eine ziemlich feste Struktur, aber ihr Ort kann je nach Betriebssystem und TeX-Distribution variieren. Wenn Sie Unix (einschließlich Mac OS) und TeX Live verwenden, gibt es standardmäßig eine Hierarchie
/usr/local/texlive/2009/texmf
/usr/local/texlive/2009/texmf-dist
/usr/local/texlive/texmf-local
sowie weitere Verzeichnisse. Sie sollten es in das texmf-local
-Verzeichnis legen, nicht in die anderen Verzeichnisse, die vom TeX Live-Installationsprogramm verwaltet werden; wenn Sie TeX Live aktualisieren, wird Ihr Paket möglicherweise überschrieben. Die texmf-local
-Hierarchie ist, wie der Name schon andeutet, für lokale Pakete, die von Ihnen verwaltet werden; sie wird von Updates nicht berührt (das ist auch der Grund, warum sie direkt unter dem texlive
-Verzeichnis liegt und nicht zum Beispiel unter texlive/2009
).
Sie können auch ein Verzeichnis mit dem Namen texmf
in Ihrem Home-Verzeichnis anlegen, dann ist das Paket nur für Sie sichtbar, nicht für andere Benutzer auf Ihrem Computer.
Unter Windows mit MiKTeX ist, glaube ich, das Verzeichnis für lokale Installationen standardmäßig C:\Localtexmf
.
In jedem Fall und unabhängig von Ihrer Distribution müssen Sie die Datei .sty
innerhalb von .../texmf-local/tex/latex
platzieren und nicht direkt im Stammverzeichnis; es wird sonst nicht funktionieren.
Wenn Sie das Paket in Ihrem Home-Verzeichnis installiert haben, müssen Sie nichts weiter tun. Wenn Sie hingegen texmf-local
installiert haben, müssen Sie das Dienstprogramm mktexlsr
(oder texhash
, es ist ein Alias) ausführen.
Unter Linux können Sie ein beliebiges Verzeichnis auswählen und dann eine Zeile hinzufügen wie
export TEXINPUTS=".:~/latex:"
in Ihre .bashrc-Datei ein (Sie können mehrere Verzeichnisse hinzufügen, getrennt durch Doppelpunkte. Ich denke, Sie brauchen das '.' am Anfang). Vielleicht gibt es unter Windows etwas Ähnliches. Ich finde dies einfacher, da es "mein" Zeug vom texmf-Baum trennt. Wahrscheinlich ist das nicht so toll, wenn man ein großes Paket schreibt, aber praktisch für kleine Dinge, die man zwischen all seinen Projekten austauschen möchte.