Jeg ved, hvordan man definerer en pakke eller en klasse, men hvordan gør jeg den tilgængelig (for mig selv) til enhver tid?
Lad os sige, at jeg har pakkefilen commonstuff.sty
(eller myprettyclass.cls
), som jeg ønsker at kunne inkludere i enhver .tex
-fil, jeg opretter på min computer. Hvor skal jeg lægge den? Skal jeg køre et eller andet installationsprogram på den, eller er det nok at opbevare den i en bestemt mappe?
Note: Jeg ved godt at jeg bare kan placere den i samme mappe som .tex
filen, men det er ikke det jeg er ude efter her. Jeg leder efter en måde at "installere" pakken centralt på min computer.
Du kan oprette en mappe under din TeX-hjemmemappe og lægge din .sty
-fil deri. Brug denne kommando i kommandoprompten for at finde ud af hvor:
kpsewhich -var-value=TEXMFHOME
På min computer viser den
C:/Users/stefan/texmf
men det kan også være ~/texmf/
på en Linux- eller Unix-computer.
Hvis du følger TeX-mappestrukturen, skal du placere din fil i en undermappe som ~/texmf/tex/latex/commonstuff/
, i henhold til Arthur's kommentar nedenfor. Dette har den fordel, at det ikke er nødvendigt at opdatere pakkedatabasen, da TeX søger direkte i dit personlige texmf
-træ. Hvis der er en ls-R
-fil i dit hjemlige texmf
-træ, kan du roligt slette den, da TeX alligevel ikke vil bruge den. (Bemærk: dette forudsætter, at dit personlige træ er på et lokalt filsystem: brugere med fjernmonterede hjemmemapper skal muligvis stadig hash'e.)
Med hensyn til MiKTeX, se afsnittet "Installing sty or cls files" i svaret på spørgsmålet How can I manuelt install a package on MikTex (Windows).
Du kan derefter kontrollere, hvilken fil der skal bruges med:
kpsewhich filename.sty
Dette vil vise stien til den fil, som TeX-implementeringen har hentet.
.sty
-filerne skal placeres i en undermappe til tex/latex
i et texmf-træ. Disse træer har en ret fast struktur, men deres placering kan variere alt efter dit operativsystem og din TeX-distribution. Hvis du bruger Unix (herunder Mac OS) og TeX Live, er der som standard et hierarki
/usr/local/texlive/2009/texmf
/usr/local/texlive/2009/texmf-dist
/usr/local/texlive/texmf-local
samt andre mapper. Du skal placere den i mappen texmf-local
, ikke i de andre mapper, som forvaltes af TeX Live-installationsprogrammet; når du opgraderer TeX Live, kan din pakke blive overskrevet. Hierarkiet texmf-local
er, som navnene antyder, for lokale pakker, der administreres af dig; det vil ikke blive berørt af opdateringer (hvilket også er grunden til, at det ligger direkte under mappen texlive
og ikke texlive/2009
, for eksempel).
Du kan også vælge at oprette en mappe kaldet texmf
i din hjemmemappe, og pakken vil kun være synlig for dig, ikke for de andre brugere på din computer.
På Windows med MiKTeX mener jeg, at mappen for lokale installationer som standard er C:\Localtexmf
.
Under alle omstændigheder og uanset hvilken distribution du har, skal du placere filen .sty
i .../texmf-local/tex/latex
og ikke direkte i rodmappen; ellers virker det bare ikke.
Så hvis du'har installeret pakken i din hjemmemappe, har du intet at gøre. Hvis du derimod har lagt texmf-local
ind, skal du køre hjælpeprogrammet mktexlsr
(eller texhash
, det er et alias).
På Linux kan du vælge en hvilken som helst mappe, du vil, og derefter tilføje en linje som
export TEXINPUTS=".:~/latex:"
til din .bashrc-fil (du kan tilføje flere mapper, adskilt med kolon. Jeg tror, at du har brug for '.' i begyndelsen). Der er måske noget lignende i Windows. Jeg synes det er nemmere, da det adskiller "mine" ting fra texmf-træet. Det er nok ikke godt hvis du'skriver en stor pakke, men praktisk til nogle små ting du bare vil dele mellem alle dine projekter.