Quando mettere \phantomsection?

  • Creatore
    Topic
  • #44641
    lorenzo.pantieri
    Partecipante
      Up
      0
      Down
      ::


      Ciao a tutti, il problema è noto: con hyperref, si possono avere problemi con i segnalibri tutte le volte che si usa \addcontentsline. Per rimediare, va dato \pahntomsection. Per esempio:
      `\cleardoublepage
      \phantomsection
      \chapter*{Premessa}
      \addcontentsline{toc}{chapter}{\tocEntry{Premessa}}`
      È corretta la sequenza precedente?

      Quali sono gli altri casi in cui va dato \phantomsection? Per esempio, vorrei sapere se va bene la sequenza:
      `\cleardoublepage
      \phantomsection
      \pdfbookmark{\contentsname}{tableofcontents}
      \tableofcontents
      `
      Insomma, quali sono tutti i casi in cui va dato \phantomsection?

      Grazie,
      L.

    Visualizzazione 7 filoni di risposte
    • Autore
      Risposte
      • #44642
        Up
        0
        Down
        ::

        Ciao a tutti, il problema è noto: con hyperref, si possono avere problemi con i segnalibri tutte le volte che si usa \addcontentsline. Per rimediare, va dato \pahntomsection. Per esempio:
        `\cleardoublepage
        \phantomsection
        \chapter*{Premessa}
        \addcontentsline{toc}{chapter}{\tocEntry{Premessa}}`
        È corretta la sequenza precedente?

        Quali sono gli altri casi in cui va dato \phantomsection? Per esempio, vorrei sapere se va bene la sequenza:
        `\cleardoublepage
        \phantomsection
        \pdfbookmark{\contentsname}{tableofcontents}
        \tableofcontents
        `
        Insomma, quali sono tutti i casi in cui va dato \phantomsection?

        Credo che \pdfbookmark faccia da sé. Il manuale di hyperref è a disposizione. 🙂

        Ciao
        Enrico

      • #44643
        lorenzo.pantieri
        Partecipante
          Up
          0
          Down
          ::

          Credo che \pdfbookmark faccia da sé. Il manuale di hyperref è a disposizione. 🙂

          Per laverità, il manuale non è proprio precisissimo:

          Often it is used in conjunction with \addcontentsline for sectionlike things (index, bibliography, preface).

          Dire che \phantomsection si usa “spesso” insieme con \addcontentsline è un po’ vago… Ora prova a togliere tutti i \phantomsection prima di \pdfbookmark del mio documento: vidiamo se i segnalibri restano a posto.

          Ciao,
          L:

        • #44644
          lorenzo.pantieri
          Partecipante
            Up
            0
            Down
            ::


            Ecco, dando per buono che \pdfbookmark non ha bisogno di alcun \phantomsection, vorrei sapere l’ordine con cui devo usare quest’ultimo. Per esempio,
            `\markboth{\spacedlowsmallcaps{Prefazione}}{\spacedlowsmallcaps{Prefazione}}
            \phantomsection
            \addcontentsline{toc}{chapter}{\tocEntry{Prefazione}}
            \chapter*{Prefazione}
            `
            Insomma, vorrei sapere se \phantomsection va prima o dopo \chapter*, prima o dopo \addcontentsline, prima o dopo l’eventuale \markboth. In definitiva, qual è la sequenza corretta?

            Vorrei anche sapere dove di preciso inserire \pdfbookmark.
            `\cleardoublepage
            \pdfbookmark{\contentsname}{tableofcontents}
            \manualmark
            \markboth{\spacedlowsmallcaps{\contentsname}}{\spacedlowsmallcaps{\contentsname}}
            \tableofcontents
            `
            Così? O \pdfbookmark va dopo \tableofcontents e non prima?

            Avrei davvero bisogno di qualche esempio di sequenze corrette…

            Grazie mille,
            L.

          • #44645
            Up
            0
            Down
            ::


            [OT]

            Come sempre, non so aiutarti, ma complimenti per il tuo quattromillesimo messaggio!

            Credo che una tagliata potrebbe essere un festeggiamento adeguato. 😉

            Ciao
            Tommaso

            [OT]

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


              [OT]

              [OT]
              Come sempre, non so aiutarti, ma complimenti per il tuo quattromillesimo messaggio!
              Credo che una tagliata potrebbe essere un festeggiamento adeguato. 😉
              Ciao
              Tommaso
              [OT]

              Quoto. Fa un certo effetto leggere questo messaggio:
              `
              Salve a tutti! Sono un neofita di quella meraviglia che è LaTeX e avrei un quesito che forse vi farà sorridere di tenerezza…

              Voglio inserire in una tesina un sistema di equazioni numerato. I comandi

              $$
              \left\{
              \begin{array}{rcl}
              \bar{y} & = & y-\alpha x -\beta \\
              \bar{x} & = & x
              \end{array}
              \right.
              $$

              andrebbero benone, ma purtroppo il sistema non viene numerato! Penso che dovrei usare eqnarray, ma la sequenza

              $$
              \left\{
              \begin{eqnarray}
              \bar{y} & = & y-\alpha x -\beta \nonumber\\
              \bar{x} & = & x
              \end{eqnarray}
              \right.
              $$

              mi restituisce un bel “missing \endgroup inserted”.

              Che faccio?

              Grazie a tutti, Lorenzo`
              [/OT]
              Complimenti 😉

            • #44647
              lorenzo.pantieri
              Partecipante
                Up
                0
                Down
                ::


                [OT]
                Formule inserite con $$, sistemi definiti a mano con \left e array, l’orrido eqnarray, \nonumber. 😕

                Decisamente, ne abbiamo fatta di strada, insieme.
                [/OT]

                Ma ora bando ai ricordi, vediamo di concentraci su \phantomsection. 😉

                Grazie,
                L.

              • #44648
                Up
                0
                Down
                ::

                [OT]
                Formule inserite con $$, sistemi definiti a mano con \left e array, l’orrido eqnarray, \nonumber. 😕

                Decisamente, ne abbiamo fatta di strada, insieme.
                [/OT]

                Ma ora bando ai ricordi, vediamo di concentraci su \phantomsection. 😉

                Mi associo (dall’alto dei 2743 messaggi in più :wink:) ai complimenti per i 4000! Riporto dal manuale di hyperref:

                \phantomsection
                This sets an anchor at this location. It works similar to \hypertarget{}{} with an automatically chosen anchor name. Often it is used in conjunction with \addcontentsline for sectionlike things (index, bibliography, preface). \addcontentsline refers to the latest previous location where an anchor is set. Example:
                `\cleardoublepage
                \phantomsection
                \addcontentsline{toc}{chapter}{\indexname}
                \printindex`

                Dunque \phantomsection definisce un punto di riferimento (anchor) che però non ha un “nome” conosciuto dall’utente, ma che è memorizzato nella macro \@currentHref che contiene sempre il nome di punto di riferimento più recente. Un po’ come \@currentlabel contiene sempre la rappresentazione dell’ultimo numero generato per il sistema \label-\ref.

                La macro \addcontentsline è ridefinita da hyperref in modo da generare un collegamento con il più recente punto di riferimento. Infatti \addcontentsline è emesso automaticamente da comandi come \chapter e \section, i quali definiscono anche un punto di riferimento. Quando però \addcontentsline è usato da solo, il punto di riferimento non sarà quello corretto e perciò \phantomsection viene in soccorso.

                Con \pdfbookmark non c’è bisogno, confermo, perché ovviamente genera il suo proprio punto di riferimento: sarebbe assurdo che non lo facesse!

                Altri comandi che usano \@currentHref sono \refstepcounter, gli ambienti per le equazioni numerate, \footnote, \caption e \cite; ma per questi non c’è bisogno di impostare punti di riferimento perché il meccanismo li genera automaticamente.

                Ciao
                Enrico

              • #44649
                lorenzo.pantieri
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Enrico, ti ringrazio (per i complimenti e) per la tua lezione, chiarissima come sempre! 😀

                  A presto,
                  L.

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

              Go to top