\phantomsection: quando va usato?

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


      Allora, vediamo se ho capito.

      Se si vogliono includere la bibliografia e l’indice analitico nell’indice generale, bisogna farlo manualmente, con \addcontentsline. Però, se si usa anche hyperref, bisogna scrivere \phantmsection subito prima di \addcontentsline, pena link e segnalibri sballati. Giusto?

      Mi chiedevo se la stessa cosa valga anche per tutti gli altri usi di \addcontentsline (magari, si introduce una prefazione con \chapter* e la si vuole nell’indice con \addcontentsline), naturalmente usando hyperref?

      Insomma, è vera la seguente:

      Tutte le volte che si usa \addcontentsline con hyperref, bisogna scrivere \phantmsection subito prima di \addcontentsline, pena link e segnalibri sballati.

      ?

      Grazie mille,
      L.

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

        Allora, vediamo se ho capito.

        Se si vogliono includere la bibliografia e l’indice analitico nell’indice generale, bisogna farlo manualmente, con \addcontentsline. Però, se si usa anche hyperref, bisogna scrivere \phantmsection subito prima di \addcontentsline, pena link e segnalibri sballati. Giusto?

        Mi chiedevo se la stessa cosa valga anche per tutti gli altri usi di \addcontentsline (magari, si introduce una prefazione con \chapter* e la si vuole nell’indice con \addcontentsline), naturalmente usando hyperref?

        Insomma, è vera la seguente:

        Tutte le volte che si usa \addcontentsline con hyperref, bisogna scrivere \phantmsection subito prima di \addcontentsline, pena link e segnalibri sballati.

        ?

        Sì: pagina 13 del manuale di hyperref.

        I tuoi punti di domanda appesi al nulla sono sempre divertenti. 🙂

        Ciao
        Enrico

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

          Sì: pagina 13 del manuale di hyperref.

          Ottimo!

          I tuoi punti di domanda appesi al nulla sono sempre divertenti. 🙂

          Li uso solo dopo un codice o una citazione in display, ma sicuramente sarebbe meglio parafrasare: “voorei sapere se è vera la seguente …” 🙂

          Grazie mille,
          L.

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


            Riprendo il topic. Ho un documento con ClassicThesis, con un breve indice degli argomenti che precede l’indice genrale. Il codice che uso (preso dal template di Miede) è il seguente:
            `\begingroup
            \manualmark
            \refstepcounter{dummy}
            \setcounter{tocdepth}{2}
            \pdfbookmark{Argomenti}{Argomenti}
            \shorttoc{Argomenti}{0}
            \pdfbookmark{\contentsname}{tableofcontents}
            \dominitoc\tableofcontents
            \markboth{\spacedlowsmallcaps{\contentsname}}{\spacedlowsmallcaps{\contentsname}}
            \endgroup`
            Però c’è un problema nei segnalibri: non si passa correttamente dal bookmark “Argomenti” al bookmark “Indice”, il bookmark “Indice” viene scavalcato, come se non esistesse.

            1. Come rimediare?

            2. Quel
            `\refstepcounter{dummy}`
            che Miede usa al posto di
            `\phantomsection`
            che cosa ci sta a fare?

            3. Vedo che Miede usa spesso quel codice in presenza del comando \pdfbookmark: quali sono allora tutte le circostanze in cui bisogna usare \phantomsection (o chi per esso)?

            Grazie mille,
            L.

          • #40917
            Up
            0
            Down
            ::

            Riprendo il topic. Ho un documento con ClassicThesis, con un breve indice degli argomenti che precede l’indice genrale. Il codice che uso (preso dal template di Miede) è il seguente:
            `\begingroup
            \manualmark
            \refstepcounter{dummy}
            \setcounter{tocdepth}{2}
            \pdfbookmark{Argomenti}{Argomenti}
            \shorttoc{Argomenti}{0}
            \pdfbookmark{\contentsname}{tableofcontents}
            \dominitoc\tableofcontents
            \markboth{\spacedlowsmallcaps{\contentsname}}{\spacedlowsmallcaps{\contentsname}}
            \endgroup`
            Però c’è un problema nei segnalibri: non si passa correttamente dal bookmark “Argomenti” al bookmark “Indice”, il bookmark “Indice” viene scavalcato, come se non esistesse.

            1. Come rimediare?

            2. Quel
            `\refstepcounter{dummy}`
            che Miede usa al posto di
            `\phantomsection`
            che cosa ci sta a fare?

            3. Vedo che Miede usa spesso quel codice in presenza del comando \pdfbookmark: quali sono allora tutte le circostanze in cui bisogna usare \phantomsection (o chi per esso)?

            Come pensi che si possa dare un’occhiata senza un esempio compilabile?

            Il trucco di far scattare il contatore “dummy” è nato perché Miede non sapeva di \phantomsection; ogni volta che c’è un \refstepcounter, hyperref imposta un punto di riferimento (anchor), esattamente come fa \phantomsection in modo più efficiente.

            A che serve quel gruppo?

            Ciao
            Enrico

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


              Provo con un esempio:
              `\documentclass[10pt,a4paper,twoside,openright,titlepage,%fleqn,
              cleardoubleempty,abstracton,pointlessnumbers,%
              headinclude,footinclude,BCOR5mm,%
              tablecaptionabove]{scrreprt}

              \usepackage[tight,italian]{minitoc}
              \usepackage{shorttoc}
              \usepackage{classicthesis-ldpkg}
              \usepackage[eulerchapternumbers,subfig,beramono,%
              eulermath,pdfspacing]{classicthesis}
              \usepackage[italian]{babel}
              \usepackage[italian]{arsclassica}

              \begin{document}

              \begin{titlepage}
              \pdfbookmark{Frontespizio}{Frontespizio}
              Prova
              \end{titlepage}

              \begingroup
              \manualmark
              \setcounter{tocdepth}{2}
              %
              \refstepcounter{dummy}
              \pdfbookmark{Argomenti}{Argomenti}
              \shorttoc{Argomenti}{0}
              %
              \refstepcounter{dummy}
              \pdfbookmark{\contentsname}{tableofcontents}
              \dominitoc\tableofcontents
              \endgroup

              \myChapter{Foo}

              \myChapter{Bar}

              \end{document}
              `
              Anche qui c’è un problema con i bookmark.

              Il gruppo non so che ci stia lì a fare: quel codice è di Miede.

              Grazie,
              L.

            • #40919
              Up
              0
              Down
              ::

              Provo con un esempio:
              `\documentclass[10pt,a4paper,twoside,openright,titlepage,%fleqn,
              cleardoubleempty,abstracton,pointlessnumbers,%
              headinclude,footinclude,BCOR5mm,%
              tablecaptionabove]{scrreprt}

              \usepackage[tight,italian]{minitoc}
              \usepackage{shorttoc}
              \usepackage{classicthesis-ldpkg}
              \usepackage[eulerchapternumbers,subfig,beramono,%
              eulermath,pdfspacing]{classicthesis}
              \usepackage[italian]{babel}
              \usepackage[italian]{arsclassica}

              \begin{document}

              \begin{titlepage}
              \pdfbookmark{Frontespizio}{Frontespizio}
              Prova
              \end{titlepage}

              \begingroup
              \manualmark
              \setcounter{tocdepth}{2}
              %
              \refstepcounter{dummy}
              \pdfbookmark{Argomenti}{Argomenti}
              \shorttoc{Argomenti}{0}
              %
              \refstepcounter{dummy}
              \pdfbookmark{\contentsname}{tableofcontents}
              \dominitoc\tableofcontents
              \endgroup

              \myChapter{Foo}

              \myChapter{Bar}

              \end{document}
              `
              Anche qui c’è un problema con i bookmark.

              Il gruppo non so che ci stia lì a fare: quel codice è di Miede.

              Non è che Miede sia la massima autorità al riguardo. 🙂

              Dimentichi semplicemente di mettere \cleardoublepage prima dei comandi \pdfbookmark; pensaci: \pdfbookmark definisce un punto di riferimento dove viene trovato, mentre, per esempio, \tableofcontents dà un comando \cleardoublepage; è chiaro che il punto di riferimento non indicherà il posto giusto.

              Usa \phantomsection e non \refstepcounter{dummy}, come già detto.

              Ciao
              Enrico

            • #40920
              Up
              0
              Down
              ::


              Perché tu sai tutte queste cose? 😉

              Ciao
              Tommaso

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

                Dimentichi semplicemente di mettere \cleardoublepage prima dei comandi \pdfbookmark; pensaci: \pdfbookmark definisce un punto di riferimento dove viene trovato, mentre, per esempio, \tableofcontents dà un comando \cleardoublepage; è chiaro che il punto di riferimento non indicherà il posto giusto.

                Usa \phantomsection e non \refstepcounter{dummy}, come già detto.

                Enrico, la tua analisi è perfetta. Il seguente
                `\setcounter{tocdepth}{2}
                \cleardoublepage
                \phantomsection
                \pdfbookmark{Argomenti}{Argomenti}
                \shorttoc{Argomenti}{0}

                \cleardoublepage
                \phantomsection
                \pdfbookmark{\contentsname}{tableofcontents}
                \dominitoc\tableofcontents`
                funziona alla perfezione… 🙂

                Grazie mille,
                L.

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

            Go to top