hyperref e bookmark

  • Creatore
    Topic
  • #4429
    Up
    0
    Down
    ::


    Salve a tutti,
    spero di non essere OT
    sto usando il pacchetto hyperref in un articolo che ho scritto. Il pacchetto inserisce le varie section all’interno del menu bookmarks del reader di acrobat (il menu a scomparsa è sulla sx). La cosa è particolarmente comoda e mi piace, però vorrei inserire un bookmark con il riferimento alla prima pagina (che non ho fatto con \maketitle, è una semplice pagina formattata con comandi specifici senza sezioni). Ho cercato nel manuale dell’hyperref ma ho trovato una vaga spiegazione sul fatto che i bookmarks sono elencati in un file .out che può essere editato nel caso di necessità. Però vorrei sapere se c’è un comando specifico da usare nel file tex per inserire un bookark (ho provato \bookmarks ma non sono stato fortunato:). Ho provato ad editare il file .out, riesco a fare comparire una voce in più tra i bookmarks ma non è cliccabile perchè non so come dare il riferimento al numero di pagina.
    Le righe sono:
    \let\WriteBookmarks\relax (serve per non fargli riscrivere il file editato)
    \BOOKMARK [1][-]{section.0}{abstract}{1} (quella che ho aggiunto, ho messo 1 perchè è a pagina 1)
    \BOOKMARK [1][-]{section.1}{The two-group diffusion equations}{} (la prima delle varie sezioni.)

    Qualcuno mi potrebbe consigliare il comando per inserire il riferimento?
    Grazie

