ClassicThesis: creare un link interno ad un capitolo

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


      Ciao, ho un documento composto con ClassicThesis così strutturato:
      `\documentclass[…]{scrreprt}
      \usepackage{classicthesis-ldpkg}
      \usepackage[…]{classicthesis}

      \begin{document}
      \include{Capitoli/Introduzione}
      \include{Capitoli/…}
      \include{Capitoli/…}
      \include{Capitoli/…}
      \end{document}
      `
      Vorrei inserire nell’introduzione una presentazione del tipo:
      `L'esposizione del lavoro è articolata come segue:
      \begin{description}
      \item[Nel secondo capitolo] viene analizzata…

      \item[Nel terzo capitolo] vengono discusse…

      \end{description}
      `
      Vorrei che cliccando su “secondo capitolo”, “terzo capitolo”, … il lettore venisse portato nella pagina corrispondente. Ho provato con hypertarget e hyperlink, ma non ci sono riuscito. 😳

      Grazie anticipate,
      L.

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

        Ciao, ho un documento composto con ClassicThesis così strutturato:
        `\documentclass[…]{scrreprt}
        \usepackage{classicthesis-ldpkg}
        \usepackage[…]{classicthesis}

        \begin{document}
        \include{Capitoli/Introduzione}
        \include{Capitoli/…}
        \include{Capitoli/…}
        \include{Capitoli/…}
        \end{document}
        `
        Vorrei inserire nell’introduzione una presentazione del tipo:
        `L'esposizione del lavoro è articolata come segue:
        \begin{description}
        \item[Nel secondo capitolo] viene analizzata…

        \item[Nel terzo capitolo] vengono discusse…

        \end{description}
        `
        Vorrei che cliccando su “secondo capitolo”, “terzo capitolo”, … il lettore venisse portato nella pagina corrispondente. Ho provato con hypertarget e hyperlink, ma non ci sono riuscito. 😳

        Davvero?
        `\begin{description}
        \item[\hyperlink{Cap-pizza}{Nel primo capitolo}] si parla di pizza.
        \item[\hyperlink{Cap-birra}{Nel secondo capitolo}] si parla di birra.
        \end{description}

        \chapter[La pizza]{\hypertarget{Cap-pizza}{La pizza}}

        \chapter[La birra]{\hypertarget{Cap-birra}{La birra}}
        …`
        Ciao
        Enrico

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

          `\begin{description}
          \item[\hyperlink{Cap-pizza}{Nel primo capitolo}] si parla di pizza.
          \item[\hyperlink{Cap-birra}{Nel secondo capitolo}] si parla di birra.
          \end{description}

          \chapter[La pizza]{\hypertarget{Cap-pizza}{La pizza}}

          \chapter[La birra]{\hypertarget{Cap-birra}{La birra}}
          …`

          Ciao Enrico, mi ero dimenticato di dirti che i capitoli sono introdotti da
          `\myChapter{…}`
          Purtroppo il codice
          `\myChapter{\hypertarget{cap:conclusioni}{Conclusioni}}`
          richiamato da
          `\item[\hyperlink{cap:conclusioni}{Nelle conclusioni}] viene analizzata…`
          non funziona:
          `! Use of \\MT@textls doesn't match its definition.
          \@ifnch …eserved@d \let \reserved@c \reserved@a
          \else \let \reserved@c \re…`
          Anche sostituiendo un semplice \chapter a \myChapter, l’errore si ripropone.

          😥

          Grazie per ilo tuo aiuto,
          L.

        • #16275
          Up
          0
          Down
          ::

          `\begin{description}
          \item[\hyperlink{Cap-pizza}{Nel primo capitolo}] si parla di pizza.
          \item[\hyperlink{Cap-birra}{Nel secondo capitolo}] si parla di birra.
          \end{description}

          \chapter[La pizza]{\hypertarget{Cap-pizza}{La pizza}}

          \chapter[La birra]{\hypertarget{Cap-birra}{La birra}}
          …`

          Ciao Enrico, mi ero dimenticato di dirti che i capitoli sono introdotti da
          `\myChapter{…}`
          Purtroppo il codice
          `\myChapter{\hypertarget{cap:conclusioni}{Conclusioni}}`
          richiamato da
          `\item[\hyperlink{cap:conclusioni}{Nelle conclusioni}] viene analizzata…`
          non funziona:
          `! Use of \\MT@textls doesn't match its definition.
          \@ifnch …eserved@d \let \reserved@c \reserved@a
          \else \let \reserved@c \re…`
          Anche sostituiendo un semplice \chapter a \myChapter, l’errore si ripropone.

          Avrai sicuramente visto che ho usato l’argomento opzionale a \chapter. Occorre un esempio minimo.

          Ciao
          Enrico

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

            Occorre un esempio minimo.

            Eccolo:
            `\documentclass[10pt,a4paper,twoside,openright,titlepage,fleqn,
            cleardoubleempty,abstractoff,pointlessnumbers,
            headinclude,footinclude,BCOR5mm]{scrreprt}

            \usepackage{classicthesis-ldpkg}
            \usepackage[eulerchapternumbers,subfigure,beramono,
            eulermath,pdfspacing,parts]{classicthesis}

            \hypersetup{%
            colorlinks=true, linktocpage=true, pdfstartpage=3, pdfstartview=FitV,%
            breaklinks=true, pdfpagemode=UseNone, pageanchor=true, pdfpagemode=UseOutlines,%
            plainpages=false, bookmarksnumbered, bookmarksopen=true, bookmarksopenlevel=1,%
            hypertexnames=true, pdfhighlight=/O,%
            urlcolor=webbrown, linkcolor=RoyalBlue, citecolor=RoyalBlue, pagecolor=RoyalBlue%
            }

            \begin{document}
            \include{Capitoli/Introduzione}
            \include{Capitoli/Pizza}
            \end{document}
            `
            dove Introduzione.tex è
            `%************************************************
            \myChapter{Introduzione}
            %************************************************

            L'esposizione del lavoro è articolata come segue:
            \begin{description}
            \item[\hyperlink{Cap-pizza}{Nel primo capitolo}] si parla di pizza.
            \end{description}
            `
            e Pizza.tex è
            `%************************************************
            \chapter[La pizza]{\hypertarget{Cap-pizza}{La pizza}}
            %************************************************

            Testo.`
            L’errore è il seguente:
            `! Undefined control sequence.
            \hyper@@link ->\let \Hy@reserved@a
            \relax \@ifnextchar [{\hyper@link@ }{\hyp…
            l.8 …[\hyperlink{Cap-pizza}{Nel primo capitolo}]
            si parla di pizza.
            ?
            `
            Fra l’altro, mi piacerebbe conoscere la soluzione nel caso in cui i capitoli sono introdotti da \myChapter (e non da \chapter):
            `\myChapter{La pizza}`
            perché nel mio lavoro uso sempre \myChapter e non \chapter.

            Grazie,
            L.

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


              Enrico, scusami se insisto, ma mi è venuta una mezza idea: e se fsse più semplice? Se non bisognasse passare per il meccanismo hypertarget-hyperlink?

              Infatti il codice:
              `\documentclass[10pt,a4paper,twoside,openright,titlepage,fleqn,
              cleardoubleempty,abstractoff,pointlessnumbers,
              headinclude,footinclude,BCOR5mm]{scrreprt}

              \usepackage{classicthesis-ldpkg}
              \usepackage[eulerchapternumbers,subfigure,beramono,
              eulermath,pdfspacing,parts]{classicthesis}

              \hypersetup{%
              colorlinks=true, linktocpage=true, pdfstartpage=3, pdfstartview=FitV,%
              breaklinks=true, pdfpagemode=UseNone, pageanchor=true, pdfpagemode=UseOutlines,%
              plainpages=false, bookmarksnumbered, bookmarksopen=true, bookmarksopenlevel=1,%
              hypertexnames=true, pdfhighlight=/O,%
              urlcolor=webbrown, linkcolor=RoyalBlue, citecolor=RoyalBlue, pagecolor=RoyalBlue%
              }

              \begin{document}
              \tableofcontents
              \include{Capitoli/Foobar}
              \end{document}`
              dove Foobar.tex è semplicemente introdotto da
              `\myChapter{Foobar}`
              produce un indice “cliccabile”: basta fare clic sul numero di pagina e si viene portati all’inizio del capitolo corrispondente (che è proprio quello che voglio fare io, anche se in un altro contesto).

              Quindi forse non c’è alcun bisogno di “marcare” i capitolo con hypertarget, basterebbe vedere come fa ClassicThesis ad ottenere quel risultato nell’indice, e “riadattare” il codice.

              Io però non ci sono riuscito…

              Grazie ancora,
              L.

            • #16278
              Up
              0
              Down
              ::

              Occorre un esempio minimo.

              Eccolo:
              `\documentclass[10pt,a4paper,twoside,openright,titlepage,fleqn,
              cleardoubleempty,abstractoff,pointlessnumbers,
              headinclude,footinclude,BCOR5mm]{scrreprt}

              \usepackage{classicthesis-ldpkg}
              \usepackage[eulerchapternumbers,subfigure,beramono,
              eulermath,pdfspacing,parts]{classicthesis}

              \hypersetup{%
              colorlinks=true, linktocpage=true, pdfstartpage=3, pdfstartview=FitV,%
              breaklinks=true, pdfpagemode=UseNone, pageanchor=true, pdfpagemode=UseOutlines,%
              plainpages=false, bookmarksnumbered, bookmarksopen=true, bookmarksopenlevel=1,%
              hypertexnames=true, pdfhighlight=/O,%
              urlcolor=webbrown, linkcolor=RoyalBlue, citecolor=RoyalBlue, pagecolor=RoyalBlue%
              }

              \begin{document}
              \include{Capitoli/Introduzione}
              \include{Capitoli/Pizza}
              \end{document}
              `
              dove Introduzione.tex è
              `%************************************************
              \myChapter{Introduzione}
              %************************************************

              L'esposizione del lavoro è articolata come segue:
              \begin{description}
              \item[\hyperlink{Cap-pizza}{Nel primo capitolo}] si parla di pizza.
              \end{description}
              `
              e Pizza.tex è
              `%************************************************
              \chapter[La pizza]{\hypertarget{Cap-pizza}{La pizza}}
              %************************************************

              Testo.`
              L’errore è il seguente:
              `! Undefined control sequence.
              \hyper@@link ->\let \Hy@reserved@a
              \relax \@ifnextchar [{\hyper@link@ }{\hyp…
              l.8 …[\hyperlink{Cap-pizza}{Nel primo capitolo}]
              si parla di pizza.
              ?
              `
              Fra l’altro, mi piacerebbe conoscere la soluzione nel caso in cui i capitoli sono introdotti da \myChapter (e non da \chapter):
              `\myChapter{La pizza}`
              perché nel mio lavoro uso sempre \myChapter e non \chapter.

              E secondo te, questo è un esempio minimo? 👿 Perché lasci \include, per esempio?

              Non ci posso fare niente se l’autore di ClassicThesis ridefinisce “a casaccio” le cose. Per esempio, non è possibile usare un argomento opzionale con \myChapter.

              Sull’altra possibilità non mi pronuncio. Occorrerebbe vedere come viene ridefinito \contentsline. Non mi pare una cosa semplice.

              Ciao
              Enrico

            • #16279
              gmc
                Up
                0
                Down
                ::


                Ciao Lorenzo,

                a me un semplice

                `
                \hyperref[Cap-pizza]{Nel primo capitolo}] si parla di pizza.
                \hyperref[Cap-birra]{Nel secondo capitolo}] si parla di birra.


                \chapter{La pizza}\label{Cap-pizza}

                \chapter{La birra}\label{Cap-birra}`

                funziona bene (ma non dentro description, mi restituisce qualche errore, penso che si risolva in fretta).

                Non l’ho provato con ClassicThesis

                Ciao,
                Peppe

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

                  `
                  \hyperref[Cap-pizza]{Nel primo capitolo}] si parla di pizza.
                  \hyperref[Cap-birra]{Nel secondo capitolo}] si parla di birra.

                  \chapter{La pizza}\label{Cap-pizza}

                  \chapter{La birra}\label{Cap-birra}`
                  funziona bene (ma non dentro description, mi restituisce qualche errore, penso che si risolva in fretta).

                  Ciao Peppe, il tuo codice funziona alla grande! 😀 In effetti, dentro l’ambiente description anche a me dà errore:
                  `! Argument of \Hy@babelnormalise has an extra }.

                  \par
                  l.10 \item[\hyperref[cap:pizza]
                  {Nel primo capitolo}] si parla di pizza.
                  ?
                  `
                  Ho “risolto” mettendo quei comandi dentro due parentesi graffe, nelle “etichette” dell’ambiete description: non so perché con quelle parentesi funziona e senza no (magari Enrico ce lo spiega…).
                  `\documentclass{scrreprt}

                  \usepackage{classicthesis-ldpkg}
                  \usepackage[subfigure]{classicthesis}

                  \begin{document}

                  \myChapter{Introduzione}
                  \begin{description}
                  \item[{\hyperref[cap:pizza]{Nel primo capitolo}}] si parla di pizza.
                  \item[{\hyperref[cap:birra]{Nel secondo capitolo}}] si parla di birra.
                  \end{description}

                  \myChapter{La pizza}\label{cap:pizza}

                  \myChapter{La birra}\label{cap:birra}

                  \end{document}
                  `
                  L’esempio che ho scritto questa volta dovrebbe essere minimo. Mi scuso se non l’ho fatto prima: visto che il problema riguardava manifestamente ClassicThesis e hyperref, avevo pensato di lasciarne le impostazioni in evidenza… Quanto agli include, mi erano proprio sfuggiti… 😳

                  Non ci posso fare niente se l’autore di ClassicThesis ridefinisce “a casaccio” le cose. Per esempio, non è possibile usare un argomento opzionale con \myChapter.

                  Eh, sono d’accordo. Ho sempre pensato che l’autore di ClassicThesis abbia fatto un lavoro meraviglioso dal punto di vista del risultato tipografico, ma che il codice con cui arriva a quel risultato sia (almeno per ora) un pochino “sporco”…

                  Comunque, avercene, di stili così!

                  Vi ringrazio infinitamente, Enrico e Peppe.

                  Ciao,
                  Lorenzo

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

              Go to top