Ik weet hoe ik een package of een class moet definiëren, maar hoe maak ik het altijd beschikbaar (voor mezelf)?
Stel ik heb het package bestand commonstuff.sty
(of myprettyclass.cls
), dat ik wil kunnen opnemen in elk .tex
bestand dat ik maak op mijn computer. Waar moet ik het plaatsen? Moet ik er een of ander installatieprogramma op draaien, of is het voldoende om het in een bepaalde map te bewaren?
Note: Ik weet dat ik het gewoon in dezelfde map kan plaatsen als het .tex
bestand, maar dat'is niet waar ik hier naar op zoek ben. Ik'ben op zoek naar een manier om "install" the package centraal op mijn computer.
U zou een map kunnen maken onder uw TeX home directory en uw .sty
bestand daarin plaatsen. Gebruik dit commando op de opdrachtprompt om uit te vinden waar:
kpsewhich -var-value=TEXMFHOME
Op mijn computer staat er
C:/Users/stefan/texmf
maar het zou ook ~/texmf/
kunnen zijn op een Linux of Unix computer.
Volgens de TeX directory structuur, zou u uw bestand in een subdirectory als ~/texmf/tex/latex/commonstuff/
moeten plaatsen, volgens Arthur's commentaar hieronder. Dit heeft het voordeel dat het niet nodig is om de package database te updaten omdat TeX uw persoonlijke texmf
tree direct doorzoekt. Als er een ls-R
bestand in uw texmf
home tree staat, kunt u het veilig verwijderen omdat TeX het toch niet zal gebruiken. (Let op: dit gaat er van uit dat uw persoonlijke tree op een lokaal bestandssysteem staat: gebruikers met op afstand gemounte homedirectory's kunnen nog steeds hash nodig hebben).
Wat MiKTeX betreft, zie de sectie "Installing sty or cls files" in het antwoord op de vraag How can I manually install a package on MikTex (Windows).
U kunt dan nagaan met welk bestand:
kpsewhich filename.sty
Dit zal het pad tonen naar het bestand dat door de TeX implementatie wordt opgepikt.
De .sty
bestanden moeten in een subdirectory van tex/latex
in een texmf tree gezet worden. Die trees hebben een vrij vaste structuur, maar hun plaats kan variëren afhankelijk van uw OS en TeX distributie. Als u Unix (inclusief Mac OS) en TeX Live gebruikt, is er standaard een hiërarchie
/usr/local/texlive/2009/texmf
/usr/local/texlive/2009/texmf-dist
/usr/local/texlive/texmf-local
en ook andere mappen. U wilt het in de texmf-local
directory zetten, niet in de andere directories die door het TeX Live installatieprogramma worden beheerd; als u TeX Live upgrade, kan het zijn dat uw pakket wordt overschreven. De texmf-local
hiërarchie, zoals de naam al aangeeft, is voor lokale pakketten die door u worden beheerd; het zal niet worden aangeraakt door updates (dat is ook de reden waarom het direct onder de texlive
directory staat, en niet texlive/2009
, bijvoorbeeld).
U kunt er ook voor kiezen om een directory genaamd texmf
in uw home directory aan te maken, en het pakket zal alleen voor u zichtbaar zijn, niet voor de andere gebruikers op uw computer.
Op Windows met MiKTeX, geloof ik dat de directory voor lokale installaties standaard C:-Localtexmf
is.
In ieder geval en ongeacht uw distributie, moet u het .sty
bestand in .../texmf-local/tex/latex
plaatsen en niet direct in de root directory; het's gewoon zal niet werken anders.
Dan, als je'het pakket in je homedirectory hebt geïnstalleerd, heb je niets te doen. Als je daarentegen texmf-local
erin hebt gezet, moet je het hulpprogramma mktexlsr
(of texhash
, het'is een alias) uitvoeren.
Op Linux kun je elke directory kiezen die je wilt, en dan een regel toevoegen als
export TEXINPUTS=".:~/latex:"
aan je .bashrc bestand (je kunt meerdere directories toevoegen, gescheiden door dubbele punten. Ik denk dat je de '.' in het begin nodig hebt). Er is misschien iets gelijkaardigs in Windows. Ik vind dit gemakkelijker, omdat het "my" spul scheidt van de texmf boom. Waarschijnlijk niet geweldig als je'een groot pakket schrijft, maar handig voor wat kleine dingen die je gewoon wilt delen tussen al je projecten.