Visualizzazione 11 filoni di risposte
  • Autore
    Risposte
    • #4430
      Up
      0
      Down
      ::


      Il modo più veloce è inserire il bookmark direttamente da Acrobat, ammesso che tu abbia una versione superiore alla reader.

    • #4431
      Up
      0
      Down
      ::


      non ce l’ho nè ho intenzione di acquistarla.
      Volevo semplicemente sapere se qualcuno mi poteva dare un aiuto con i comandi per l’hyperref.
      Grazie

    • #4432
      Up
      0
      Down
      ::


      Ciao,
      il seguente funziona benissimo in PlainTeX e se il tuo pacchetto di LaTeX (o LaTeX stesso) non lo disabilita, dovrebbe funzionare anche per te.
      Sono commandi primitivi di pdfTeX che si usano solo per il output di .pdf. Per il .dvi invece, li devi ridefinire vuoti (\relax).
      Alla pagina a cui la bookmark deve riferire metti:

      \pdfdest name{NOME} fit

      (NOME e’ il nome per cui pdfTeX riconosce a quale \pdfdest deve riferire la \pdfoutline. Lo devi scegliere tu. Puoi avere solo una \pdfdest per ogni NOME. fit significa “visualizza tutta la pagina”, se vuoi un altro modo di visualizzazione, lo trovi nel manuale di pdfTeX.)

      Poi metti, meglio subito dopo, questo:

      \pdfoutline goto name{NOME} count 0 {TESTO DEL BOOKMARK}.

      (count e’ il numero di “sottobookmarks diretti” della bookmark. Se non c’e’ nessuna, si puo’ ommettere).

      Altri informazioni le trovi nel manuale di pdfTeX.

      Spero di averti aiutato.
      Tomas

    • #4433
      Up
      0
      Down
      ::


      Ciao Thomas,
      Ci ho messo un po’ a provare i tuoi comandi perchè sono sotto esame:)
      Ti ringrazio molto per la risposta, sfortunatamente io sono un vero neofita e questo passaggio mi risulta un po’ oscuro:
      ho provato utilizzando il pdflatex con le due righe da te suggerite:
      \pdfdest{prova}
      \pdfoutline goto {prova} {Abstrac}
      e mi aggiunge il bookmark attivo. (anche se me lo mette dopo i bookmarks relativi all’indice, ci sarà un comando per inserire il bookmarks prima di quelli relativi all’indice)
      Sarebbe perfetto, però il file tex che ho prodotto tramite esportazione da un programma matematico necessita che venga fatto prima il dvi (non so la ragione, però, sebbene non ci siano errori, vengono sbagliati alcuni ambienti ed ho dei problemi con le immagini). Ho letto il manuale del pdftex ma non ho risolto molto.
      Prima domanda: devo dare un comando per caricare un pacchetto relativo al pdftex (finora ho usato l’opzione pdftex come parametro opzionale del pacchetto hyperref e graphicx)
      Inoltre non ho capito quello che ai detto riguardo a ridefinire i vuoti, non ho la minima idea nè di cosa significhi nè di come fare.

    • #4434
      Up
      0
      Down
      ::


      Ciao!
      Le righe che hai scritto non potevano funzionare con pdfTeX, le dovevi scrivere cosi’:

      \pdfdest name{prova} fit
      \pdfoutline goto name{prova}{Abstract}

      Questi commandi creano il bookmark senza la necessita’ di un file ausiliare (.out). Se vuoi invece di pdfTeX usare TeX, devi scrivere (non so se funzionera’ con LATeX, io uso plain)

      \ifx\pdfoutput\undefined\def\pdfdest name#1 fit{\relax} \def\pdfoutline goto name#1#2{\relax}\fi

      altrimenti TeX ti scrivera’ che \pdfdest e \pdfoutline sono commandi non definiti (perche’ li conosce solo pdfTeX) e i loro parametri trattera’ come testo normale, cioe’ li mettera’ nel documento. Con queste righe TeX li interpreta come \relax e pdfTeX li riconosce.

      (E’ possibile che in LATeX invece di \def c’e’ qualcosa come \newcommand e forse anche i parametri (#1, #2 ecc.) si scrivono in un altro modo, non lo so.)

      Perche’ devi fare prima il .dvi, non lo capisco (non ci sono delle immagini?).

      Dovrebbe essere possibile dire a TeX di mettere una riga nel file .out via il commando \write (o forse, consultando il tuo primo messaggio, \WriteBookmarks in LATeX).
      Prima di combinare questo, pero’, prova di mettere alla prima pagina la righa

      \pdfdest name{prova} fit

      e nel file .out, invece di quello che hai fatto, scrivi

      \BOOKMARK [1][-]{prova}{Abstract}{}

      Se funzionasse, potremmo pensare come fare TeX scriverlo invece di te.

      Ti saluto.

      Tomas[/quote]

    • #4435
      Up
      0
      Down
      ::


      Ciao,
      scusa ma mi sono sbagliato a ricopiare 🙂 Avevo messo le righe come da te suggerite la prima volta e corrette questa seconda e se utilizzo il pdftex funziona, il problema è che questo file è generato come esportazione e sebbene non ci siano errori nella compilazione mi si incasinano i vari ambienti (si scambiano colori, caratteri e altri dettagli), e poi ho le immagini in eps ma quando le converto in pdf vengono tagliate (non chiedermi perchè).
      Quindi sono costretto a passare per il dvi.
      Veniamo quindi ai vari passaggi per fare il dvi il ps e il pdf.
      Allora, ho messo la riga (tutta sulla stessa riga, non sono andato a capo)
      \ifx\pdfoutput\undefined\def\pdfdest name#1 fit{\relax} \def\pdfoutline goto name#1#2{\relax}\fi
      nel prologo e le due righe nella prima pagina.
      Non da nessun errore di compilazione ma non appare nessun bookmark.
      Allora modifico il file .out con i comandi:
      \let\WriteBookmarks\relax
      \BOOKMARK [1][-]{prova}{Abstract}{}
      e compilo nuovamente.
      In questo modo appare il bookmark, è cliccabile ma se ci clicco non va da nessuna parte.
      Mi rimetto quindi nelle tue mani.
      Grazie ancora!

    • #4436
      Up
      0
      Down
      ::


      1) La riga

      \ifx\pdfoutput\undefined\def\pdfdest name#1 fit{\relax} \def\pdfoutline goto name#1#2{\relax}\fi

      c’e’ solo perche’ TeX non ti dia un’errore di compilazione quando non utilizzi pdfTeX. Non puo’ creare nessun bookmark.

      2) Sei sicuro che \let\WriteBookmarks\relax si mette nel file .out e non nel tuo file .tex? (Forse hai ragione, ma meglio che ti assicuri)

      3) Che il bookmark dopo click non va da nessuna parte significa che non esiste la sua destinazione nel documento. Hai scritto anche

      \pdfdest name{prova} fit

      nel .tex? Comunque, questo sarà utilizzabile solo con pdfTeX.
      Se veramente devi passare per il .dvi, bisogna sapere come nel .dvi sono marchiati i bookmarks, forse con uno \special?
      Ora ho guardato un po’ – prova a mettere nella pagina di cui si tratta (nel documento .tex):

      \special{pdf: out 1 << /Title (Abstract) /Dest [ @thispage /Fit ] >>}

      e dimentica per ora delle altre modificazioni del .tex e del .out.

      E vedremo

      Tomas

    • #4437
      Up
      0
      Down
      ::


      Ciao Tomas,
      per la posizione di
      \let\WriteBookmarks\relax
      mi hai fatto venire il dubbio ma non trovo più dove l’avevo letto, cmq nel dubbio l’ho tolto dal file out e l’ho messo nel prologo (dopo aver aggiunto la riga \BOOKMARK [1][-]{prova}{Abstract}{} nel file out) e il risultato è invariato: in compilzaione non modifica il file out, nel pdf generato c’è il bookmark, si clicca ma non succede nulla. Quindi mi sento di poter dire che la posizione di quel comando sia indifferente o nel file out o nel prologo del tex.
      Passiamo oltre:
      nel tex ho scritto nella pagina di riferimento
      \pdfdest name{prova} fit
      \pdfoutline goto name{prova}{Abstract}
      ho provato a fare la compilazioe anche senza la seconda riga ma non cambia nulla, non viene creato nessun bookmark.
      Allora ho aggiungo la riga
      \let\WriteBookmarks\relax
      nel tex e
      \BOOKMARK [1][-]{prova}{Abstract}{}
      nel file out
      il pdf prodotto ha il bookmark che viene segnalato come cliccabile (quando il cursore ci passa sopra diventa la mano con il dito) ma quando lo clicco non succede nulla.
      Quindi ho escluso le righe (nel file tex)
      %\ifx\pdfoutput\undefined\def\pdfdest name#1 fit{\relax} \def\pdfoutline goto name#1#2{\relax}\fi
      %\let\WriteBookmarks\relax
      %\pdfdest name{prova} fit
      %\pdfoutline goto name{prova}{Abstract}
      Ed ho aggiunto
      \special{pdf: out 1 << /Title (Abstract) /Dest [ @thispage /Fit ] >>}
      ho cancellato il file out (per sicurezza)
      a questo punto ho compilato, nessun errore ma non c’è il bookmark. Per sicurezza ho compilato una seconda volta ma niente ci sono i bookmark relativi all’indice ma non compare quello specificato dalla riga di comando.

      A questo punto mi viene un altro dubbio: non è che devo inserire un parametro opzionale per l’hyperref? LA riga è questa:
      \usepackage[colorlinks=true,pdftitle={Partially Reflected Reactor}, pdfauthor={},bookmarks=true]{hyperref}
      Forse è necessario specificare qualche opzione sui bookmarks.
      Ti ringrazio ancora

    • #4438
      Up
      0
      Down
      ::


      Una domanda: come produci il .pdf? Io l’ho provato con dvipdfm e con la riga

      \special{pdf: out 1 << /Title (Abstract) /Dest [ @thispage /Fit ] >>}

      ha funzionato bene.

      Hai ragione che con questo metodo le righe

      \ifx\pdfoutput\undefined\def\pdfdest name#1 fit{\relax} \def\pdfoutline goto name#1#2{\relax}\fi
      \let\WriteBookmarks\relax
      \pdfdest name{prova} fit
      \pdfoutline goto name{prova}{Abstract}

      sono inutili. Le ultime due sono solo per pdfTeX, la prima e’ per non confondere TeX con comandi di pdfTeX (quando un file scritto per pdfTeX lo vuoi usare anche con TeX) e la rimanente dice di non riscrivere il file .out (quando lo hai cambiato a mano).

      \special serve generalmente per indicare in un file .dvi un commando che non appartiene al sistema di commandi .dvi, ma si puo’ interpretare quando il .dvi driver conosce anche il linguaggio in cui quel commando e’ scritto o quando il .dvi si converte a un file di tale linguaggio – per es. postscript (.ps) o .pdf.
      Lo \special che ora usi tu e’ un messaggio di questo genere al programma che converte .dvi a .pdf., cioe’ al dvipdfm. Fa probabilmente parte della tua distribuzione di TeX. Io non so cosa succede con questo messaggio se il .dvi si converte in .ps e solo dopo al .pdf. Quindi prova la diretta conversione con il dvipdfm.

      Tomas

    • #4439
      Up
      0
      Down
      ::


      iao Thomas,
      ti ringrazio molto per tutto il tuo aiuto, il problema era proprio questo: io facevo il dvi (latex) poi dvips e infine ps2pdf, insomma ci mettevo di mezzo il ps! Ora ho cambiato e faccio il dvi e poi il pdf dal dvi con il comando dvipdfm (non so quale sia la differenza tra il comando dvipdf e dvipdfm) e … FUNZIONA TUTTO A MERAVIGLIA!! (devo aggiungere il paremetro opzionale dvipdfm tra quelli dell’hyperref, altrimenti non funzionano i link).
      Ma tu sai se c’è anche il modo per inserire il bookmark nel caso io volessi fare anche il ps? Non ho capito se è nel passaggio dal dvi al ps o dal ps al pdf che si perde la funzione della riga:
      \special{pdf: out 1 << /Title (Abstract) /Dest [ @thispage /Fit ] >>}
      Ti ringrazio ancora
      Nucleo

    • #4440
      Up
      0
      Down
      ::


      Ciao,
      sono stato qualche tempo senza internet, allora rispondo solo adesso. Sono contento che tutto ti funziona.
      Non capisco perche’ vuoi mettere bookmarks nel .ps, dove non possono funzionare. Beh, ti scrivo come ho capito il problema (se mi sbaglio, spero che qualcuno da’ migliori informazioni).
      Se usi pdfTeX, ci sono comandi per utilizzare tutte le “features” del formato pdf direttamente nel pdfTeX stesso. Se vuoi passare via .dvi, devi mettere nel .dvi (a tutte le posizioni dove vuoi avere qualcosa non conosciuto dal formato dvi) un messaggio per il programma che legge il .dvi e ne crea un altro formato (di solito pdf o ps). Questi messaggi sono contenuti nel parametro del comando \special del file .tex. In .dvi non si manifestano in nessun modo (se il tuo dvi viewer non conosce anche ps), ci sono solo per caso che tu decida di convertire il .dvi in .ps o .pdf. LaTeX con il hyperref mette nel .dvi proprio questi \special (no, solo il contenuto del loro parametro).
      Se usi il parametro dvipdfm, hyperref crea gli \special in modo che dvipdfm li capisca e che contengano istruzioni da mettere nel .pdf. Altrimenti si creano \special conosciuti da dvips, con istruzioni di PostScript. E anche PostScript possiede mecanismi per contenere istruzioni di .pdf. Non so quali sono, ma funzionano analogamente a \special nel .dvi (non servono a niente se non vuoi convertire il file ps. a .pdf). E hyperref crea gli \special per
      PostScript in modo che contengano anche questi comandi per l’eventuale conversione di .ps in .pdf.
      La riga che ti ho scritto di mettere nel documento contiene solo un comando per .pdf e viene utilizzata quando il .pdf si crea direttamente dal .dvi. Se vuoi passare via .ps, dovrai invece scrivere uno \special per .ps, che dica di includere nel .ps il comando di .pdf per caso della conversione, altrimenti lo special viene ignorato.
      Come vedi, la funzione della riga si perde quando converti .dvi in .ps.

      Spero di avermi spiegato.

      Tomas

    • #4441
      Up
      0
      Down
      ::


      Utilizzando PDFTeX, pensavo che fosse sufficiente il comando`\pdfbookmark[1]{Titolo}{Titolo}`

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

Go to top