
При написании диссертации я использую пакеты hyperref
и appendix
, как в небольшом примере ниже.
тест.текс
\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}
дополнительный.текс
\chapter{First appendix}
\section{Appendix section}
Этот пример не выдает ошибок. Конечный результат — таблица содержимого с кликабельными ссылками на все главы (включая те, что в приложениях) и отформатированная так, как мне нужно.
При компиляции (pdfLaTeX) создается следующий файл:
протестировать
\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
Моя диссертация, конечно, намного больше (больше глав и больше приложений). Хотя структура похожа, компиляция моей диссертации приводит к многочисленным криптическим ошибкам (то есть я их не понимаю). Я перечислил несколько ниже. Комментирование пакета hyperref
позволяет мне компилировать, но также отключает ссылки и закладки в документе PDF.
! 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}
Файл .out моей диссертации выглядит нормально, пока вы не доберетесь до закладок приложения.
...
\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
...
Я считаюэта почтасвязано с моей проблемой, но я не могу понять, в чем дело (я все еще относительно новичок в LaTeX). Может ли кто-нибудь помочь мне включить ссылки и закладки в моей диссертации?
Привет,
шлифовальная машинка
РЕДАКТИРОВАТЬ
Добавление babel
пакета в пример воспроизводит проблему.
\usepackage[dutch]{babel}
решение1
Отчет об ошибке
Это ошибка в приложении пакета. Ошибка возникает, если babel
загружена опция языка dutch
. Из моего отчета об ошибке для сопровождающего пакета:
Следующий документ ломается во втором прогоне:
\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}
Файл .out содержит:
\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
Имя счетчика, используемое для имени назначения, повреждено из-за строки, зависящей от языка: B"ylage
. Причина в следующем:
\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
переопределяется как \appendixname
и это зависит от языка, который ломается в случае голландского из-за расширения стенографии. Но \Hy@chapapp
используется в названиях пунктов назначения, это "chapter" (от counter chapter) обычно, только после того, как \appendix
название chapter
изменено на, appendix
чтобы получить более уникальные названия пунктов назначения. Нет необходимости делать это зависимым от языка. Просто используйте:
\def\Hy@chapapp{appendix}
или
\def\Hy@chapapp{\Hy@appendixstring}
\@resets@ppsub
Также необходимо исправить и другое явление .
Обходной путь/решение
Также есть обходной путь, независимый от исправления ошибок в package appendix
. Просто загрузите package bookmark
после hyperref
. Он имеет гораздо более надежный алгоритм для закладок и обрабатывает сломанные B"ylage
файлы .aux
с помощью
hex
кодирования ( base16
). Кроме того, закладки обновляются раньше.
\documentclass{book}
\usepackage[dutch]{babel}
\usepackage{hyperref}
\usepackage{bookmark}
\usepackage[titletoc]{appendix}
Также hyperref
версия 6.83b отключит сокращения в именах пунктов назначения (\hypercurrent и имя пункта назначения в \contentsline).
"IJ" и "ij" в закладках
Эти символы, лигатуры заглавных/строчных i и j, недоступны в PDFDocEncoding. Но они доступны через закладки Unicode, то есть
hyperref
option pdfencoding=auto
или unicode
.
Замена на «ÿ» в hyperref
кодировке PD1
является ошибкой и будет исправлена в версии 6.83b.
Кстати, переопределения макросов для закладок можно ограничить закладками (строками PDF), поместив их в \pdfstringdefDisableCommands
:
\pdfstringdefDisableCommands{%
\renewcommand*{\appendixname}{Bookmark-Appendix}%
}
решение2
Полное решение, составленное на основе всех комментариев.
\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}
Привет,
шлифовальная машинка