- Questo topic ha 37 risposte, 6 partecipanti ed è stato aggiornato l'ultima volta 22 anni, 1 mese fa da
Rodolfo Medina.
-
CreatoreTopic
-
22 Aprile 2003 alle 11:26 #585::
Sul mio computer ho Mandrake Linux 9.0
e vorrei adoperare la ricerca avanzata e la ricerca inversa con plain TeX.
Ho cercato di seguire le istruzioni presenti nell’help di Mandrake Linux
ma ho incontrato le seguenti difficolà:
1) la directory emacs-script,
in cui è consigliato di scaricare il file kdvi-search.el,
non esiste nel mio computer;
2) mediante “trova file” riesco a scovare il file .emacs,
ma quando poi cerco di andarci, all’indirizzo scovato, non ce lo trovo!;
2) quindi accedo al file .emacs direttamente da “trova file”,
ma quando cerco di aggiungervi quelle righe opportune che l’help prescrive,
il file non mi viene salvato perch\’e “non ho i permessi di scrittura”.
Qualcuno \`e in grado di aiutarmi?
Grazie,
Rodolfo
-
CreatoreTopic
-
AutoreRisposte
-
-
23 Aprile 2003 alle 6:39 #586::
Nota amministrativa: mi sono preso la libertà di spostare questo post nel forum più appropriato, non vertendo su problemi legati a TeX ma all’utilizzo di Emacs.Passando ai problemi di Rodolfo:
1) la directory emacs-script,
in cui è consigliato di scaricare il file kdvi-search.el,
non esiste nel mio computer;Mi pare, ma non mi ricordo con precisione, che tu debba installare anche il pacchetto emacs-el (in ogni caso, tentare non nuoce).
2) mediante “trova file” riesco a scovare il file .emacs,
ma quando poi cerco di andarci, all’indirizzo scovato, non ce lo trovo!;Se hai utilizzato Emacs almeno una volta dovresti averlo nella tua home, solo che, come ben si vede dal nome è nascosto; assumendo che tu stia usando Konqueror, aprilo clickando sulla casetta, vai al menù “Visualizza” e seleziona “Mostra i file nascosti” (terzultima scelta). Se non hai mai usato Emacs potresti non avere .emacs nella tua home.
2) quindi accedo al file .emacs direttamente da “trova file”,
ma quando cerco di aggiungervi quelle righe opportune che l’help prescrive,
il file non mi viene salvato perch\’e “non ho i permessi di scrittura”.Evidentemente stai cercando di modificare un file che non ti appartiene. Hai prestato un minimo di attenzione al percorso del file che cerchi di modificare?
-
23 Aprile 2003 alle 18:35 #587::
Grazie, caro E., ma niente da fare!
Ora sono riuscito a modificare il file .emacs,
ho cercato di seguire tutti i passi indicati dall’help
ma la ricerca avanzata non dà segni di vita
né tanto meno quella inversa.
Ho l’impressione che l’operazione coinvolga dei passi abbastanza impegnativi,
che richiedano una buona conoscenza di Emacs?
Spero comunque che dal forum possa venire qualche ulteriore aiuto:
in realtà, essendo io alquanto novellino in materia
(che è un eufemismo per dire ignorante),
avrei bisogno di indicazioni “passo-passo”…
Rodolfo
-
24 Aprile 2003 alle 18:02 #588::
ma la ricerca avanzata non dà segni di vita né tanto meno quella inversa.
Non uso molto Emacs (anzi, direi che lo uso moooltooo poco), quindi non posso aiutarti più di tanto. Speriamo proprio che qualche altro frequentatore (Ninni, dove sei?) possa darti un aiuto maggiore (sempre qui sul forum, così la spiegazione rimarrà per i posteri).
-
13 Maggio 2003 alle 6:09 #589::
Ciao Rodolfo:innanzitutto grazie per avermi fatto scoprire un’alternativa al tradizionale e vetusto xdvi.
Ora:
0) Hai ancora necessità di risolvere il problema in oggetto, o nel frattempo sei riuscito a impostare il tuo ambiente?
Io ho provato a configurare il .emacs come suggerito nell’help di kdvi, con un lieve adattamento per il search path (non tengo le estensioni personali in ~/emacs-scripts) di emacs, e sia la ricerca avanzata sia la ricerca inversa funzionano egregiamente.
Fammi sapere.
Ciao.
-
13 Maggio 2003 alle 9:48 #590::
Caro Andrea,
sei l’unica mia speranza!
Ti prego, dimmi passo passo tutte le operazioni che devo fare,
anche quelle interne ad Emacs,
anche il search path preciso, tutto, insomma.
Per modificare il .emacs devo accedere al sistema “come root”, vero?
C’è comunque qualcosa di strano:
com’è scritto all’inizio del capitolo 5 del kdvi Handbook,
il file KDVI-features.dvi, che trovasi in usr/share/doc/HTML/en/kdvi/,
dovrebbe servire per avere una dimostrazione di come funziona la ricerca inversa.
Ebbene, niente:
clicco contemporaneamente coi due pulsanti del mouse ma nulla accade.
Eppure, nella finestra impostazioni del file ho selezionato l’editor Nedit,
che dovrebbe supportare perfettamente la ricerca inversa.Aspetto ansiosamente notizie, ti sarò grato per sempre!
Tu capisci bene, anzi tutti i partecipanti al Forum capiscono bene,
quanto siano importanti la ricerca inversa e avanzata con TeX.Rodolfo
-
13 Maggio 2003 alle 21:53 #591::
Ciao Rodolfo,le indicazioni che seguono valgono per emacs, il che equivale a dire che devi impostare il campo a scelta multipla Editor: nel pannello Impostazioni DVI / campo Speciali DVI di Kdvi al valore Emacs/emacsclient. Per modificare il .emacs non occorre essere root: basta un utente con una sua home directory. Le prove da me eseguite riguardano LaTeX; non ho effettuato prove in plain TeX.
+Ricerca avanzata+
0) Assumo che tu abbia già definito un utente, che per tranquillità sarebbe meglio NON fosse root, e che tu abbia avviato una sessione di login con quell’utente.
1) Hai controllato l’effettiva presenza di emacs? Riesci a lanciarlo? In quanto segue assumo di sì. Fammi sapere in caso contrario.
2) usa emacs per modificare il .emacs: digita “emacs ~/.emacs”
3) Vai in fondo al file (potrebbe verosimilmente essere vuoto: nessun problema) e aggiungi le righe specificate nella documentazione di kdvi, leggermente riviste:
(add-to-list ‘load-path (expand-file-name “~/lib/emacs”))
(require ‘kdvi-search)
(add-hook ‘LaTeX-mode-hook (lambda () (local-set-key “\C-x\C-j” ‘kdvi-jump-to-line)))
(add-hook ‘tex-mode-hook (lambda () (local-set-key “\C-x\C-j” ‘kdvi-jump-to-line)))Nota :
*Tutte* le parentesi sono significativeSalva il file e esci da emacs.
4) impartisci i comandi
“mkdir -p ~/lib/emacs” (invio)
“ln -s /usr/share/doc/HTML/en/kdvi/kdvi-search ~/lib/emacs” (invio)Il punto 4 non sarebbe necessario se tu usassi direttamente /usr/share/doc/HTML/en/kdvi/kdvi-search nella prima riga di quanto aggiunto al .emacs nel punto 3); agendo come ti suggerisco, tuttavia, avrai modo di personalizzare molto più facilmente il tuo utilizzo di emacs, semplicemente copiando altri file .el “esotici”, ovvero non presenti nella installazione standard (che sotto mandrake 9.0 fa uso di /usr/share/emacs, directory controllata da root) direttamente nella tua directory ~/lib/emacs. Se tutto questo non ti è chiaro non ti preoccupare: lo sarà col tempo.
5) Prova ad editare un tuo file .tex, sempre usando emacs. Assicurati che Kdvi NON stia visualizzando il file quando lo apri con emacs.
6) Portati in un punto del documento a valle del \begin{document}. Prova a digitare la sequenza Ctrl-x Ctrl-j; dopo poco dovresti vedere Kdvi in azione.
+Ricerca inversa+
7) Il tuo file contiene
\usepackage[active]{srcltx}
nel preambolo? E’ *indispensabile* per la ricerca inversa.
8) compila il tuo file .tex e lancia Kdvi su .dvi risultante. Scegli una pagina che ti aggrada e schiaccia il tasto centrale o i due tasti del tuo mouse.
Et voilà!
Com’è andata?
-
13 Maggio 2003 alle 22:55 #592::
Ariciao Rodolfo,bene, eccomi qui dopo le prove con plain TeX, a completare il messaggio precedente (devo ancora abituarmi all’idea di fare login su GUIT 🙂 )
Aggiungendo
\input /usr/share/texmf/tex/latex/srcltx/srctex.sty
in testa a un file .tex fittizio sono riuscito a ottenere le stesse funzionalità della versione latex, e cioè: ricerca avanzata con ctrl-x ctrl-j (nel rispetto di quanto specificato nelle righe aggiunte al .emacs) e ricerca inversa con il tasto centrale del mouse.
Unica nota aggiuntiva, che del resto si trovava già nella documentazione di kdvi: conviene accodare la linea
(server-start)
al file .emacs, per garantirsi che venga aperta, all’occorrenza, una sola copia dell’editor per visualizzare gli esiti delle ricerche inverse.
Ciao!
-
15 Maggio 2003 alle 19:01 #593::
Caro Andrea,anch’io dimentico ogni volta di fare il login…
🙂 ho l’impressione che con la ricerca avanzata ci siamo.
Ho fatto tutto come hai detto
tranne che, rispetto a quanto hai scritto al punto 4),
al posto del comando
“ln -s /usr/share/doc/HTML/en/kdvi/kdvi-search ~/lib/emacs”
ho dovuto impartire il comando
“ln -s /usr/share/doc/HTML/en/kdvi/kdvi-search.el ~/lib/emacs”
(cioè, in pratica, ho dovuto aggiungere l’estensione .el al nome del file kdvi-search),
altrimenti ottenevo un messaggio di errore all’apertura di Emacs.
All’inizio la ricerca avanzata faceva un po’ la ritrosa, si faceva pregare,
mi mostrava delle finestre in cui diceva che non era in grado di arrivare, nel file .dvi,
proprio a quella riga precisata nel file di testo!
e arrivava sempre soltanto al principio del file .dvi;
ma poi dopo qualche mia insistenza ha ceduto (credo)
e ora mi porta non sulla riga ma bensì alla fine del capoverso.
E’ normale o dovrebbe andare precisamente sulla riga?
(O addirittura sulla parola esatta?)🙁 Chi invece non vuol proprio saperne è la ricerca inversa.
Ho fatto esattamente così come tu hai detto nel tuo ultimo messaggio,
e infatti, all’apertura del file .dvi,
compare una promettente finestra che assicura che la ricerca inversa funzionerà;
ma invece, come ti avevo detto a proposito del file KDVI-features.dvi,
cliccando contemporaneamente col destro e sinistro
(il mio mouse non dispone del tasto centrale)
nulla accade!
Come può essere?Ti ringrazio moltissimo,
e però attendo ansiosamente ancora tue nuove!
Rodolfo
-
16 Maggio 2003 alle 4:55 #594::
Ciao Rodolfo,(…)Ho fatto tutto come hai detto
tranne che, rispetto a quanto hai scritto al punto 4),
al posto del comando
“ln -s /usr/share/doc/HTML/en/kdvi/kdvi-search ~/lib/emacs”
ho dovuto impartire il comando
“ln -s /usr/share/doc/HTML/en/kdvi/kdvi-search.el ~/lib/emacs”
(cioè, in pratica, ho dovuto aggiungere l’estensione .el al nome del file kdvi-search),
altrimenti ottenevo un messaggio di errore all’apertura di Emacs.Giusto! Mio refuso.
All’inizio la ricerca avanzata faceva un po’ la ritrosa, si faceva pregare,
mi mostrava delle finestre in cui diceva che non era in grado di arrivare, nel file .dvi,
proprio a quella riga precisata nel file di testo!
e arrivava sempre soltanto al principio del file .dvi;
ma poi dopo qualche mia insistenza ha ceduto (credo)
e ora mi porta non sulla riga ma bensì alla fine del capoverso.
E’ normale o dovrebbe andare precisamente sulla riga?
(O addirittura sulla parola esatta?)Se il .dvi è già aperto quando eseguo la prima ricerca avanzata molto spesso la ricerca fallisce, proprio nel modo che hai descritto. Se invece lancio prima emacs e da emacs causo, per mezzo di una ricerca avanzata, l’esecuzione di kdvi tutto funziona bene.
In tutte le prove che ho effettuato la ricerca avanzata ha sempre portato a centrare la visualizzazione intorno all’inizio del paragrafo. Non ho provato a eseguire la ricerca partendo da una parola che appartenesse a un paragrafo spezzato (parte su una pagina, parte sulla pagina successiva) in formattazione; dando un’occhiata al file kdvi-search.el si vede che la chiamata a kdvi (shell wrapper per kviewshell) passa il numero della linea nella quale si trova il cursore emacs nel buffer corrente; escluderei, pertanto, una precisione superiore alla linea. Per una risposta più precisa occorre guardare il .sty.
🙁 Chi invece non vuol proprio saperne è la ricerca inversa.
Ho fatto esattamente così come tu hai detto nel tuo ultimo messaggio,
e infatti, all’apertura del file .dvi,
compare una promettente finestra che assicura che la ricerca inversa funzionerà;
ma invece, come ti avevo detto a proposito del file KDVI-features.dvi,
cliccando contemporaneamente col destro e sinistro
(il mio mouse non dispone del tasto centrale)
nulla accade!
Come può essere?Mh, ricontrolliamo.
1) Se, dopo aver lanciato emacs, da un terminale provi a eseguire il comando emacsclient nomefile, emacs esegue la visualizzazione del file indicato? (Ctrl-x # per uscire)
2) Hai selezionato emacs nel campo editor del tab speciali-dvi del pannello Preferenze-KViewShell della voce OpzioniDVI del menu Impostazioni di KViewShell?
3) Hai compilato il tuo .tex dopo aver incluso il file srctex.sty?
4) Riesci a sfruttare l’emulazione del terzo tasto in altri contesti (tipo “selezione stringa” in xterm per mezzo della pressione del tasto sinistro e trascinamento del mouse, e copia, nello stesso xterm, della stringa per mezzo della pressione dei due tasti in contemporanea)?Se hai risposto 4 sì la situazione si fa interessante…
Fammi sapere se anche una sola delle mie domande non ti è chiara. E’ importante.[Next]
-
16 Maggio 2003 alle 16:11 #595
-
17 Maggio 2003 alle 12:11 #596::
Ciao Rodolfo,la tua quarta domanda non mi è chiara: cos’è xterm?
è un programma di emulazione terminale: riproduce il comportamento dei terminali VT102/VT220 e del Tektronix 4014, di passata memoria. Per quanto ci interessa qui, puoi sostituirlo con un altro programma di emulazione terminale: gnome-terminal, rxvt, Eterm, aterm, etc.
Per entrambi i desktop manager più diffusi (KDE e Gnome) dovresti trovarne qualcuno sotto il menu principale, alla voce “terminali”, se non hai cancellato icone dal pannello applicazioni dovresti poter lanciare un emulatore di terminale anche da lì.
Ciao.
-
17 Maggio 2003 alle 17:23 #597::
Caro Andrea,😳 il motivo per cui la ricerca inversa non mi funzionava
era che il mio mouse disponeva del tasto centrale
ma io non me n’ero accorto!
Cosa vuoi, sono cose che succedono…Quindi ora ho entrambe la ricerca avanzata e quella inversa:
la prima mi porta, nel file .dvi, alla fine del paragrafo
corrispondente; e la seconda, nel file sorgente, all’inizio del
paragrafo corrispondente.
E tuttavia permangono i problemi.
Sì, perché io faccio molto uso di file che includono altri file
mediante il comando \input,
e le due ricerche applicate a un file che sia incluso appunto in un master file
non mi funzionano per niente bene.
Quella avanzata non riesce a beccare il punto giusto
e si ferma sempre solo all’inizio del .dvi;
e quella inversa, addirittura, non si attiva neppure.
Anche a te risultano queste difficoltà?
E come fare (se possibile) per superarle?
In caso contrario, dovrei concludere che, così com’è,
la ricerca avanzata e inversa purtroppo mi è poco utile.Mi stai dando un grande aiuto.
Rodolfo
-
21 Maggio 2003 alle 5:49 #598::
Ci riprovo: ieri Linux m’è andato in stallo (!!!) mentre scrivevo e poi sono stato preso da altre incombenze meno divertenti😳 il motivo per cui la ricerca inversa non mi funzionava
era che il mio mouse disponeva del tasto centrale
ma io non me n’ero accorto!Bene! Un problema risolto. E’ un mouse con rotellina?
E tuttavia permangono i problemi.
Sì, perché io faccio molto uso di file che includono altri file
mediante il comando \input,
e le due ricerche applicate a un file che sia incluso appunto in un master file
non mi funzionano per niente bene.
Quella avanzata non riesce a beccare il punto giusto
e si ferma sempre solo all’inizio del .dvi;
e quella inversa, addirittura, non si attiva neppure.
Anche a te risultano queste difficoltà?Quasi. Ho dato un’occhiata al .dvi e ai file di supporto: kdvi-search.el e src(tex|ltx).sty e ritengo che l’origine del problema risieda nell’uso dei .sty. In pratica: l’inserimento dei tag usati da kdvi per la ricerca avanzata o inversa (“src:
“) nel .dvi per i file inclusi sembra non funzionare adeguatamente quando si usa il comando \input. Usando LaTeX, invece, e il comando \include{}, le cose vanno a posto. Devo analizzare srctex.sty e capire da dove nasce il problema. Le stringhe di tag ci sono, ma i comandi che le usano fanno parte di una gerarchia di macro che devo studiare. E come fare (se possibile) per superarle?
In caso contrario, dovrei concludere che, così com’è,
la ricerca avanzata e inversa purtroppo mi è poco utile.Se puoi usare il LaTeX la soluzione è sul piatto, ma il titolo del thread farebbe pensare diversamente 😉
Spero di avere presto buone notizie.
Ciao,
-
21 Maggio 2003 alle 16:59 #599::
Pur di godere dei vantaggi della ricerca inversa e avanzata
ho risolto di rinunciare ad “\input-tare” files in un master file
e mettere tutto assieme in un unico, lunghissimo file.
Tutto sommato, non sar\`a poi un gran male.Ho dunque gi\`a incominciato ad usare le due ricerche,
e per\`o devo dire che alcune volte hanno una precisione micidiale,
mentre altre volte soprattutto la ricerca avanzata
sbaglia la mira
finendo una, talvolta due pagine pi\`u indietro del dovuto!;
e non sono fino ad ora riuscito a capire da cosa pu\`o mai dipendere,
a cosa \`e dovuta questa variabilit\`a di comportamento.Spero che tu, o qualche altro partecipante al forum
riusciate a venire a capo della faccenda.
O anche qui il problema riguarda solo plain TeX e non anche LaTeX?
In tal caso, credo che comincerei ad avvertire un leggero complesso di inferiorit\`a!Grazie assai, di cuore
Rodolfo
-
24 Maggio 2003 alle 23:21 #600::
Caro Andrea,
💡 ho dato uno sguardo all’help di xdvi
per vedere se la ricerca avanzata funziona meglio che col kdvi.
😀 Quella inversa sembra non avere grossi problemi:
dalla “console” digito il comando
“xdvi -editor emacs nomefile”
ed eccomi nel file .dvi:
poi con CTRL-Mouse 1 mi ritrovo al posto giusto nel file sorgente
(anche se appare il seguente messaggio:
“Warning: editor command contains no %l (for the line number)
and no %f (for the file name)!”).
🙁 La ricerca avanzata, invece, non va:
digito “xdvi -sourceposition numero-di-linea nomefile”
e appare il seguente messaggio:
“No references to source file ” ” in dvi file”.
Eppure nel file sorgente ho incluso, mediante il comando \input, il file srctex.sty!Ciao,
Rodolfo
-
26 Maggio 2003 alle 6:34 #601::
Ciao Rodolfo,il tempo per le cose interessanti è troppo poco: è passato un po’ dal mio ultimo messaggio, ma credo di aver qualcosa di utile:
💡 ho dato uno sguardo all’help di xdvi
per vedere se la ricerca avanzata funziona meglio che col kdvi.Urca! Non mi ero mai reso conto di questa “feature” di xdvi! Grazie di nuovo!
Avevo notato da tempo che la versione sotto Linux è più aggiornata di quella che uso al lavoro, e della possibilità, con la versione più recente, di usare i collegamenti ipertestuali introdotti, per esempio, da hyperref, ma ignoravo totalmente le possibilità di ricerca incrociata sorgente/DVI.BTW, ho scoperto che il package srcltx su CTAN è più aggiornato di quello installato di default in teTeX, almeno con la mandrake 9.0.
(In merito alle ricerche.) Quella inversa sembra non avere grossi problemi:
dalla “console” digito il comando
“xdvi -editor emacs nomefile”
ed eccomi nel file .dvi:
poi con CTRL-Mouse 1 mi ritrovo al posto giusto nel file sorgente
(anche se appare il seguente messaggio:
“Warning: editor command contains no %l (for the line number)
and no %f (for the file name)!”).Supponendo, per semplicità, che tu abbia già lanciato emacs in background (da xterm: digita “emacs &”) e che il tuo .emacs contenga il comando “(server-start)”, lancia xdvi da linea di comando digitando
xdvi -editor “emacsclient +%l %f”
🙁 La ricerca avanzata, invece, non va:
digito “xdvi -sourceposition numero-di-linea nomefile”
e appare il seguente messaggio:
“No references to source file ” ” in dvi file”.
Eppure nel file sorgente ho incluso, mediante il comando \input, il file
srctex.sty!Da una prima analisi della gerarchia di macro nel file srctex.sty (versione Mandrake) i cui nodi terminali usino la stringa “src:”, dalla lettura della documentazione del package, e da prove effettuate direttamente, direi che:
0) Se non ci sono copie di xdvi in funzione, Impartendo il comando
xdvi -sourceposition “
” (nota: le virgolette sono importanti)
xdvi dovrebbe aprirti il .dvi con un box intorno al paragrafo che contiene la riga indicata.
1) srctex.sty introduce un riferimento alla linea sorgente all’inizio di ogni paragrafo; a meno di inserire a mano i comandi \special necessari, o di estendere srctex.sty secondo le esigenze del momento, non possiamo aspettarci precisione migliore di quella di paragrafo. Sia xdvi, sia emacs consentirebbero una precisione più alta, ma questa non è nelle possibilità di
srctex.sty2) Per poter usare la ricerca in avanti su sorgenti .tex inclusi di altri .tex, al posto di \input devi usare la macro \Input{
} (I maiuscola), definita da srctex.sty Bene, mi sembra che, a meno della modifica del file .el per attivare la ricerca in avanti direttamente da dentro emacs (ammesso che sia questo l’editor di tua preferenza), per il resto dovremmo esserci.
Fammi sapere se hai problemi a riprodurre quanto riportato.
Ciao!
-
29 Maggio 2003 alle 20:11 #602::
Caro Andrea,Bene, mi sembra che, a meno della modifica del file .el per attivare la ricerca in avanti direttamente da dentro emacs (ammesso che sia questo l’editor di tua preferenza), per il resto dovremmo esserci.
❓ vuoi dire che è possibile attivare la ricerca in avanti anche direttamente da dentro emacs?
😀 Il programma xdvi sarà anche vetusto,
ma è proprio vero che a volte le cose antiche funzionano meglio di quelle nuove.
Infatti ho l’impressione
(anche se, per esprimere un giudizio definitivo, devo continuare a testare)
che, eseguendo alla lettera tutti i comandi da te specificati nell’ultimo messaggio,
la ricerca avanzata e quella inversa funzionino, almeno per quanto riguarda plain TeX,
decisamente meglio con l’xdvi che non col kdvi.
Non ho ancora sperimentato la funzionalità della cosa quando ci sono i file \input,
poiché come ti dissi avevo rinunziato a \input-tare file.8) Comunque adesso, tra ricerca inversa e avanzata e hyperlinks,
ho la possibilità di spaziare in tutto il documento
con giochi di sponda e triangolazioni mai viste.
Se una importuna ustioncella all’avambraccio non mi avesse funestato le ultime settimane,
mi verrebbe voglia di brindare!Riassumo qui di seguito tutte le operazioni
nel caso che possano tornare utili a qualcuno.😯 Ricerca inversa e avanzata per TeX e LaTeX,
con xdvi ed Emacs,
in Mandrake Linux 9.0.1)Hai controllato l’effettiva presenza di emacs? Riesci a lanciarlo?
In quanto segue assumo di sì.
2)Usa emacs per modificare il file .emacs: digita
emacs ~/.emacs
dalla Shell di Linux.
3)Vai in fondo al file (potrebbe verosimilmente essere vuoto: nessun problema)
e aggiungi la riga
(server-start);
salva il file e esci da emacs.
4)Impartisci i comandi
mkdir -p ~/lib/emacs (invio)
ln -s /usr/share/doc/HTML/en/kdvi/kdvi-search ~/lib/emacs (invio).
5)Apri il tuo file sorgente impartendo il comando
emacs ~/…/filename.tex (invio)
e aggiungi all’inizio del file il comando
\input /usr/share/texmf/tex/latex/srcltx/srctex.sty
se stai usando plain TeX, ovvero il comando
\usepackage[active]{srcltx}
se stai usando LaTeX, poi salva il file.
6)Apri una nuova Console di Shell, col comando cd accedi alla directory che contiene i due file, quello sorgente e quello .dvi, e impartisci il comando
xdvi -editor “emacsclient +%l %f” filename.dvi (invio).
7)In un punto qualsiasi del file .dvi clicca Ctrl-mouse-1 e voilà: la ricerca inversa.
8)Apri una nuova Console di Shell, col comando cd accedi alla directory che contiene i due file, quello sorgente e quello .dvi, e impartisci il comando
xdvi -sourceposition “linenumber filename.tex” filename.dvi (invio)
e voilà: la ricerca avanzata.A te, Andrea, eventuali correzioni e aggiunte.
Ciao,
Rodolfo
-
4 Giugno 2003 alle 6:01 #603::
Ciao Rodolfo,con qualche giorno di ritardo, eccoti i risultati delle ulteriori prove effettuate sull’abbinata emacs-xdvi. A patto di rispettare un certo ordine nelle operazioni, l’interazione tra emacs e xdvi sembra funzionare anche meglio di quella tra lo stesso emacs e kdvi!
Caro Andrea,
Bene, mi sembra che, a meno della modifica del file .el per attivare la ricerca in avanti direttamente da dentro emacs (ammesso che sia questo l’editor di tua preferenza), per il resto dovremmo esserci.
❓ vuoi dire che è possibile attivare la ricerca in avanti anche direttamente da dentro emacs?
Sì.
Si tratta di modificare leggermente il file kdvi-search.el (io l’ho rinominato xdvi-search per evitare confusioni, aggiornando poi il .emacs nella mia home così che carichi xdvi-search anziché kdvi-search e associ la sequenza di ricerca in avanti alla funzione giusta). Più nel dettaglio, si può procedere come segue:
0) copiare kdvi-search.el in xdvi-search.el; aprire xdvi-search.el con emacs
1) sostituire tutte le occorrenze di “kdvi” con “xdvi”
2) intervenire sulla funzione xdvi-jump-to-line sostituendo le linee 53-56(start-process “xdvi”
“xdvi-output” “xdvi” ;;; src-arg
;;; args for -sourceposition:
“–unique” (concat “file:” dvi-file “#src:” current-line filename)
“-sourceposition” (concat current-line filename ” ” dvi-file)
)))))(Nelle quali xdvi ha già preso il posto di kdvi 😉 )
con
(shell-command
(concat
“xdvi -sourceposition ”
current-line filename ” ”
dvi-file ” -editor ‘emacsclient +%l %f’”)
nil “xdvi-errors”)))))[Nota 0: Il linguaggio di controllo di (Xe|E)macs è il LisP, pertanto tutte le parentesi sono importanti.
Nota 1: dopo svariati tentativi di avviare un processo per il controllo di xdvi, tutti andati male, ho deciso di optare per una shell. Questo comporta delle restrizioni d’uso, riportate più avanti (4.3).
Nota 2: Gli spazi sono importanti (determinano la giusta separazione tra gli argomenti della chiamata a shell).]3) Salvare e uscire
4) IMPORTANTE: nell’uso dell’accoppiata emacs-xdvi così impostata occorre
4.1) Avere già un’istanza di emacs in esecuzione (o aprirla ad hoc, senza argomenti).
4.2) Lanciare xdvi sul file da editare, con le opzioni di ricerca inversa stabilite o tramite linea di comando (“-editor +%l %f”) o tramite l’assegnazione della medesima stringa a una variabile d’ambiente tra XEDITOR, o ViSUAL, o EDITOR (in quest’ordine di priorità) [consultare la pagina di man di xdvi per ulteriori informazioni].
4.3) (Questo è il punto veramente IMPORTANTE.) Lanciare PRIMA una ricerca inversa da xdvi, così che emacs abbia un canale aperto col visualizzatore, e poi da emacs le eventuali ricerche in avanti. In questo modo si mantiene un controllo asincrono sia su xdvi, sia su emacs.X.0) Nella “malaugurata” ipotesi che si sia lanciata prima una ricerca in avanti, che dovrebbe aver aperto una propria istanza di xdvi, finché non si termina quell’istanza non sarà possibile riprendere il controllo di emacs.
X.1) Nell’ancor più malaugurata ipotesi che fosse stata lanciata una ricerca inversa dall’istanza di xdvi lanciata da emacs al passo X.0) chiudere l’istanza di xdvi e digitare C-g (cioè Control g) nella finestra di emacs. Ripartire dal passo 4.3.
😀 Il programma xdvi sarà anche vetusto,
ma è proprio vero che a volte le cose antiche funzionano meglio di quelle nuove.
Infatti ho l’impressione
(anche se, per esprimere un giudizio definitivo, devo continuare a testare)
che, eseguendo alla lettera tutti i comandi da te specificati nell’ultimo messaggio,
la ricerca avanzata e quella inversa funzionino, almeno per quanto riguarda plain TeX,
decisamente meglio con l’xdvi che non col kdvi.Confermo.
Non ho ancora sperimentato la funzionalità della cosa quando ci sono i file \input,
poiché come ti dissi avevo rinunziato a \input-tare file.Per quel poco che ho provato, sembra funzionare egregiamente. L’importante, lo ricordo ancora una volta, è usare \Input anziché \input se si sta usando TeX.
8) Comunque adesso, tra ricerca inversa e avanzata e hyperlinks,
ho la possibilità di spaziare in tutto il documento
con giochi di sponda e triangolazioni mai viste.
Se una importuna ustioncella all’avambraccio non mi avesse funestato le ultime settimane,
mi verrebbe voglia di brindare!Riassumo qui di seguito tutte le operazioni
nel caso che possano tornare utili a qualcuno.😯 Ricerca inversa e avanzata per TeX e LaTeX,
con xdvi ed Emacs,
in Mandrake Linux 9.0.1)Hai controllato l’effettiva presenza di emacs? Riesci a lanciarlo?
In quanto segue assumo di sì.
2)Usa emacs per modificare il file .emacs: digita
emacs ~/.emacs
dalla Shell di Linux.
3)Vai in fondo al file (potrebbe verosimilmente essere vuoto: nessun problema)
e aggiungi la riga
(server-start);
salva il file e esci da emacs.
4)Impartisci i comandi
mkdir -p ~/lib/emacs (invio)
ln -s /usr/share/doc/HTML/en/kdvi/kdvi-search ~/lib/emacs (invio).
5)Apri il tuo file sorgente impartendo il comando
emacs ~/…/filename.tex (invio)
e aggiungi all’inizio del file il comando
\input /usr/share/texmf/tex/latex/srcltx/srctex.sty
se stai usando plain TeX, ovvero il comando
\usepackage[active]{srcltx}
se stai usando LaTeX, poi salva il file.
6)Apri una nuova Console di Shell, col comando cd accedi alla directory che contiene i due file, quello sorgente e quello .dvi, e impartisci il comando
xdvi -editor “emacsclient +%l %f” filename.dvi (invio).
7)In un punto qualsiasi del file .dvi clicca Ctrl-mouse-1 e voilà: la ricerca inversa.
8)Apri una nuova Console di Shell, col comando cd accedi alla directory che contiene i due file, quello sorgente e quello .dvi, e impartisci il comando
xdvi -sourceposition “linenumber filename.tex” filename.dvi (invio)
e voilà: la ricerca avanzata.A te, Andrea, eventuali correzioni e aggiunte.
Ciao,
RodolfoOra devo scappare, aggiornerò la lista di passi in un messaggio successivo.
Ciao,
Andrea.
-
5 Giugno 2003 alle 6:02 #604::
Ciao Rodolfo,eccomi con alcune novità.
Interazione con altri editor
All’indirizzo <http://xdvi.sourceforge.net/inverse-search.html> sono reperibili informazioni sulla ricerca in avanti e inversa in xdvi con (X)Emacs, vim, Nedit e altro.xdvi-search.el, sincronizzazione e modifiche
L’autore della pagina, Stefan Ulrich, è anche autore di un xdvi-search.el che risolve i problemi di sincronizzazione ai quali accennavo nel mio messaggio precedente.Una prima prova d’uso del xdvi-search.el di Ulrich mi ha fatto ricordare che nel mio passaggio da kdvi-search.el a xdvi-search.el avevo dovuto sistemare un dettaglio sul nome del file da passare come secondo argomento dell’opzione -sourceposition per xdvi (la versione di xdvi presente nella mia installazione di mandrake 9.0 non esegue il matching tra file name con path assoluto e i tag inseriti nel .dvi da srcltx.sty; io ho risolto il problema rimuovendo il path dal filename, lasciando il solo nome puro (basename), ma questo apre altri problemi nel caso in cui, per esempio, il master .tex file includa due file con lo stesso nome ma percorsi diversi; nel file di Ulrich è presente un commento riguardante il matching). Risistemato lo stesso dettaglio nel xdvi-search.el di Ulrich, e modificata leggermente la linea di chiamata a xdvi, in modo da poter usufruire della ricerca inversa senza dover definire alcuna variabile d’ambiente (o dover agire sulle risorse X associate a xdvi), adesso la ricerca in avanti e quella inversa funzionano senza problemi sia partendo da xdvi, sia da emacs.
In sintesi: la modifica a kdvi-search.el del messaggio precedente non è sufficiente per il corretto funzionamento del tutto. Prima di presentare la soluzione completa penso di scrivere a Ulrich per discutere con lui i dettagli delle modifiche.
Ti terrò aggiornato.
Ciao!
-
5 Giugno 2003 alle 8:20 #605
-
5 Giugno 2003 alle 16:54 #606::
Io volevo ringraziare non solo andrea ma nache romeomedina, che insieme stanno portando avanti una discussione davvero interessante.
Ora sono impegantissimo e non posso ma sicuramente mi metterò anche io a sfruttare questa magnifica opportunità di ricerca.
Inoltre in seno allo staff di GuIT si sta progettando un inserimento nel sito dell’argomento e un membro dello staff sta anche traducento in italiano un po’ di documentazione.
Grazie a tutti e due di animare la discussione,
ciao
-
10 Giugno 2003 alle 2:17 #607::
Ciao Rodolfo,ecco un primo resoconto dello scambio di mail con Ulrich:
1) il file dxdvi-search.el scaricabile partendo dall’indirizzo <http://xdvi.sourceforge.net/inverse-search.html>
funziona bene con la versione corrente di xdvi, ovvero:xdvik-22.74.2
Questa versione, stando a quanto afferma Ulrich, esegue un matching “intelligente” tra i path dei file passati come argomento di chiamata e i tag trovati all’interno del .dvi
Io non l’ho ancora provata.
Per versioni precedenti, come la 22.40k presente in mandrake 9.0, e comunque non precedenti alla 22.38, occorre usare un altro file, reperibile all’indirizzo
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/xdvi/xdvik/texk/xdvik/xdvi-search.el?rev=1.2.4.7
Impostata la variabile d’ambiente EDITOR a “emacsclient –no-wait +%l %f” sono stato in grado di eseguire ricerche in avanti e inverse, da emacs, senza intervenire minimamente sul .el
2) per ovviare a eventuali problemi di mancato matching in base a quanto scrive Ulrich dovrebbe essere possibile specificare l’opzione -src sulla linea di chiamata a (La)TeX
latex -src test
latex -src ./test
latex -src ~/tex/testle tre chiamate porterebbero, rispettivamente, a .dvi senza path, con path locale (./) o con path assoluto.
Io ho provato a usare l’opzione -src sia con TeX, sia con (La)TeX, ma l’istallazione di TeX della MDK9.0 (teTeX 1.0.7) non la riconosce. Sotto MDK9.1, teTeX 2.0.1 sembra invece in grado di gestirla (ho solo provato a specificare l’opzione sulla linea di chiamata, senza eseguire una vera elaborazione). BTW, da CTAN è possibile scaricare teTeX 2.0.2.
Presto ulteriori info.
Ciao.
-
11 Giugno 2003 alle 20:51 #608::
Caro Andrea,apprezzo molto la ricerca che stai portando avanti,
anche se non sono abbastanza esperto da riuscire a seguirne benissimo tutti gli aspetti.Impostata la variabile d’ambiente EDITOR a “emacsclient –no-wait +%l %f” sono stato in grado di eseguire ricerche in avanti e inverse, da emacs, senza intervenire minimamente sul .el
Con quale comando lanci la ricerca in avanti direttamente da emacs?
Control-qualche cosa, cosa?2) per ovviare a eventuali problemi di mancato matching
Io sto usando entrambe le funzioni (ricerca in avanti e ricerca inversa)
utilizzando i passi descritti nel messaggio del 29 maggio,
e mi sembra funzionino alquanto bene, con una precisione di paragrafo.
A cosa tendono dunque precisamente questi tuoi ulteriori sforzi?
Forse ad ottenere addirittura una precisione di riga?
Questo sarebbe davvero eccezionale…
O forse riscontri qualche difetto, qualche malfunzionamento,
che invece io finora non ho rilevato?Più in là sarà bene poi riassumere tutto quanto
in un elenco dettagliato di istruzioni passo passo (sei d’accordo?),
come io ho cercato di fare nel messaggio del 29 maggio.Grazie a tutto il forum, oltre che a te, Andrea,
che ha permesso, spero, anche ad altri utilizzatori di (La)TeX oltre che a noi due
di ottenere l’interazione tra il file sorgente e il file di uscita,
che era proprio una cosa essenziale che ci voleva.A presto,
Rodolfo
-
11 Giugno 2003 alle 22:57 #609::
Ciao Rodolfo,Con quale comando lanci la ricerca in avanti direttamente da emacs?
Control-qualche cosa, cosa?Sì: Control-x Control-j.
Digitando questa sequenza in un punto del testo .tex sorgente xdvi visualizza la pagina contenente il paragrafo, racchiudendo lo stesso in un rettangolo.Per poter utilizzare la sequenza occorre aver introdotto nel .emacs le linee di codice seguenti
(add-hook
‘LaTeX-mode-hook
(lambda () (local-set-key “\C-x\C-j” ‘xdvi-jump-to-line)))
(add-hook
‘tex-mode-hook
(lambda () (local-set-key “\C-x\C-j” ‘xdvi-jump-to-line)))Che fanno sì, sempre che sia stato attivato il modo maggiore TeX o LaTeX, che la sequenza Control-x Control-j causi l’esecuzione della funzione xdvi-jump-to-line; questa, purché tu stia utilizzando AucTeX, si prende cura di ricostruire tutte le informazioni necessarie per richiamare xdvi con gli argomenti opportuni per consentire la ricerca in avanti anche in documenti strutturati su più file.
Detto così può sembrare leggermente complicato, ma si tratta solo di avere un minimo di dimestichezza con il concetto di modo di Emacs. Fammi sapere se occorrono ulteriori informazioni al riguardo. Giusto per avere un’indicazione: quando apri un file con estensione .tex emacs ti mostra la scritta (TeX) nella barra di stato (ovvero la linea nella zona bassa della finestra di emacs che riporta anche il titolo del file in editazione)?
2) per ovviare a eventuali problemi di mancato matching
Io sto usando entrambe le funzioni (ricerca in avanti e ricerca inversa) utilizzando i passi descritti nel messaggio del 29 maggio, e mi sembra funzionino alquanto bene, con una precisione di paragrafo. A cosa tendono dunque precisamente questi tuoi ulteriori sforzi? Forse ad ottenere addirittura una precisione di riga?
O forse riscontri qualche difetto, qualche malfunzionamento, che invece io finora non ho rilevato?Non si trattava di un tentativo teso a migliorare la precisione della ricerca in avanti (quello potrebbe rappresentare il passo successivo; per esso, tuttavia, è necessario modificare src(tex|ltx).sty, cosa che a mio avviso richiede un minimo di pianificazione): i miei ulteriori sforzi miravano all’individuazione di un modo per garantire il funzionamento della combinazione
=22.38], srctex.sty, xdvi-search.el> anche con documenti multifile, avendo constatato che xdvi 22.40k (ovvero quello reperibile nella Mandrake9.0) NON esegue il matching tra nomi di file senza path (come compaiono nel .dvi) e con path assoluto (come vengono prodotti da alcune versioni di xdvi-search.el, che andrebbero perciò modificate per lavorare correttamente con la 22.40k). In sostanza, ho dovuto fare un po’ di prove con diverse versioni di xdvi e xdvi-search, cercando di trarre vantaggio da quanto scrittomi da Stefan Ulrich; a complicare ulteriormente le cose è intervenuta anche la versione di teTeX utilizzata: quella che si trova nella Mandrake9.0 è la 1.0.7, che NON gestisce l’opzione -src nelle chiamate a (La)TeX. La versione di teTeX reperibile con Mandrake9.1, ovvero la 2.0.1, accetta quell’opzione.
Più in là sarà bene poi riassumere tutto quanto in un elenco dettagliato di istruzioni passo passo (sei d’accordo?), come io ho cercato di fare nel messaggio del 29 maggio.
Senz’ombra di dubbio; la mia idea attuale è di ripartire la descrizione in due casi principali, distinti per versione di xdvi utilizzata, così da poter raccomandare l’uso del xdvi-search.el più adatto.
Devo ancora sperimentare l’opzione -src. con teTeX 2.0.1: mi piacerebbe commentarne gli effetti nel resoconto.
D’altro canto fabusdra aveva riferito che qualcuno in guit stava preparando della documentazione; forse converrebbe raccordare gli sforzi.
A presto!
-
19 Giugno 2003 alle 9:32 #610::
In attesa di eventuali ulteriori apporti alla questione cerco di riassumere ciò che è acquisito finora,
che mi pare già moltissimo.
Riprendo pertanto il messaggio del 29 maggio con una piccola correzione e gli opportuni aggiornamenti
per eseguire la ricerca in avanti direttamente da Emacs.Ricerca inversa e in avanti per plain TeX e LaTeX,
con xdvi ed Emacs,
in Mandrake Linux 9.0.1)Hai controllato l’effettiva presenza di emacs? Riesci a lanciarlo? In quanto segue assumo di sì.
2)Usa emacs per modificare il file .emacs: digita
emacs ~/.emacs
dalla Shell di Linux.
3)Vai in fondo al file (potrebbe verosimilmente essere vuoto: nessun problema) e aggiungi le righe
(add-to-list ‘load-path (expand-file-name “~/lib/emacs”))
(require ‘xdvi-search)
(add-hook ‘LaTeX-mode-hook (lambda () (local-set-key “\C-x\C-j” ‘xdvi-jump-to-line)))
(add-hook ‘tex-mode-hook (lambda () (local-set-key “\C-x\C-j” ‘xdvi-jump-to-line)))
(server-start)
poi salva il file e esci da emacs.
4)Impartisci i comandi
mkdir -p ~/lib/emacs (invio)
e copia, nella directory ~/lib/emacs che hai appena creata, il file xdvi-search.el che troverai all’indirizzo
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/xdvi/xdvik/texk/xdvik/xdvi-search.el?rev=1.2.4.7
5)Apri il tuo file sorgente impartendo il comando
emacs ~/…/filename.tex (invio)
e aggiungi all’inizio del file il comando
\input /usr/share/texmf/tex/latex/srcltx/srctex.sty
se stai usando plain TeX, ovvero il comando
\usepackage[active]{srcltx}
se stai usando LaTeX, poi salva il file senza uscire da emacs.
6)Apri una nuova Console di Shell, col comando cd accedi alla directory che contiene i due file, quello sorgente e quello .dvi, e impartisci il comando
xdvi -editor “emacsclient –no-wait +%l %f” filename.dvi (invio).
7)Esegui prima la ricerca inversa: in un punto qualsiasi del file .dvi clicca Ctrl-mouse-1 e voilà: la ricerca inversa.
8)Ora la ricerca in avanti: in un punto qualsiasi del file sorgente batti
Ctrl-x Ctrl-j
e voilà: la ricerca in avanti.Ad Andrea, come sempre, eventuali correzioni e aggiunte.
Rodolfo
-
10 Settembre 2003 alle 16:37 #611::
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.
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.
Andrea, batti un colpo se ci sei; o chi per lui!
Saluti,
Rodolfo
-
12 Settembre 2003 alle 5:56 #612::
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!
-
12 Settembre 2003 alle 11:29 #613::
Caro Andrea,😀 a quanto pare il tuo insostituibile apporto riesce anche stavolta a cavarmi le castagne dal fuoco. Il problema sembra risolto aggiungendo in fondo al file le righe che tu suggerivi:
% Local Variables:
% mode: latex
% TeX-master: “Masterfile”
% End:
Per la verità io ci ero arrivato, a sospettare che la “colpa” fosse della variabile TeX-master male o non
affatto impostata (Kebekus vi fa cenno nell’help di kdvi quando spiega la ricerca in avanti), e quelle
righe alla fine del file le avevo scritte, omettendo però la voce `mode’ o altre volte
scrivendo `mode: plain TeX ‘; ma in realtà, dopo aver aggiunto quelle
righe io ho scoperto che devo chiudere il file e poi riaprirlo. Infatti, digitando `C-h v’ da emacs puoi
controllare lo stato della variabile, e la tua impostazione viene recepita solo dopo aver chiuso e poi
riaperto il file. Almeno, questo è quello che succede a me.
Il file in questione non era parte di un progetto multifile, era un file singolo, e quindi dovremmo
concludere che quelle righe sono sempre necessarie. Io adesso come Masterfile ho scritto il path completo:
%TeX-master: “~/subdirectory/filename.tex”
e la cosa sembra funzionare.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.
8) Io la versione 9.1 di Mandrake ce l’ho, conservata in un cassetto. Quando in futuro decidessi di
installarla, posso chiederti qual’è e dove è possibile scaricare la corrispondente versione di xdvi-search?
O forse è già contenuta in Mdk9.1?Se ev, fabusdra e gli altri dello staff sono d’accordo, vorrei aggiornare con queste ultime specificazioni il messaggio finale dell’altro thread (`Ricerca avanzata con plain TeX’), cosicché il “riassunto” del presente thread sia incorporato nel thread precedente. Anzi, forse la cosa migliore sarebbe quella di cancellare questo thread e incorporare i messaggi in esso presenti nel vecchio thread: così chi volesse documentarsi sull’argomento troverebbe tutto quanto in un sol posto. Ammetto che forse è stata un’ingenuità da parte mia creare un nuovo thread sullo stesso argomento, ma al momento non ci avevo badato.
Grazie di cuore, ad Andrea in particolare e a tutto il Forum.
Saluti,
Rodolfo
-
13 Settembre 2003 alle 6:47 #614::
Ciao Rodolfo,quelle righe alla fine del file le avevo scritte, omettendo però la voce `mode’ o altre volte scrivendo `mode: plain TeX ‘; ma in realtà, dopo aver aggiunto quelle righe io ho scoperto che devo chiudere il file e poi riaprirlo. Infatti, digitando `C-h v’ da emacs puoi controllare lo stato della variabile, e la tua impostazione viene recepita solo dopo aver chiuso e poi
riaperto il file. Almeno, questo è quello che succede a me.Il comportamento che hai rilevato è normale: (X)emacs interpreta il contenuto delle local line solo all’apertura del file. se non vuoi assegnare la variabile a mano per la sessione di editing in corso, ammesso che tu abbia già salvato il file, puoi rieseguire l’interpretazione delle local line eseguendo il comando
C-x revert-buffer
rispondendo “yes” alla richiesta di conferma.
Nota: revert-buffer riapre in editazione la versione su disco; se non si salva il file prima di eseguire revert-file si perdono tutte le modifiche effettuate dopo l’ultimo salvataggio.
Il file in questione non era parte di un progetto multifile, era un file singolo, e quindi dovremmo concludere che quelle righe sono sempre necessarie. Io adesso come Masterfile ho scritto il path completo:
%TeX-master: “~/subdirectory/filename.tex”
e la cosa sembra funzionare.Curioso, non dovrebbe essere necessario: per caso, in assenza delle local line, ottieni un messaggio tipo
“Wrong type argument: stringp, nil” ?
Il comportamento di xdvi-search dovrebbe essere controllato dalla variabile TeX-master che, se posta a nil dovrebbe causarti l’errore sopra riportato, altrimenti dovrebbe farti apparire nel minibuffer la richiesta d’identificazione del master file, offrendoti la possibilità di salvare quell’informazione per te nel file che stai editando.
Mh, potrebbe dipendere dalla copia di xdvi-search che stai utilizzando, forse.
La mia è una leggera modifica a quella che era scaricabile al 10 di giugno scorso.
Bene, un altro elemento del quale tenere conto nel documento riassuntivo.
8) Io la versione 9.1 di Mandrake ce l’ho, conservata in un cassetto. Quando in futuro decidessi di
installarla, posso chiederti qual’è e dove è possibile scaricare la corrispondente versione di xdvi-search?
O forse è già contenuta in Mdk9.1?Ahia, ho appena scoperto di aver perso tutte le mail che avevo scambiato con Stefan Ulrich in merito all’uso di xdvi-search 🙁
Da una rapida ricerca ho ripescato
http://xdvi.sourceforge.net/inverse-search.html
come sito di partenza per xdvi-search (contiene la procedura di setup in inglese). Incidentalmente, proprio a quell’indirizzo, ho scoperto che esiste una traduzione in italiano della procedura di impostazione per l’uso di xdvi search con emacs, Xemacs, vim 6.0 o un editor generico scritta da Ulrich. La traduzione è di Onofrio de Bari, reperibile all’URL
http://www.linux.it/~ondeb/inverse-search_it.html
Ciao!
-
14 Settembre 2003 alle 21:12 #615::
Alla luce delle ultime precisazioni, ecco aggiornata la procedura per la ricerca inversa e in avanti.😯 Ricerca inversa e in avanti per plain TeX e LaTeX,
con xdvi ed Emacs,
in Mandrake Linux 9.0.0)Hai controllato l’effettiva presenza di emacs? Riesci a lanciarlo? In quanto segue assumo di sì.
1)Usa emacs per modificare il file .emacs: digitaemacs ~/.emacs
dalla Shell di Linux.
2)Vai in fondo al file (potrebbe verosimilmente essere vuoto: nessun problema) e aggiungi le righe(add-to-list ‘load-path (expand-file-name “~/lib/emacs”))
(require ‘xdvi-search)
(add-hook ‘LaTeX-mode-hook (lambda () (local-set-key “\C-x\C-j” ‘xdvi-jump-to-line)))
(add-hook ‘tex-mode-hook (lambda () (local-set-key “\C-x\C-j” ‘xdvi-jump-to-line)))
(server-start)lasciando vuota l’ultima riga del file, poi salva il file e esci da emacs.
3)Dalla Shell di Linux impartisci i comandimkdir -p ~/lib/emacs (invio)
e copia, nella directory ~/lib/emacs che hai appena creata, il file xdvi-search.el che troverai
all’indirizzo
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/xdvi/xdvik/texk/xdvik/xdvi-search.el?rev=1.2.4.7
4)Apri il tuo file sorgente impartendo, sempre dalla Shell di Linux, il comandoemacs ~/…/filename.tex (invio)
(i puntini sospensivi qui stanno a indicare la porzione del path che viene dopo /home/tizio/)
e inserisci all’inizio del file il comando\input /usr/share/texmf/tex/latex/srcltx/srctex.sty
se stai usando plain TeX, ovvero il comando
\usepackage[active]{srcltx}
se stai usando LaTeX. Inoltre, se stai usando plain TeX e se il tuo file sorgente \`e un file
“principale” che include altri file, al posto di \inputdevi dire \Input{ },
con la I maiuscola e le parentesi graffe.
Aggiungi poi in fondo al file le righe%%% Local Variables:
%%% mode: latex
%%% TeX-master: “~/…/filename.tex”
%%% End:quindi salva il file, chiudilo e poi riaprilo.
5)Apri una nuova Console di Shell, col comando cd accedi alla directory che contiene i due file, quello
sorgente e quello .dvi, e impartisci il comandoxdvi -editor “emacsclient –no-wait +%l %f” filename.dvi (invio).
6)Esegui prima la ricerca inversa: in un punto qualsiasi del file .dvi clicca Ctrl-mouse-1 e voilà:
la ricerca inversa.
7)Ora la ricerca in avanti: in un punto qualsiasi del file sorgente batti
Ctrl-x Ctrl-j
e voilà: la ricerca in avanti.Saluti,
Rodolfo
-
18 Settembre 2003 alle 21:08 #616::
Per la verità io ci ero arrivato, a sospettare che la “colpa” fosse della variabile TeX-master male o non affatto impostata
Il file in questione non era parte di un progetto multifile, era un file singolo
Curioso
Caro Andrea,
facendo ulteriori semplici prove ho scoperto che in realt\`a l’impostazione della variabile TeX-master non c’entrava per niente: quella, come dici tu, \`e importante quando si ha a che fare con un progetto multifile, mentre il mio era un file singolo. La “colpa” del mancato funzionamento della ricerca in avanti nel mio messaggio del 10 sett era dovuta a un errore di sintassi nel file .emacs:
la parola `tex’ va scritta con la T maiuscola, la e minuscola e la X maiuscola: TeX.
Alla luce di queste nuove considerazioni aggiorno per l’ennesima volta il resoconto.Ricerca inversa e in avanti per plain TeX e LaTeX,
con xdvi ed Emacs,
in Mandrake Linux 9.0.0)Sul tuo PC installa emacs e auctex mediante il comando `urpmi’ dalla console di root.
1)Usa emacs per modificare il file .emacs: digita
emacs ~/.emacs
dalla Shell di Linux.
2)Vai in fondo al file (potrebbe verosimilmente essere vuoto: nessun problema) e aggiungi le righe
(add-to-list ‘load-path (expand-file-name “~/lib/emacs”))
(require ‘xdvi-search)
(add-hook ‘LaTeX-mode-hook (lambda () (local-set-key “\C-x\C-j” ‘xdvi-jump-to-line)))
(add-hook ‘TeX-mode-hook (lambda () (local-set-key “\C-x\C-j” ‘xdvi-jump-to-line)))
(server-start)
lasciando vuota l’ultima riga del file, poi salva il file e esci da emacs.
3)Dalla Shell di Linux impartisci i comandi
mkdir -p ~/lib/emacs (invio)
e copia, nella directory ~/lib/emacs che hai appena creata, il file xdvi-search.el che troverai all’indirizzo
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/xdvi/xdvik/texk/xdvik/xdvi-search.el?rev=1.2.4.7
4)Apri il tuo file sorgente, diciamolo myfile.tex, impartendo, sempre dalla Shell di Linux, il comando
emacs ~/…/myfile.tex (invio)
(i puntini sospensivi qui stanno a indicare la porzione del path che viene dopo /home/tizio/) e inserisci all’inizio del file il comando
\input /usr/share/texmf/tex/latex/srcltx/srctex.sty
se stai usando plain TeX, ovvero il comando
\usepackage[active]{srcltx}
se stai usando LaTeX.
Se myfile.tex è un file `principale’ che include altri file sorgente secondari’,
4a)nel caso tu stia usando plain TeX, al posto di \inputdevi dire \Input{ }, con la I maiuscola e le parentesi graffe;
4b)procura di mettere tutti i file (sia quello principale sia quelli secondari, e sia anche quello di output, cio\`e il file .dvi) in una stessa directory;
4c)sia che tu stia usando plain TeX sia che tu stia usando LaTeX, aggiungi in fondo a ogni file ‘secondario’ le righe
%%% Local Variables:
%%% TeX-master: “~/…/myfile.tex”
%%% End:
5)Salva tutti i file, chiudili e poi riaprili.
6)Apri una nuova Console di Shell, col comando cd accedi alla directory che contiene i file, e impartisci il comando
xdvi -editor “emacsclient –no-wait +%l %f” myfile.dvi (invio).
7)Esegui prima la ricerca inversa: in un punto qualsiasi del file .dvi clicca Ctrl-mouse-1 e voilà: la ricerca inversa.
8)Ora la ricerca in avanti: in un punto qualsiasi del file sorgente batti
Ctrl-x Ctrl-j
e voilà: la ricerca in avanti.…uff! Che faticata! Assomiglia sempre pi\`u a un trattato.
Saluti a tutto il Forum,
Rodolfo
-
20 Settembre 2003 alle 6:36 #617::
Ciao Rodolfo,Caro Andrea,
facendo ulteriori semplici prove ho scoperto che in realt\`a l’impostazione della variabile TeX-master non c’entrava per niente: quella, come dici tu, \`e importante quando si ha a che fare con un progetto multifile, mentre il mio era un file singolo. La “colpa” del mancato funzionamento della ricerca in avanti nel mio messaggio del 10 sett era dovuta a un errore di sintassi nel file .emacs:
la parola `tex’ va scritta con la T maiuscola, la e minuscola e la X maiuscola: TeX.Hmm, ancora più curioso:
1) L’xdvi-search.el in mio possesso, cioè quello scaricato dalla pagina di Ulrich e pensato per funzionare con versioni di xdvi dalla 22.40 in poi, cita testualmente nel commento introduttivo
(linee 42-52);;;; You could also bind this command to a key, e.g. by adding
;;; a binding to tex-mode-hook:
;;;
;; (add-hook ‘tex-mode-hook (lambda ()
;;; (local-set-key “\C-c\C-j” ‘xdvi-jump-to-line)))
;;;
;;; (without AucTeX; use LaTeX-mode-hook instead of tex-mode-hook with AucTeX.
;;; Note that with AucTeX, C-c C-j is already bound to LaTeX-insert-item, so
;;; you might want to use a different key combination instead.)2) Se io, nel mio .emacs, pongo TeX-mode-hook al posto di tex-mode-hook, la ricerca in avanti non funziona più.
3) Ho controllato il tex-mode.el dell’installazione di Mdk9.1: il modo definito è tex-mode, e TeX-mode risulta essere un alias di quello, latex-mode è derivato da text-mode e contiene alcuni pezzi in condiivisione con tex-mode, e infine LaTeX-mode è un alias di latex-mode.
Mh. Provo a ipotizzare: non è che, per caso, in alcune delle prove che hai effettuato hai ridefinito al volo il modo maggiore del file in corso di editazione? Questo ha effetto sulla definizione della variabile TeX-master, assegnandole valore nil, il che porta, alla prima esecuzione di una ricerca in avanti, all’errore
let*: Wrong type argument: stringp, nil
(Lo vedi così nel buffer *Messages*, nel minibuffer lo vedi, solo temporaneamente, come
Wrong type argument: stringp, nil)
Fammi sapere.
Ciao!
-
21 Settembre 2003 alle 15:45 #618::
Se io, nel mio .emacs, pongo TeX-mode-hook al posto di tex-mode-hook, la ricerca in avanti non funziona più.
Caro Andrea,
1)tieni presente che io sto ancora usando Mandrake Linux 9.0 con quella versione del file xdvi-search.el scaricata all’indirizzo internet che tu stesso avevi suggerito, quindi la discrepanza tra le nostre osservazioni potrebbe dipendere da questo.
2)No, non mi sembra di aver mai avuto da Emacs un messaggio di errore comeWrong type argument: stringp, nil
anche se non vorrei giurarci poiché non sono esperto di Emacs e potrebbe essermi sfuggito.
3)Cerco di spiegarti perché a me le cose sembrano tornare perfettamente. Come certamente saprai, quando in Emacs stai editando un documento con estensione tex, diciamolo myfile.tex, Emacs valuta il contenuto del file e azzarda un’ipotesi sul fatto che l’utente stia lavorando in plain TeX oppure in LaTeX. Per esempio, se il documento inzia con \begin{document} e termina con \end{document}, Emacs sar\`a portato a `pensare’ che quasi certamente l’utente sta adoperando LaTeX; altrimenti assumerà che stia adoperando plain TeX. Nel primo caso, sulla riga grigia orizzontale in basso comparirà la scritta `(LaTeX)’, nel secondo caso la scritta `(TeX)’, con la T e la X maiuscola. Questo se non erro corrisponde a una variabile detta tex-mode, il cui valore pu\`o anche essere impostato in modo antidemocratico (cioè autoritario) dall’utente aggiungendo in fondo al file le righe
%%% Local Variables:
%%% mode: plain-TeX
%%% End:
se si tratta di plain TeX, ovvero
%%% Local Variables:
%%% mode: latex
%%% End:
se si tratta di LaTeX (e qui non credo che abbiano molta importanza le maiuscole).
Ora, il mio problema era che la ricerca in avanti falliva in tutti i file tranne uno. Quell’uno era l’unico in cui sulla riga grigia orizzontale in basso compariva la scritta `(LaTeX)’, mentre in tutti gli altri compariva la scritta `(TeX)’. Infatti, io uso plain TeX ma in quel file adopero dei comandi come \paragraph e \subparagraph che inducevano Emacs a `credere’ che io stessi adoperando LaTeX. Con questo file la ricerca in avanti funzionava poiché nel file .emacs il modo LaTeX era bene impostato. Quando dietro tuo suggerimento ho aggiunto in fondo agli altri file le righe
% Local Variables:
% mode: latex
% TeX-master: “Masterfile”
% End:
la ricerca in avanti ha funzionato non per l’impostazione della variabile TeX-master (si trattave di file singoli, per i quali Emacs assume di default la variabile TeX-master uguale al file stesso), ma perché la riga
%mode: latex
ha costretto Emacs a `credere’ che questi file fossero compilati usando LaTeX. Poi, una volta sostituite la T e la X maiuscole alle minuscole nella parola tex all’interno del file .emacs, non c’è stato più bisogno di aggiungere quelle righe e la ricerca in avanti ha funzionato normalmente in tutti i file, anche quelli in modo TeX.Non sono assolutamente certo che questa sia la spiegazione giusta, ma mi pare che le cose messe in questo modo spieghino tutto, e, quel che più conta, mi fanno funzionare la ricerca inversa e in avanti. Potrebbe darsi, ripeto, che con Mandrake 9.1 e una diversa versione del file xdvi-search.el si debba rimettere tutto in discussione (non sia mai! Allora mi tengo il 9.0 per i prossimi cinquant’anni!).
Fammi sapere cosa ne pensi.Ciao, ottime cose
Rodolfo
-
10 Luglio 2004 alle 13:43 #619::
😀 Quest’ultimo aggiornamento dà conto delle ulteriori modifiche suggerite da Andrea e migliora molto il meccanismo.Ricerca inversa e in avanti per plain TeX e LaTeX,
con xdvi ed Emacs,
in Mandrake Linux 9.1.1. Sul tuo PC installa emacs e auctex mediante il comando `urpmi’ dalla console di root.
2. Usa emacs per modificare il file .emacs: digita
emacs ~/.emacs
dalla Shell di Linux.
3. Vai in fondo al file (potrebbe verosimilmente essere vuoto: nessun problema) e aggiungi le righe
(add-to-list ‘load-path (expand-file-name “~/lib/emacs”))
(require ‘xdvi-search)
(add-hook ‘LaTeX-mode-hook (lambda () (local-set-key “\C-x\C-j” ‘xdvi-jump-to-line)))
(add-hook ‘TeX-mode-hook (lambda () (local-set-key “\C-x\C-j” ‘xdvi-jump-to-line)))
(server-start)
lasciando vuota l’ultima riga del file, poi salva il file e esci da emacs.
4. Dalla Shell di Linux impartisci i comandi
mkdir -p ~/lib/emacs (invio)
e copia, nella directory ~/lib/emacs che hai appena creata, il file xdvi-search_andrea.el che potrò spedirti io stesso dietro tua richiesta, ovvero si potrebbe mettere tra i downloads di Guit.
5. Crea un link simbolico col file xdvi-search_andrea.el: impartisci il comando
ln -s xdvi-search_andrea.el xdvi-search.el
Il comando ln -s crea un collegamento tra file, così che a uno stesso file possano corrispondere nomi diversi.
6. Nel caso tu sia interessato ad impostare le opzioni -hl, -sidemargin e -topmargin di xdvi, vai alla riga 209 del file xdvi-search_andrea.el, che è
” -editor ‘emacsclient +\%l \%f’ ”
e modificala in (per esempio)
” -editor ‘emacsclient +\%l \%f’ -hl brown -sidemargin 5 -topmargin 3 ”
7. Rilancia emacs in modo che legga il file xdvi-search_andrea.el, poi richiudilo.
8. Apri il tuo file sorgente, diciamolo myfile.tex, impartendo, sempre dalla Shell di Linux, il comando
emacs ~/…/myfile.tex (invio)
(i puntini sospensivi qui stanno a indicare la porzione del path che viene dopo /home/tizio/) e inserisci all’inizio del file il comando
\input /usr/share/texmf/tex/latex/srcltx/srctex.sty
se stai usando plain TeX, ovvero il comando
\usepackage[active]{srcltx}
se stai usando LaTeX.
9. Se myfile.tex è un file `principale’ che include altri file sorgente secondari’,
9a. nel caso tu stia usando plain TeX, al posto di \inputdevi dire \Input{ }, con la I maiuscola e le parentesi graffe;
9b. procura di mettere tutti i file (sia quello principale sia quelli secondari, e sia anche quello di output, cio\`e il file .dvi) in una stessa directory;
9c. sia che tu stia usando plain TeX sia che tu stia usando LaTeX, aggiungi in fondo a ogni file ‘secondario’ le righe
%%% Local Variables:
%%% TeX-master: “~/…/myfile.tex”
%%% End:
9d. Salva tutti i file, chiudili e poi riaprili.
10. Esegui la ricerca in avanti: : in un punto qualsiasi del file sorgente batti
Ctrl-x Ctrl-j
e voilà: la ricerca in avanti.
11. Ora la ricerca inversa: in un punto qualsiasi del file .dvi clicca Ctrl-mouse1 e voilà: la ricerca inversa.Ciao a tutti,
Rodolfo
-
31 Luglio 2004 alle 9:09 #620::
Io veramente prima d’ora non avevo ancora sperimentato le due ricerche nel caso di un progetto multifile,
cioè nel caso di un file principale, chiamiamolo ‘masterfile.tex’, che includa altri file secondari, diciamoli file1.tex, file2.tex eccetera.
🙁 Ebbene, sperimentandole per la prima volta mi sono accorto che non funzionano.
O meglio, la ricerca inversa va ancora bene; ma il tentativo di far partire quella in avanti,
diciamo da file1.tex,
produce da parte di Emacs il messaggio:File file1.dvi does not exist; you have to run latex first!
Eppure ho seguito alla lettera tutti i passi descritti nell’ultimo messaggio del 10 luglio.
Qui ci vorrebbe Andrea, che però sembra sparito!
C’è qualcuno che ha già sperimentato la cosa, con cui potermi confrontare?Rodolfo
-
31 Luglio 2004 alle 14:13 #621::
A me funziona la ricerca in tutte e due le direzioni anche nel caso in cui il documento sia diviso in più documenti LaTeX diversi.Non so per quale motivo a te non funzioni, ti posso dire che io nel file principale includo gli altri con il comando
`\include{primofile}
`
e ogni file secondario (quindi ad esempio primofile.tex) deve contenere le linee
`%%% Local Variables:
%%% mode: latex
%%% TeX-master: “principale”
%%% End:
`
se principale.tex è il nome del file principale.Il mio file ~/.emacs è uguale a quello consigliato il 10 luglio tranne per il fatto che utilizzo kdvi al posto di xdvi 😉
-
31 Luglio 2004 alle 22:38 #622::
😀 Grazie!
Vedendoti così sicuro mi sono messo a fare ulteriori prove,
prima con LaTeX e kdvi e poi di nuovo con TeX e xdvi,
e ho scoperto che il mio errore era che quando includevo il file secondario nel file principale
scrivevo il path completo. Io facevo così:
`\Input{/home/rodolfo/…/file1.tex}`
mentre avrei dovuto fare così:
`\Input{file1}`
In realtà, il path completo volendo si può anche usare, ma allora nel file .emacs invece che
`xdvi-jump-to-line`
bisogna scrivere
`xdvi-jump-to-line-fullpath`
Anche questa è una bella scoperta, che però mi ha fatto impazzire un po’ di giorni.
Resta ancora una questione col file xdvi-search.el.
Quello in mio posesso è una versione dell’anno scorso, leggermente modificata da Andrea
per poter far partire la ricerca in avanti direttamente da Emacs.
Se al suo posto cerco di usare l’xdvi-search.el contenuto nell’ultima distribuzione di xdvik
(o una delle ultime), la 22.84.1, quella che ho appena installato, la ricerca inversa non funziona più.
Spero che presto risolveremo anche questa faccenda.
Nel frattempo, per evitare ad altri di impazzire un po’ di giorni,
aggiorno per l’ennesima volta il resoconto, che ormai è il frutto di un lavoro collettivo.😯 Ricerca inversa e in avanti per plain TeX e LaTeX,
con xdvi ed Emacs,
in Mandrake Linux 9.1.1. Sul tuo PC installa emacs e auctex mediante il comando `urpmi’ dalla console di root.
2. Usa emacs per modificare il file .emacs: digita
`emacs ~/.emacs`
dalla Shell di Linux.
3. Vai in fondo al file (potrebbe verosimilmente essere vuoto: nessun problema) e aggiungi le righe
`(add-to-list 'load-path (expand-file-name “~/lib/emacs”))
(require 'xdvi-search)
(add-hook 'LaTeX-mode-hook (lambda () (local-set-key “\C-x\C-j” 'xdvi-jump-to-line-fullpath)))
(add-hook 'TeX-mode-hook (lambda () (local-set-key “\C-x\C-j” 'xdvi-jump-to-line-fullpath)))
(server-start)`
lasciando vuota l’ultima riga del file, poi salva il file e esci da emacs.
4. Dalla Shell di Linux impartisci i comandi
`mkdir -p ~/lib/emacs (invio)`
e copia, nella directory ~/lib/emacs che hai appena creata, il file xdvi-search_andrea.el che potrò spedirti io stesso dietro tua richiesta, ovvero si potrebbe mettere tra i downloads di Guit.
5. Crea un link simbolico col file xdvi-search_andrea.el: impartisci il comando
`ln -s xdvi-search_andrea.el xdvi-search.el`
Il comando ln -s crea un collegamento tra file, così che a uno stesso file possano corrispondere nomi diversi.
6. Nel caso tu sia interessato ad impostare le opzioni -hl, -sidemargin e -topmargin di xdvi, vai alla riga 209 del file xdvi-search_andrea.el, che è
`” -editor 'emacsclient +\%l \%f' “`
e modificala in (per esempio)
`” -editor 'emacsclient +\%l \%f' -hl brown -sidemargin 5 -topmargin 3 “`
7. Rilancia emacs in modo che legga il file xdvi-search_andrea.el, poi richiudilo.
8. Apri il tuo file sorgente, diciamolo myfile.tex, impartendo, sempre dalla Shell di Linux, il comando
`emacs ~/…/myfile.tex (invio)`
(i puntini sospensivi qui stanno a indicare la porzione del path che viene dopo /home/tizio/) e inserisci all’inizio del file il comando
`\input /usr/share/texmf/tex/latex/srcltx/srctex.sty`
se stai usando plain TeX, ovvero il comando
`\usepackage[active]{srcltx} `
se stai usando LaTeX.
9. Se myfile.tex è un file `principale’ che include altri file sorgente secondari’,
9a. nel caso tu stia usando plain TeX, al posto di
`\input` devi dire
`\Input{}`
, con la I maiuscola e le parentesi graffe;
9b. per sicurezza, procura di mettere tutti i file (sia quello principale sia quelli secondari, e sia anche quello di output, cio\`e il file .dvi) in una stessa directory,
ma può anche darsi che ciò non sia necessario se in ogni \Input{} scrivi il path completo;
9c. sia che tu stia usando plain TeX sia che tu stia usando LaTeX, aggiungi in fondo a ogni file ‘secondario’ le righe
`%%% Local Variables:
%%% TeX-master: “~/…/myfile.tex”
%%% End:`
9d. Salva tutti i file, chiudili e poi riaprili.
10. Esegui la ricerca in avanti: in un punto qualsiasi del file sorgente batti
Ctrl-x Ctrl-j
e voilà: la ricerca in avanti.
11. Ora la ricerca inversa: in un punto qualsiasi del file .dvi clicca Ctrl-mouse1 e voilà: la ricerca inversa.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.