
Beim Schreiben meiner Abschlussarbeit verwende ich die Pakete hyperref
und appendix
wie in dem kleinen Beispiel unten.
test.tex
\documentclass{book}
\usepackage{hyperref}
\usepackage[titletoc]{appendix}
\begin{document}
\tableofcontents
\chapter{First chapter}
\section{Chapter section}
\chapter{Second chapter}
\begin{appendices}
\input{extra}
\end{appendices}
\end{document}
extra.tex
\chapter{First appendix}
\section{Appendix section}
Dieses Beispiel erzeugt keine Fehler. Das Endergebnis ist ein Inhaltsverzeichnis mit anklickbaren Links zu allen Kapiteln (einschließlich derer in den Anhängen) und in der von mir gewünschten Formatierung.
Beim Kompilieren (pdfLaTeX) entsteht folgende Datei:
durchtesten
\BOOKMARK [0][-]{chapter.1}{First chapter}{}% 1
\BOOKMARK [1][-]{section.1.1}{Chapter section}{chapter.1}% 2
\BOOKMARK [0][-]{chapter.2}{Second chapter}{}% 3
\BOOKMARK [0][-]{Appendix.1.A}{Appendix First appendix}{}% 4
\BOOKMARK [1][-]{section.1.A.1}{Appendix section}{Appendix.1.A}% 5
Meine Arbeit ist natürlich viel umfangreicher (mehr Kapitel und mehr Anhänge). Obwohl die Struktur ähnlich ist, führt das Kompilieren meiner Arbeit zu zahlreichen kryptischen Fehlern (was bedeutet, dass ich sie nicht verstehe). Ich habe unten einige aufgelistet. Das Kommentieren des hyperref
Pakets ermöglicht mir das Kompilieren, deaktiviert aber auch die Links und Lesezeichen im PDF-Dokument.
! Missing \endcsname inserted.
<to be read again>
\penalty
l.46 ...@skip {}lage.1.D}{B\377lage Afkortingen}{}
% 46
The control sequence marked <to be read again> should
not appear between \csname and \endcsname.
! Missing number, treated as zero.
<to be read again>
{
l.46 ...@skip {}lage.1.D}{B\377lage Afkortingen}{}
% 46
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)
! Extra \endcsname.
\check@bm@number ...0\else \csname B_#1\endcsname
\fi
l.46 ...@skip {}lage.1.D}{B\377lage Afkortingen}{}
% 46
I'm ignoring this, since I wasn't doing a \csname.
)
! Missing $ inserted.
<inserted text>
$
l.154 \begin{document}
Die .out-Datei meiner Abschlussarbeit sieht gut aus, bis man zu den Lesezeichen im Anhang kommt.
...
\BOOKMARK [1][-]{section.5.4}{Optimalisatie}{chapter.5}% 32
\BOOKMARK [0][-]{chapter.6}{Conclusie}{}% 33
\BOOKMARK [0][-]{chapter*.28}{Bibliografie}{}% 34
\BOOKMARK [0][-]{B\penalty \@M \hskip \z@skip i\kern -0.02em j\penalty \@M \hskip \z@skip {}lage.1.A}{B\377lage Stopwoordlijsten}{}% 35
\BOOKMARK [1][-]{section.1.A.1}{Nederlandse stopwoorden}{B\penalty \@M \hskip \z@skip i\kern -0.02em j\penalty \@M \hskip \z@skip {}lage.1.A}% 36
\BOOKMARK [1][-]{section.1.A.2}{Engelse stopwoorden}{B\penalty \@M \hskip \z@skip i\kern -0.02em j\penalty \@M \hskip \z@skip {}lage.1.A}% 37
...
Ich glaubedieser Beitraghängt mit meinem Problem zusammen, aber ich komme damit nicht klar (bin noch relativ neu bei LaTeX). Kann mir jemand helfen, die Links und Lesezeichen in meiner Arbeit zu aktivieren?
Grüße,
Sander
BEARBEITEN
Das Hinzufügen des babel
Pakets zum Beispiel reproduziert das Problem.
\usepackage[dutch]{babel}
Antwort1
Fehlerbericht
Es handelt sich um einen Fehler im Paketanhang. Der Fehler wird ausgelöst, wenn babel
mit der Sprachoption geladen wird dutch
. Aus meinem Fehlerbericht an den Paketbetreuer:
Folgendes Dokument bricht beim zweiten Durchlauf ab:
\documentclass{book}
\usepackage[dutch]{babel}
\usepackage{hyperref}
\usepackage[titletoc]{appendix}
\begin{document}
\tableofcontents
\chapter{First chapter}
\section{Chapter section}
\chapter{Second chapter}
\begin{appendices}
\chapter{First appendix}
\section{Appendix section}
\end{appendices}
\end{document}
Die .out-Datei enthält:
\BOOKMARK [0][-]{B\penalty \@M \hskip \z@skip i\kern -0.02em j\penalty \@M
\hskip \z@skip {}lage.1.A}{B\377lage First appendix}{}% 4
Der für den Zielnamen verwendete Zählername ist aufgrund der sprachabhängigen Zeichenfolge fehlerhaft: B"ylage
. Der Grund ist:
\newcommand{\@resets@pp}{\par
\@ppsavesec
\stepcounter{@pps}
\setcounter{section}{0}%
\if@chapter@pp
\setcounter{chapter}{0}%
\renewcommand\@chapapp{\appendixname}%
\renewcommand\thechapter{\@Alph\c@chapter}%
\else
\setcounter{subsection}{0}%
\renewcommand\thesection{\@Alph\c@section}%
\fi
\if@pphyper
\if@chapter@pp
\renewcommand{\theHchapter}{\theH@pps.\Alph{chapter}}%
\else
\renewcommand{\theHsection}{\theH@pps.\Alph{section}}%
\fi
\def\Hy@chapapp{\appendixname}%
\fi
\restoreapp
}
\Hy@chapapp
wird neu definiert als \appendixname
und ist sprachabhängig, was im Fall von Niederländisch aufgrund der Abkürzungserweiterung nicht funktioniert. \Hy@chapapp
Wird aber in Zielnamen verwendet, ist es normalerweise „Kapitel“ (von Zählerkapitel), nur nachdem \appendix
der Name chapter
geändert wurde, um appendix
eindeutigere Zielnamen zu erhalten. Es besteht keine Notwendigkeit, dies sprachabhängig zu machen. Verwenden Sie einfach:
\def\Hy@chapapp{appendix}
oder
\def\Hy@chapapp{\Hy@appendixstring}
Auch das andere Vorkommen \@resets@ppsub
muss behoben werden.
Problemumgehung/Lösung
Es gibt auch einen Workaround, der unabhängig von der Fehlerbehebung im Paket ist appendix
. Laden Sie einfach das Paket bookmark
nach hyperref
. Es hat einen viel robusteren Algorithmus für die Lesezeichen und behebt die Fehler B"ylage
in der .aux
Datei mithilfe von
hex
encoding ( base16
). Außerdem werden die Lesezeichen früher aktualisiert.
\documentclass{book}
\usepackage[dutch]{babel}
\usepackage{hyperref}
\usepackage{bookmark}
\usepackage[titletoc]{appendix}
Außerdem hyperref
deaktiviert v6.83b Abkürzungen in Zielnamen (\hypercurrent und Zielname in \contentsline).
"IJ" und "ij" in Lesezeichen
Diese Zeichen, Ligaturen aus Groß-/Kleinbuchstaben i und j, sind in PDFDocEncoding nicht verfügbar. Sie sind jedoch über Unicode-Lesezeichen zugänglich, d. h. über
hyperref
die Option pdfencoding=auto
oder unicode
.
Der Ersatz durch „ÿ“ in hyperref
der PD1
Kodierung ist ein Fehler und wird in v6.83b behoben.
Übrigens können Neudefinitionen von Makros für die Lesezeichen auf Lesezeichen (PDF-Zeichenfolgen) beschränkt werden, indem sie in Folgendes eingefügt werden \pdfstringdefDisableCommands
:
\pdfstringdefDisableCommands{%
\renewcommand*{\appendixname}{Bookmark-Appendix}%
}
Antwort2
Aus allen Kommentaren eine Komplettlösung zusammengestellt.
\documentclass{book}
\usepackage[dutch]{babel}
\usepackage[titletoc]{appendix}
\usepackage{hyperref}
\usepackage{bookmark} % handles the encoding in the .out file
\addto\captionsdutch{\renewcommand{\appendixname}{Bijlage}} % changes 'Bÿlage' to 'Bijlage' for the bookmarks
\begin{document}
\tableofcontents
\chapter{First chapter}
\section{Chapter section}
\chapter{Second chapter}
\begin{appendices}
\input{extra}
\end{appendices}
\end{document}
Grüße,
Sander