Hyperlink tra due diversi file

  • Creatore
    Topic
  • #3580
    Up
    0
    Down
    ::


    Ciao a tutti.
    Questo argomento ha a che fare, credo, col precedente topic “Hyperref: \hyperbaseurl, link locali e altri problemi”.

    Io uso plain TeX, e sul mio PC ho Mandrake Linux 9.1.
    Per creare i collegamenti ipertestuali (gli hyperlink)
    includo nel mio file sorgente, diciamolo myfile.tex, il file hyperbasics.tex mediante il comando \input:
    \input hyperbasics.tex.
    Poi in un certo punto del myfile.tex scrivo, ad esempio,
    \hyperdef\mysymbol{label}{}{}
    e poi, in un altro punto,
    \hyperref{}{label}{}{Voila!},
    ottenendo così un ottimo hyperlink che funziona perfettamente.
    Ora, vorrei fare la stessa cosa tra due file .dvi differenti,
    diciamo file1.tex e file2.tex i loro file sorgenti.
    Nel file1.tex scrivo
    \hyperdef\mysymbol{label}{}{}
    e nel file2.tex
    \hyperref{file1.dvi}{label}{}{Voila!}.
    Quindi apro i due file dvi: file1.dvi e file2.dvi mediante il programma xdvi, ma quando clicco sulla parola ‘Voila!’ nel file2.dvi,
    invece di scattare l’hyperlink appare il messaggio
    Error: reference “file1.dvi#label.” not found
    🙁 Perché, e come fare?
    Credo proprio che questo problema sia di pertinenza di Andrea.
    Andrea, se ci sei batti un colpo, qui ci serve ancora il tuo aiuto!
    Oppure c’è qualcun altro in grado di dare suggerimenti?
    Aspetto speranzoso una risposta.

    Ciao a tutti,
    Rodolfo

