ricerca avanzata con plain TeX

  • Creatore
    Topic
  • #585
    Up
    0
    Down
    ::


    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

Visualizzazione 36 filoni di risposte
  • Autore
    Risposte
    • #586
      ev
      Partecipante
        Up
        0
        Down
        ::


        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?

      • #587
        Up
        0
        Down
        ::


        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

      • #588
        ev
        Partecipante
          Up
          0
          Down
          ::

          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).

        • #589
          Up
          0
          Down
          ::


          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.

        • #590
          Up
          0
          Down
          ::


          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

        • #591
          admin
          Amministratore del forum
            Up
            0
            Down
            ::


            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 significative

            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)

            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?

          • #592
            Up
            0
            Down
            ::


            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!

          • #593
            Up
            0
            Down
            ::


            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

          • #594
            Up
            0
            Down
            ::


            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]

          • #595
            Up
            0
            Down
            ::


            Caro Andrea,

            la tua quarta domanda non mi è chiara: cos’è xterm?
            Ora purtroppo devo uscire
            e non ho tempo di controllare per bene quanto dici nella prima domanda.
            Risposta affermativa per la seconda e la terza.

            A presto,
            Rodolfo

          • #596
            Up
            0
            Down
            ::


            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.

          • #597
            Up
            0
            Down
            ::


            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

          • #598
            Up
            0
            Down
            ::


            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,

          • #599
            Up
            0
            Down
            ::


            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

          • #600
            Up
            0
            Down
            ::


            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

          • #601
            Up
            0
            Down
            ::


            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.sty

            2) 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!

          • #602
            Up
            0
            Down
            ::


            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

          • #603
            Up
            0
            Down
            ::


            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,
            Rodolfo

            Ora devo scappare, aggiornerò la lista di passi in un messaggio successivo.

            Ciao,

            Andrea.

          • #604
            Up
            0
            Down
            ::


            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!

          • #605
            Up
            0
            Down
            ::


            😀 Grande Andrea!

          • #606
            Up
            0
            Down
            ::


            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

          • #607
            Up
            0
            Down
            ::


            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/test

            le 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.

          • #608
            Up
            0
            Down
            ::


            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

          • #609
            Up
            0
            Down
            ::


            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!

          • #610
            Up
            0
            Down
            ::


            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

          • #611
            Up
            0
            Down
            ::


            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

          • #612
            Up
            0
            Down
            ::


            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!

          • #613
            Up
            0
            Down
            ::


            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

          • #614
            Up
            0
            Down
            ::


            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!

          • #615
            Up
            0
            Down
            ::


            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: 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 impartendo, sempre dalla Shell di Linux, il comando

            emacs ~/…/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 \input devi 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 comando

            xdvi -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

          • #616
            Up
            0
            Down
            ::

            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 \input devi 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

          • #617
            Up
            0
            Down
            ::


            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!

          • #618
            Up
            0
            Down
            ::

            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 come

            Wrong 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

          • #619
            Up
            0
            Down
            ::


            😀 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 \input devi 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

          • #620
            Up
            0
            Down
            ::


            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

          • #621
            Up
            0
            Down
            ::


            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 😉

          • #622
            Up
            0
            Down
            ::


            😀 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.

        Visualizzazione 36 filoni di risposte
        • Devi essere connesso per rispondere a questo topic.

        Go to top