Re: lentezza di compilazione solo da utente

#15338
Up
0
Down
::

Però è un bug del tuo .bashrc, non delle librerie di ricerca di TeX. Credo che la scelta di usare “//” per indicare la ricorsione nelle directory non sia casuale: Karl Berry, che ha sviluppato la libreria kpathsea, è l’attuale presidente del TeX Users Group.

non sapevo volesse dire “ricorsione”: ho imparato una cosa nuova! Se mi dici ciò allora confermo che il bug sono io (che avevo cambiato il path per altri motivi)!

Un problema antico dei programmi TeX era quello dei percorsi: c’è bisogno che questi programmi sappiano dove cercare fogli di stile, file di definizioni, file metrici dei font, immagini bitmap dei font e così via. Parecchi anni fa Karl Berry ebbe l’idea di una libreria unica su cui tutti i programmi possono appoggiarsi per queste ricerche. Poiché i file in gioco sono moltissimi e possono anche avere lo stesso nome pur con contenuti diversi (per esempio le immagini bitmap nei sistemi dove l’estensione è limitata a tre caratteri si chiamano tutte .pk e vengono distinti tramite la directory dove vivono, che ha come nome la risoluzione richiesta) è necessario organizzare una struttura ad albero. Ma specificare il percorso di ricerca completo è difficilmente mantenibile: ogni volta che si aggiunge una directory occorrerebbe modificare l’elenco dei percorsi; ci sarebbero anche ovvi problemi di memoria e di lunghezza di stringhe.

Quindi la ricerca avviene in modo ricorsivo: se stai usando il programma latex, il percorso di ricerca dei file di stile è, per esempio e semplificando, /tex/latex//, dove è, per la distribuzione TeX Live, /usr/local/texlive/2007/texmf-dist. La doppia barra finale indica che si va da lì in giù, ricorsivamente su tutte le sottodirectory. Per limitare l’accesso al disco, c’è un meccanismo di cache che qui è irrilevante (sono i file ls-R che vengono prodotti con lo script mktexlsr).

L’appoggiarsi a una libreria unica rende superfluo definire per ogni utente una miriade di variabili d’ambiente, come invece era necessario prima. Ma le variabili d’ambiente sono implicite nella libreria e l’utente può usarle.

Supponi che esca una versione beta di pgf, che è un insieme piuttosto vasto di macro per la grafica; i file di pgf sono organizzati in un albero, per vari motivi. Ottieni il tarball, pgf-beta.tar che spacchetti nella tua home, dentro la directory pgf-beta. Adesso vuoi insegnare a LaTeX che usi questa versione di pgf e non quella della distribuzione:
`export TEXINPUTS=~/pgf-beta//:`
è il modo di farlo; la variabile implicita TEXINPUTS contiene il percorso dove cercare i pacchetti. Se viene assegnata esplicitamente in questo modo, indica a LaTeX di cercare ricorsivamente da ~/pgf-beta e, in seguito, secondo il percorso della variabile implicita. È, in effetti, come scrivere
`export TEXINPUTS=~/pgf-beta//:${TEXINPUTS}`
pensando che la variabile sia già definita nell’ambiente (non lo è, però, quindi si deve usare il metodo descritto).

La documentazione di kpathsea è molto interessante per chi debba fare cose simili con altri programmi.

Ciao
Enrico

Go to top