Visualizzazione 9 filoni di risposte
  • Autore
    Risposte
    • #3581
      Up
      0
      Down
      ::


      Probabilmente il problema è nella mia versione di xdvi, che è la xdvik 22.40.
      Ho scaricato la versione 22.78 da CTAN, più recente, ma la procedura di installazione descritta sul sito ufficiale di xdvik per me è troppo complicata, non ci capisco un’acca. 😯 Qualcuno può aiutarmi in tal senso?

      Rodolfo

    • #3582
      Up
      0
      Down
      ::

      Probabilmente il problema è nella mia versione di xdvi, che è la xdvik 22.40.
      Ho scaricato la versione 22.78 da CTAN, più recente, ma la procedura di installazione descritta sul sito ufficiale di xdvik per me è troppo complicata, non ci capisco un’acca. 😯 Qualcuno può aiutarmi in tal senso?
      Rodolfo

      Complicata?`tar zxf xdvik-22.78.tar.gz
      cd xdvik
      ./configure
      make
      sudo make install`Dipende ovviamente dal tuo sistema operativo; se è GNU/Linux o un altro genere di *nix, al massimo devi scaricarti le librerie richieste.
      Ciao
      Enrico

    • #3583
      Up
      0
      Down
      ::


      Ai comandi

      tar zxf xdvik-22.78.tar.gz
      cd xdvik
      ./configure

      ottengo la risposta

      creating cache ./config.cache
      checking whether make sets ${MAKE}… yes
      checking for gcc… no
      checking for cc… no
      configure: error: no acceptable cc found in $PATH

      (Il comando

      echo $PATH

      ottiene invece la risposta

      /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games:/home/rodolfo/bin)

      🙁 Cosa devo fare?
      Rodolfo

    • #3584
      Up
      0
      Down
      ::


      Segui questi passi:`whereis gcc`
      Ti risponderà con una riga del tipo:`gcc: /usr/bin/gcc`

      Prendi la seconda parte del messaggio, ecludendo il nome dell’eseguibile (gcc) e scrivi:`export PATH=$PATH:/usr/bin`

      Questo naturalmente appena prima di cominciare il ./configure.

      Poi, dovrebbe tutto andare a posto. Spero di essere stato chiaro a sufficienza.

      Ciao, facci sapere.

    • #3585
      Up
      0
      Down
      ::


      😯 La situazione appare seria: ecco cosa mi risponde quando digito ‘whereis gcc’:

      [rodolfo@localhost rodolfo]$ whereis gcc
      gcc:
      [rodolfo@localhost rodolfo]$

      😕 Sono un po’ preoccupato. E ora?
      Rodolfo

    • #3586
      Up
      0
      Down
      ::


      Si, fossi in te sarei preoccupato; non avere un compilatore C su una distribuzione GNU/Linux è molto male… e mi sembra effettivamente molto strano…
      Per controllare se effettivamente possiedi gcc, prova a visualizzare la sua manpage:`man gcc`Se non ti viene risposta una pagina di help, allora probabilmente devi installare gcc (e mi sembra molto strano che non ci sia, credo tu possa trovarlo sui CD della Mandrake).
      Nel caso in cui invece venga visualizzata la pagina, allora gcc c’è. Basta trovare dove è; prova con locate, che risponde cercando le occorrenze del nome del file che gli viene fornito sulla riga di comando in un database di sistema, come in questo caso:`$ locate pdflatex
      /usr/bin/pdflatex
      /usr/share/man/man1/pdflatex.1.gz
      /usr/share/texmf/web2c/pdflatex.fmt
      /usr/share/texmf/web2c/pdflatex.log
      /usr/share/texmf/pdftex/latex/config/pdflatex.ini`Le risposte saranno molte, valutale tutte finché non trovi un binario che è proprio il compilatore; puoi vedere il tipo di file con il comando file, come in questo esempio:`$ file /usr/bin/gcc
      /usr/bin/gcc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.4.1, dynamically linked (uses shared libs), stripped`.

      Una volta trovato il percorso completo per gcc, utilizza il percorso come spiegato prima.

      Facci sapere.

    • #3587
      Up
      0
      Down
      ::


      Ciao a tutti.

      Mediante il comando ‘urpmi’ ho installato gcc, presente sui CD della Mandrake,
      quindi ho impartito i comandi

      tar zxf xdvik-22.78.tar.gz
      cd xdvik
      ./configure
      make

      e poi, in qualità di root, il comando

      make install

      come più o meno, credo, Enrico suggeriva, e apparentemente tutto è andato liscio, senza messaggi di errore.
      Ma poi quando apro un file .dvi la versione è sempre quella vecchia, la 22.40.
      Quindi l’installazione non ha avuto luogo! 😥

      🙄 Qualche altro suggerimento?

      Rodolfo

    • #3588
      Up
      0
      Down
      ::

      Ma poi quando apro un file .dvi la versione è sempre quella vecchia, la 22.40.

      Come apri il file? Da interfaccia grafica (cliccando sull’icona del file in konqueror) oppure lanciandolo da console? Nel primo caso, devi spiegare al tuo Desktop Manager quale è il programma predefinito per aprire i .dvi.

      Ho installato anche io la versione 22.84.1 per provare come funzionava (e devo dire meglio dell’xdvi che ho sempre conosciuto) ed effettivamente ho visto che l’installazione non è propriamente ‘standard’… Lanciando la procedura standard, mi sono trovato gli eseguibili installati in /usr/local/bin/i686-pc-linux-gnu/ (per te sarà diverso, l’ultima sottocartella dovrebbe avere lo stesso nome dell’”host” identificato da configure). Visto che il nome degli eseguibili esisteva già, per non creare conflitti li ho linkati nella cartella /usr/local/bin/ con nomi diversi:`# cd /usr/local/bin
      # ln -s /usr/local/bin/i686-pc-linux-gnu/xdvi xdvik
      # ln -s /usr/local/bin/i686-pc-linux-gnu/xdvi-motif.bin .
      # ln -s /usr/local/bin/i686-pc-linux-gnu/xdvizilla xdvikzilla`

      Così facendo e inserendo /usr/local/bin nella PATH di sistema, potrai richiamare il tuo nuovo xdvi 22.84 con il comando: `$ xdvik nomefile.dvi &`

      Spero di essere stato abbastanza chiaro, facci sapere.

      PS: nei codici, dove ho usato ‘#’ vuol dire che i comandi sono stati lanciati come superutente, mentre ho usato ‘$’ quando essi potevano essere lanciati anche da utente.

    • #3589
      Up
      0
      Down
      ::


      Alla fine sono riuscito ad installare xdvik 22.84.1 non senza difficoltà.
      Ho dovuto prima installare gcc sul mio PC, poi il pacchetto XFree86-devel,
      e poi anche creare un file di nome libXpm.so nella directory /usr/X11R6/lib/
      mediante un link sinbolico col file libXpm.so.4 già presente nella stessa directory.
      A questo punto ho impartito i comandi

      tar xvfz xdvik-22.84.1.tar.gz
      cd xdvik-22.84.1
      ./configure && make

      e nella directory $HOME/xdvik-22.84.1/texk/xdvik/ è finalmente apparso il file eseguibile xdvi-xaw.bin,
      che piazzato in una delle directory presenti nella PATH di sistema mi ha consentito di lanciare l’applicazione.

      In realtà è stato ancora più complicato di così, e mi ha dato una mano Stefan Urlich.

      Grazie comunque a Enrico e ad Emiliano.

      Ora ho ottenuto quello che dicevo all’inizio del topic, e cioè un hyperlink tra due file .dvi differenti:
      nel file1.tex scrivo
      \hyperdef\mysymbol{label}{}{}
      e nel file2.tex
      \hyperref{file1.dvi}{label}{}{Voila!},
      quindi apro file1.dvi e file2.dvi e cliccando sulla parola ‘Voila!’ nel file2.dvi schizzo immediatamente nel file1.dvi, al punto esatto.

      Benissimo.

      Ora però (e forse chiedo troppo!) vorrei che ciò avvenisse *senza* esplicito riferimento
      (all’interno del comando \hyperref) al file1.dvi di destinazione. Cioè, vorrei che il tutto funzionasse scrivendo semplicemente
      \hyperref{}{label}{}{Voila!} invece che
      \hyperref{file1.dvi}{label}{}{Voila!}.
      Quest’ultimo comando, insomma, e cioè \hyperref, o un altro comando appositamente definito al suo posto,
      dovrebbe essere in grado da solo di trovare il file1.dvi nell’ambito dell’intera directory, basandosi sulla sola ‘label’.
      Ritengo questa caratteristica, qualora sia realizzata, molto importante e utile, anzi indispensabile.
      Infatti, in questo modo si potrebbe creare un ipertesto vasto e articolato, composto di diversi file separati,
      le cui varie parti e sottoparti potrebbero liberamente essere spostate qua e là, tagliate e incollate a piacere,
      insomma l’ipertesto continuamente modificato nella sua struttura;
      cosa impossibile se c’è l’obbligo, quindi il vincolo di specificare il file di destinazione in ogni hyperlink tra file diversi.

      Non so se sono stato abbastanza chiaro!

      Con LaTeX è possibile fare questo?
      Qualcuno ha qualche idea in proposito?
      (O forse qualcuno può indicarmi una qualche mailing list che si occupa specificamente di questioni legate ad hyperref? Io non sono riuscito a trovarne.)

      Ciao,
      Rodolfo

    • #3590
      Up
      0
      Down
      ::


      La caratteristica che cercavo non rientra a quanto pare nelle possibilità né di xdvi né di HyperTeX,
      almeno nella sua semplice applicazione hyperbasics.tex, quella che adopero io.
      Quindi sarei dovuto riuscire a convincere qualcuno degli autori
      (Stefan Urlich per xdvik o Tamnmoy Bhattacharya per hyperbasics.tex)
      ad apportare le opportune modifiche alle rispettive applicazioni,
      cosa tutt’altro che facile. 🙄

      💡 Ho trovato invece una soluzione non so se raffinata
      o invece piuttosto ‘casareccia’ e arrangiata. Comunque funziona.
      Forse la spiegazione che ora riporto non potrà essere molto utile agli utenti di LaTeX
      (io uso plain TeX), ma chissà.

      Per creare i riferimenti incrociati (cross references) io adopero il pacchetto eplain.tex,
      coi suoi due comandi: \definexref{}{}{} per l’etichetta
      (quella che in LaTeX se non sbaglio corrisponde al comando \label)
      e \ref{} o \refn{} per il riferimento.
      Avevo già provveduto a modificare leggermente il file eplain.tex per avere la possibilità di creare riferimenti incrociati anche tra due diversi file
      (e senza bisogno di specificare i loro nomi, naturalmente!):
      per evitare di essere troppo prolisso qui non spiego come,
      ma se a qualcuno interessa basta inviare un messaggio su questo topic.
      Chiamiamo myeplain.tex questa versione leggermente modificata di eplain.tex.
      Quindi ho fatto così.

      Nel file1.tex ho scritto:

      `\input myeplain
      \input hyperbasics
      \newtoks\filename
      \filename={file1}

      \hyperdef\mysymbol{label1}{}{}\definexref{label1}{\the\filename.dvi}{}

      \vfill\eject\end`

      , e nel file2.tex

      `\input myeplain
      \input hyperbasics
      \definexref{}{}{} %non so perché ma è necessario inserire questa riga,
      %altrimenti ci sono guai

      \hyperref{\refn{label1}}{label1}{}{Voila!}

      \vfill\eject\end`

      In questo modo ottengo l’hyperlink dal file2.dvi nel file1.dvi senza far riferimento al file1.dvi.
      L’unico incomodo è quello di dover riassegnare la variabile \filename
      se il file1 dovesse cambiare nome, poco male.

      Ciao,
      Rodolfo

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

Go to top