Riferimenti incrociati contenenti il testo del riferimento

  • Creatore
    Topic
  • #85320
    Up
    0
    Down
    ::


    Ciao a tutti,

    devo predisporre un documento in cui vengono usati riferimenti incociati. Mi piacerebbe, però, riportare anche a cosa fa riferimento il riferimento stesso, ad esempio il titolo del capitolo o della sezione riferita. La soluzione che riporto nel codice seguente è puramente indicativa e fa abbastanza schifo ma serve a capire cosa vorrei fare:

    `
    \documentclass{book}
    \def\MyTitCapIni{Capitolo iniziale}
    \def\MyTitCapFin{Capitolo finale}
    \def\MyTitSecIni{Sezione iniziale}
    \def\MyTitSecFin{Sezione finale}

    \begin{document}

    Nel \MyTitCapIni \hspace{5pt}\ref{cha:ini} a pag. \pageref{cha:ini}\\
    Nel \MyTitCapFin \hspace{5pt}\ref{cha:fin} a pag. \pageref{cha:fin}\\
    Nella \MyTitSecIni \hspace{5pt}\ref{sec:ini} a pag. \pageref{sec:ini}\\
    Nella \MyTitSecFin \hspace{5pt}\ref{sec:fin} a pag. \pageref{sec:ini}\\

    \chapter{\MyTitCapIni}\label{cha:ini}

    Questo capitolo …

    \section{\MyTitSecIni}\label{sec:ini}

    Questa sezione …

    \chapter{\MyTitCapFin}\label{cha:fin}

    Questo capitolo …

    \section{\MyTitSecFin}\label{sec:fin}

    Questa sezione …

    \end{document}
    `

    Con questa soluzione sono obbligato a definire in anticipo i titoli di capitoli e sezioni, mentre mi piacerebbe che il riferimento fosse dinamicamente legato al titolo indicato nel comandi \chapter o \section. Dovrei creare dei comandi personalizzati, ad esempio per \chapter, in cui “memorizzare” il titolo in una label?

    Grazie come sempre per i vostri suggerimenti

    a

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

      Amedeo” post=84726Ciao a tutti,

      devo predisporre un documento in cui vengono usati riferimenti incociati. Mi piacerebbe, però, riportare anche a cosa fa riferimento il riferimento stesso, ad esempio il titolo del capitolo o della sezione riferita. La soluzione che riporto nel codice seguente è puramente indicativa e fa abbastanza schifo ma serve a capire cosa vorrei fare:

      `
      \documentclass{book}
      \def\MyTitCapIni{Capitolo iniziale}
      \def\MyTitCapFin{Capitolo finale}
      \def\MyTitSecIni{Sezione iniziale}
      \def\MyTitSecFin{Sezione finale}

      \begin{document}

      Nel \MyTitCapIni \hspace{5pt}\ref{cha:ini} a pag. \pageref{cha:ini}\\
      Nel \MyTitCapFin \hspace{5pt}\ref{cha:fin} a pag. \pageref{cha:fin}\\
      Nella \MyTitSecIni \hspace{5pt}\ref{sec:ini} a pag. \pageref{sec:ini}\\
      Nella \MyTitSecFin \hspace{5pt}\ref{sec:fin} a pag. \pageref{sec:ini}\\

      \chapter{\MyTitCapIni}\label{cha:ini}

      Questo capitolo …

      \section{\MyTitSecIni}\label{sec:ini}

      Questa sezione …

      \chapter{\MyTitCapFin}\label{cha:fin}

      Questo capitolo …

      \section{\MyTitSecFin}\label{sec:fin}

      Questa sezione …

      \end{document}
      `

      Con questa soluzione sono obbligato a definire in anticipo i titoli di capitoli e sezioni, mentre mi piacerebbe che il riferimento fosse dinamicamente legato al titolo indicato nel comandi \chapter o \section. Dovrei creare dei comandi personalizzati, ad esempio per \chapter, in cui “memorizzare” il titolo in una label?

      Grazie come sempre per i vostri suggerimenti

      a

      Usare il comando [tt]nameref[/tt] del pacchetto [tt]hyperref[/tt]? Tipo: `
      \documentclass{book}
      \usepackage[hidelinks]{hyperref}

      \def\MyTitCapIni{Capitolo iniziale}
      \def\MyTitCapFin{Capitolo finale}
      \def\MyTitSecIni{Sezione iniziale}
      \def\MyTitSecFin{Sezione finale}

      \begin{document}

      Nel Capitolo~\nameref{cha:ini} \hspace{5pt}\ref{cha:ini} a pag. \pageref{cha:ini}

      Nel Capitolo~\nameref{cha:fin} \hspace{5pt}\ref{cha:fin} a pag. \pageref{cha:fin}

      Nella Sezione~\nameref{sec:ini} \hspace{5pt}\ref{sec:ini} a pag. \pageref{sec:ini}

      Nella Sezione~\nameref{sec:fin} \hspace{5pt}\ref{sec:fin} a pag. \pageref{sec:ini}

      \chapter{\MyTitCapIni}\label{cha:ini}

      Questo capitolo …

      \section{\MyTitSecIni}\label{sec:ini}

      Questa sezione …

      \chapter{\MyTitCapFin}\label{cha:fin}

      Questo capitolo …

      \section{\MyTitSecFin}\label{sec:fin}

      Questa sezione …

      \end{document}
      ` Ma questa è un’idea base base: ci sono pacchetti appositi per queste necessità ([tt]cleveref[/tt], [tt]varioref[/tt] e altri).

      Ciao
      Claudio

    • #85322
      Up
      0
      Down
      ::

      Amedeo” post=84726Ciao a tutti,

      devo predisporre un documento in cui vengono usati riferimenti incociati. Mi piacerebbe, però, riportare anche a cosa fa riferimento il riferimento stesso, ad esempio il titolo del capitolo o della sezione riferita. La soluzione che riporto nel codice seguente è puramente indicativa e fa abbastanza schifo ma serve a capire cosa vorrei fare:

      `
      \documentclass{book}
      \def\MyTitCapIni{Capitolo iniziale}
      \def\MyTitCapFin{Capitolo finale}
      \def\MyTitSecIni{Sezione iniziale}
      \def\MyTitSecFin{Sezione finale}

      \begin{document}

      Nel \MyTitCapIni \hspace{5pt}\ref{cha:ini} a pag. \pageref{cha:ini}\\
      Nel \MyTitCapFin \hspace{5pt}\ref{cha:fin} a pag. \pageref{cha:fin}\\
      Nella \MyTitSecIni \hspace{5pt}\ref{sec:ini} a pag. \pageref{sec:ini}\\
      Nella \MyTitSecFin \hspace{5pt}\ref{sec:fin} a pag. \pageref{sec:ini}\\

      \chapter{\MyTitCapIni}\label{cha:ini}

      Questo capitolo …

      \section{\MyTitSecIni}\label{sec:ini}

      Questa sezione …

      \chapter{\MyTitCapFin}\label{cha:fin}

      Questo capitolo …

      \section{\MyTitSecFin}\label{sec:fin}

      Questa sezione …

      \end{document}
      `

      Con questa soluzione sono obbligato a definire in anticipo i titoli di capitoli e sezioni, mentre mi piacerebbe che il riferimento fosse dinamicamente legato al titolo indicato nel comandi \chapter o \section. Dovrei creare dei comandi personalizzati, ad esempio per \chapter, in cui “memorizzare” il titolo in una label?

      Grazie come sempre per i vostri suggerimenti

      a

      Pacchetto nameref, per esempio:
      `\documentclass{book}
      \usepackage{nameref}

      \begin{document}

      Nel \nameref{cha:ini}~\ref{cha:ini} a pagina~\pageref{cha:ini}

      Nel \nameref{cha:fin}~\ref{cha:fin} a pagina~\pageref{cha:fin}

      Nella \nameref{sec:ini}~\ref{sec:ini} a pagina~\pageref{sec:ini}

      Nella \nameref{sec:fin}~\ref{sec:fin} a pagina~\pageref{sec:ini}

      \chapter{Capitolo iniziale}\label{cha:ini}

      Questo capitolo …

      \section{Sezione iniziale}\label{sec:ini}

      Questa sezione …

      \chapter{Capitolo finale}\label{cha:fin}

      Questo capitolo …

      \section{Sezione finale}\label{sec:fin}

      Questa sezione …

      \end{document}`
      Non usare mai [tt]\hspace{5pt}[/tt] nel caso tu voglia uno spazio dopo un comando:
      `Con \LaTeX{} diventa tutto facile`

      E, sinceramente, “a pag. 12” mi sembra molto burocratico. Se poi vedo “alle pagg. 12 e 13” la mano va alla pistola. 🙂

      Se proprio devi scrivere “pag.”, adopera [tt]~[/tt]:
      `a pag.~\ref{pippo}`
      Ciao
      Enrico

    • #85323
      Up
      0
      Down
      ::


      Direi risolto. Dalla indagine svolta prima di scrivere in questo forum non avevo tratto alcun suggerimento così diretto e chiaro. Forse il pakage nameref non è molto pubblicizzato oppure l’esigenza non è particolarmente sentita. Grazie ancora.

      a

    • #85324
      Up
      0
      Down
      ::


      Ho parlato troppo presto :-(. Inserendo l’uso del package nameref nel mio documento, sono emersi una serie di errori di sintassi (tipo “extra \else\chapter…”). Vi sono accortezze da seguire nella precedenza dei packages?

    • #85325
      Up
      0
      Down
      ::

      Amedeo” post=84731Ho parlato troppo presto :-(. Inserendo l’uso del package nameref nel mio documento, sono emersi una serie di errori di sintassi (tipo “extra \else\chapter…”). Vi sono accortezze da seguire nella precedenza dei packages?

      Esempio? Breve, se possibile.

      Ciao
      Enrico

    • #85326
      Up
      0
      Down
      ::


      Ho isolato il problema (almeno così mi sembra). Il codice che segue è essenzialmente lo stesso precedente. Ciò che varia è l’indicazione di un footer di pagina particolare:
      `
      \documentclass[10pt,a4paper,oneside]{book}
      \usepackage{nameref}
      \usepackage[italian]{babel}
      \usepackage[utf8x]{inputenc}
      \usepackage[T1]{fontenc}
      \usepackage

      {geometry}
      \usepackage{fancyhdr}
      \usepackage{lastpage}
      \pagestyle{fancy}

      \rfoot{pag.~\thepage~di~\pageref{LastPage}} %%% RIGA INCRIMINATA

      \begin{document}

      Nel \nameref{cha:ini}~\ref{cha:ini} a pagina \pageref{cha:ini}\\

      \chapter{Capitolo iniziale}\label{cha:ini}

      Questo capitolo …

      \end{document}
      `
      Se commento la RIGA INCRIMINATA, tutto OK; se la lascio viene segnalato un errore alla riga in cui apro il capitolo (\chapter); l’errore è “Extra \else.\chapter ->\if@openright \cleardoublepage \else\clearpage \fi \thispagestyle… \chapter”. A occhio e croce sembra un conflitto con il package fancyhdr

    • #85327
      Up
      0
      Down
      ::

      Amedeo” post=84739Ho isolato il problema (almeno così mi sembra). Il codice che segue è essenzialmente lo stesso precedente. Ciò che varia è l’indicazione di un footer di pagina particolare:
      `
      \documentclass[10pt,a4paper,oneside]{book}
      \usepackage{nameref}
      \usepackage[italian]{babel}
      \usepackage[utf8x]{inputenc}
      \usepackage[T1]{fontenc}
      \usepackage

      {geometry}
      \usepackage{fancyhdr}
      \usepackage{lastpage}
      \pagestyle{fancy}

      \rfoot{pag.~\thepage~di~\pageref{LastPage}} %%% RIGA INCRIMINATA

      \begin{document}

      Nel \nameref{cha:ini}~\ref{cha:ini} a pagina \pageref{cha:ini}\\

      \chapter{Capitolo iniziale}\label{cha:ini}

      Questo capitolo …

      \end{document}
      `
      Se commento la RIGA INCRIMINATA, tutto OK; se la lascio viene segnalato un errore alla riga in cui apro il capitolo (\chapter); l’errore è “Extra \else.\chapter ->\if@openright \cleardoublepage \else\clearpage \fi \thispagestyle… \chapter”. A occhio e croce sembra un conflitto con il package fancyhdr

      Nessun errore con questo esempio

      Ciao
      Ivan

    • #85328
      Up
      0
      Down
      ::


      Per Ivan: utilizzo Texmaker 3.2 su Linux. Caricando il codice che ho riportato (taglia e incolla), segnala esattamente quell’errore. Aggiungo anche che se tolgo l’utilizzo di pageref in \rfoot, tutto fila liscio

    • #85329
      Up
      0
      Down
      ::

      Amedeo” post=84742Per Ivan: utilizzo Texmaker 3.2 su Linux. Caricando il codice che ho riportato (taglia e incolla), segnala esattamente quell’errore. Aggiungo anche che se tolgo l’utilizzo di pageref in \rfoot, tutto fila liscio

      Nessun errore. Quale distribuzione TeX usi?

      In ogni caso, correggi secondo questi consigli:

      1. [tt]\usepackage{nameref}[/tt] va certamente dopo le impostazioni della pagina

      2. [tt]utf8x[/tt] non è veramente raccomandabile. Se hai una distribuzione TeX recente (cioè non la 2009 di Ubuntu, per intenderci), puoi farne a meno.

      3. Non terminare mai le righe nel testo normale con [tt]\\[/tt].

      4. L’impostazione per fancyhdr dovrebbe essere
      `\fancyfoot[R]{pagina \thepage\ di \pageref{LastPage}}`
      Vedi sopra per “pagina”. 😉

      Perché poi uno debba sempre dire quante pagine manchino alla fine mi lascia perplesso. Forse per dire al lettore “Coraggio, manca poco e il supplizio finisce”. 🙂

      Ciao
      Enrico

    • #85330
      Up
      0
      Down
      ::


      Non saprei quale distribuzione utilizzi; ho installato il package per Ubuntu circa sei mesi fa (quando ho “ri-scoperto” LaTeX) attraverso i link del sito del GuIT. Ho comunque risolto la faccenda includendo il package “hyperref” anzichè “nameref”; il primo include il secondo e ho anche i link dinamici nella rappresentazione a video e nell’indice.

      Per replicare agli altri consigli:

      1. fatto, ma non cambia: l’errore persiste
      2. utf8x l’ho messo perchè altrimenti dovevo scrivere tutte le lettere accentate nella modalità classica LaTeX (es. \’e al posto di è); in effetti utilizzo Ubuntu (12.04)
      3. refuso; eliminato \\
      4. fatto, ma non cambia: l’errore persiste

      Anche per pag. al posti di pagina, l’ho sistemato. Immagino che l’osservazione valga anche per altre forme abbreviate come art., num., cap., etc. Sul fatto di indicare il totale delle pagine condivido si tratti soprattutto di un fattore psicologico

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

Go to top