Hyperref

  • Creatore
    Topic
  • #15559
    Up
    0
    Down
    ::


    Ho un problemino con hyperref,
    se non lo carico tutto è a posto
    quando lo carico l’errore che mi dà è
    `
    ! Argument of \contentsline has an extra }.

    \par
    l.7 \contentsline
    {chapter}{Bibliografia}{9}{chapter*.3}
    Runaway argument?
    `
    nel file log
    e l’errore è
    `main.tex(7): Errore: ! Argument of \contentsline has an extra }.
    main.tex(7): Errore: ! Paragraph ended before \contentsline was complete.
    `

    La linea incriminata credo sia
    `
    \bibliographystyle{unsrt}
    \bibliography{articoli}
    \addcontentsline{toc}{chapter}{Bibliografia}`

    ma non capisco perchè mi dia errore!!
    Tra l’altro l’output è tutto corretto tranne (appunto) la linea dell’indice dedicata all Bibliografia, che è

    chapterBibliograa9chapter*.3

    che ne dite?

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

      Ho un problemino con hyperref,
      se non lo carico tutto è a posto
      quando lo carico l’errore che mi dà è
      `! Argument of \contentsline has an extra }.

      \par
      l.7 \contentsline
      {chapter}{Bibliografia}{9}{chapter*.3}
      Runaway argument?`
      nel file log
      e l’errore è
      `main.tex(7): Errore: ! Argument of \contentsline has an extra }.
      main.tex(7): Errore: ! Paragraph ended before \contentsline was complete.`
      La linea incriminata credo sia
      `\bibliographystyle{unsrt}
      \bibliography{articoli}
      \addcontentsline{toc}{chapter}{Bibliografia}`
      ma non capisco perchè mi dia errore!!
      Tra l’altro l’output è tutto corretto tranne (appunto) la linea dell’indice dedicata all Bibliografia, che è

      chapterBibliograa9chapter*.3

      che ne dite?

      Niente, finché non riporti un esempio che mostri veramente l’errore. Il seguente documento
      `\documentclass[a4paper]{book}
      \usepackage{hyperref}

      \begin{document}
      \frontmatter
      \tableofcontents
      \mainmatter
      \nocite{*}

      \bibliographystyle{unsrt}
      \bibliography{articoli}
      \addcontentsline{toc}{chapter}{Bibliografia}

      \end{document}`
      si compila perfettamente sia usando hyperref che omettendolo. Occhio all’ordine delle cose: si deve scrivere
      `\clearpage
      \addcontentsline{toc}{chapter}{Bibliografia}
      \bibliographystyle{unsrt}
      \bibliography{articoli}`
      se vuoi che l’indice punti alla pagina giusta, nel caso la bibliografia sia più lunga di una pagina.

      Ciao
      Enrico

    • #15561
      Up
      0
      Down
      ::


      il file main della tesi è – per ora – il seguente

      `
      \documentclass[a4paper,11pt,openright,twoside]{book}
      \usepackage[T1]{fontenc}

      \usepackage[italian]{babel}
      \usepackage{amsmath,amsfonts}
      \usepackage{fancyhdr}
      \usepackage{graphicx}
      \usepackage{pifont}
      \usepackage[binding=.6cm]{layaureo}
      \usepackage{lettrine}
      \usepackage{titlesec}

      %%%%%%%%%%%%%%%%%%%%%%%%
      \renewcommand{\sf}[1]{\textsf{#1}}
      \renewcommand{\d}{\mathop{}\!\mathrm{d}}
      \newcommand{\pd}[2]{\frac{\partial #1}{\partial #2}}
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      \titleformat{\chapter}[block]{\Huge\bfseries\sffamily}{\thechapter.~}
      {1pc}{}[\titlerule\vspace{4cm}]

      \titleformat{\subsection}[wrap]{\sffamily\bfseries}{\thesubsection.}{.5em}
      {}\titlespacing{\subsection}{12pc}{1.5ex plus .1ex minus .2ex}{1pc}

      \titleformat{\paragraph}[leftmargin]{\sffamily\bfseries\filleft}
      {\theparagraph}{.5em}{}\titlespacing{\paragraph}{4pc}{1.5ex plus .1ex minus .2ex}{1pc}
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      \numberwithin{equation}{chapter}%numera le eq secondo il capitolo(amsmath)
      \setlength{\headheight}{15pt}%altrimenti fancyhdr mi dà un warning

      \usepackage{hyperref}

      \includeonly{capitolo1}
      \begin{document}
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      \pagestyle{fancy}
      \renewcommand{\chaptermark}[1]{\markboth{\sffamily\thechapter\; #1}{}}
      \renewcommand{\sectionmark}[1]{\markright{\sffamily #1\;\thesection}}
      %\renewcommand{\footrulewidth}{0mm}
      \renewcommand{\headrulewidth}{0.2mm} %intestazioni e piè di pagina
      \fancyhf{} %con l'uso del pacchetto
      \fancyhead[lo]{\leftmark} %fancyhdr
      \fancyhead[re]{\rightmark}
      \fancyhead[ro,le]{\sffamily\thepage}
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

      \include{frontespizio}
      \frontmatter
      \tableofcontents
      \listoffigures

      \mainmatter
      \include{capitolo1}
      \include{capitolo2}

      \nocite{*}
      \addcontentsline{toc}{chapter}{Bibliografia}
      \bibliographystyle{unsrt}
      \bibliography{articoli}

      \end{document}
      `

    • #15562
      Up
      0
      Down
      ::

      il file main della tesi è – per ora – il seguente

      `\documentclass[a4paper,11pt,openright,twoside]{book}
      …`

      Questo non è un esempio minimo. Sostituendo infatti i file inclusi con due capitoli fittizi, il file si compila perfettamente.

      La mia ipotesi è un comando fragile non protetto in uno degli argomenti di \chapter o \section precedenti alla bibliografia. Ovviamente non posso dirti di più.

      Manca ancora il \clearpage prima di \addcontentsline; in mezzo ai due comandi metti anche \phantomsection.

      Ciao
      Enrico

    • #15563
      Up
      0
      Down
      ::


      ho provato a mettere \phantomsection e mi dà un errore (un undefined control sequence in una linea dove non c’è niente che non va)

      comunque ora faccio un po’ di prove per capire dove sta effettivamente l’errore

    • #15564
      Up
      0
      Down
      ::


      Non saprei dire perchè, ma semplicemente facendo qualche prova e poi rimettendo tutto com’era prima, ora non mi dà più l’errore, ma solo il seguente warning

      `
      capitolo1.tex(1): Package hyperref Warning: Token not allowed in a PDFDocEncoded string,
      capitolo1.tex(1): Package hyperref Warning: Token not allowed in a PDFDocEncoded string,
      capitolo1.tex(1): Package hyperref Warning: Token not allowed in a PDFDocEncoded string,
      capitolo1.tex(1): Package hyperref Warning: Token not allowed in a PDFDocEncoded string,
      `

    • #15565
      Up
      0
      Down
      ::


      Per curiosità a cosa serve \phantomsection ?

    • #15566
      Up
      0
      Down
      ::

      Non saprei dire perchè, ma semplicemente facendo qualche prova e poi rimettendo tutto com’era prima, ora non mi dà più l’errore, ma solo il seguente warning
      `capitolo1.tex(1): Package hyperref Warning: Token not allowed in a PDFDocEncoded string,`

      Evidentemente il .toc si era corrotto. Se non lasci che venga riscritto, interrompendo la compilazione al messaggio di errore, l’errore si ripeterà.

      La spiegazione del “warning” è semplice. Non puoi inserire cose del tipo $a$ in un titolo di capitolo o di sezione senza l’opportuna protezione: infatti nei bookmark possono comparire solo caratteri “normali”. La soluzione è
      `\chapter{La variabile \texorpdfstring{$a$}{a}}`
      Analogamente per altri comandi di composizione.

      \phantomsection è un comando di hyperref.

      Ciao
      Enrico

    • #15567
      Up
      0
      Down
      ::


      Ok, tutto a posto…
      Grazie mille Enrico 😀

      è rassicurante sapere di poter contare sul tuo aiuto,
      ciao 😉

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

Go to top