Ciao Rodolfo,
eccomi qua, con uno spaventoso ritardo accumulato sulla riformulazione della procedura per la ricerca incrociata .dvi<->.tex. Questo messaggio non serve a colmare quel ritardo, ma solo a provare a tamponare la falla che descrivi; il riassunto verrà più avanti, temo.
Procediamo
Salve a tutti.
Spero che Andrea sia nei paraggi, perché qui si tratta nuovamente della ricerca in avanti e inversa con Emacs e xdvi
trattata nel thread “Ricerca avanzata con plain TeX”.
Negli ultimi mesi ho fatto largo uso di queste due funzioni, che, come spiegato in quel thread,
consentono di creare un cordone ombelicale tra il file sorgente e quello di output
(cioè tra il file.tex e il file.dvi) nei documenti compilati con TeX o con LaTeX,
collegamento che consente con dei semplicissimi comandi (una volta impostato tutto correttamente)
8) di schizzare dall’uno all’altro file e viceversa, nel punto desiderato.
Dicevo che negli ultimi mesi ne ho fatto largo uso, eseguendo alla lettera le operazioni descritte nell’ultimo messaggio di quel thread, quello riassuntivo del 19 giugno, e tutto ha funzionato per il meglio.
Probabilmente però devo averle usate sempre con lo stesso file,
perché l’altro giorno, quando ho provato a lanciare la ricerca in avanti da un altro file,
col solito comando `C-x C-j’ impartito da Emacs, non ha funzionato.
Facendo diverse prove mi sono accorto che la ricerca in avanti mi funziona solo con un determinato file e con tutti gli altri no (!!),
fatto apparentemente davvero inesplicabile.
Prima domanda: i file sono tutti nella stessa directory, o in directory separate? Nel primo caso l’installazione della 9.0 basta, nel secondo caso no.
Ricordo che, per rendere possibile la ricerca in avanti direttamente da Emacs, con Mandrake Linux 9.0,
occorre e basta aggiungere all’inizio del file il comando
\input /usr/share/texmf/tex/latex/srcltx/srctex.sty
se si sta usando plain TeX, ovvero
\usepackage[active]{srcltx}
se si sta usando LaTeX (a patto che si sia opportunamente modificato il file .emacs come spiegato in quel messaggio).
❓ Ebbene, tutti i file con cui ho provato avevano quel comando iniziale, ma solo con uno (quello su cui più frequentemente ho lavorato ultimamente) la cosa funziona.(!)
Invece, col comando
xdvi -sourceposition “linenumber filename.tex” filename.dvi (invio)
impartito direttamente dalla console di Linux (come spiegato nel messaggio del 29 maggio)
la ricerca in avanti funziona senza problemi con tutti i file, anche se ovviamente è più scomoda.😯 Una spiegazione logica ci sarà senz’altro, ma io non riesco proprio a immaginarla.
Lo scopo della sequenza C-x C-j in (X)emacs (purché il file di configurazione sia stato modificato alla bisogna) è la costruzione di un comando con la esatta sintassi da te riportata, ovviamente con i campi linenumber, filename.tex e filename.dvi impostati ai valori corretti.
Ora, specie per un progetto multifile, è facile che le radici (i nomi senza estensione) del campo filename.tex e del campo filename.dvi siano diverse. Chiamiamo Masterfile quello che trasmette il nome al .dvi e Nonmaster ogni altro file del progetto: se (X)emacs non viene adeguatamente informato di quale sia il Masterfile per il file corrente, la ricerca in avanti può fallire dato che nella costruzione del comando per la visita del .dvi, emacs, in assenza di altre informazioni, usa la radice del file in corso di editazione; se questo è un Nonmaster NON ha un suo .dvi e xdvi non sa cosa visualizzare. Impartendo C-x C-j mentre si sta editando il Masterfile, invece, tutto dovrebbe funzionare, a meno che il .dvi non sia stato ridenominato per qualche ragione.
Per ovviare al problema è necessario inserire, alla fine di ciascun file del progetto, le linee
% Local Variables:
% mode: latex
% TeX-master: “Masterfile”
% End:
il package emacs xdvi-search, ovvero quello che contiene il codice richiamato dalla sequenza C-x C-j, cerca queste informazioni e le usa per puntare a Masterfile.dvi.
Incidentalmente, usando il package AUCTeX per la scrittura di progetti multifile sotto (X)emacs, queste righe vengono introdotte dalle routine del package alla prima compilazione lanciata dal file in editazione, in modo interattivo.
E’ quasi tutto qui: manca solo il fatto che, con l’installazione di Xdvi presente nella Mandrake9.0 non è possibile fare ricerche tenendo in conto il path del file (con conseguenti problemi nel caso in cui più file del progetto abbiano lo stesso nome ma si trovino in directory distinte 🙁 ): in altre parole, per poter usare la ricerca in avanti e inversa con emacs e Xdvi è bene che tutti i file del progetto si trovino nella stessa directory. La cosa non è più richiesta se si usa l’Xdvi della Mandrake 9.1.
Nota: le due diverse versioni di xdvi richiedono due diverse versioni di xdvi-search.
Anche in progetti multifile, invece, la ricerca all’indietro dovrebbe funzionare correttamente, a causa del diverso meccanismo di ricorstruzione delle informazioni necessarie (nella ricerca all’indietro è xdvi che estrae le informazioni dagli \special immersi nel .dvi all’inizio di ogni paragrafo e al cambio di file sorgente); ripensandoci, credo che siano state apportate delle modifiche anche all’installazione di teTeX (si passa dalla 1.0.x in Mdk9.0 alla 2.0.1 in Mdk9.1, se non ricordo male) che potrebbero condizionare la ricerca all’indietro sotto Mdk9.0 in caso di progetti multifile con file .tex distribuiti in directory distinte.
(Prima di produrre il documento riassuntivo dovrò risolvere questi dettagli.)
Spero che questo possa servirti, nell’immediato.
Ciao!