
Ao escrever minha tese eu uso os pacotes hyperref
and appendix
como no pequeno exemplo abaixo.
teste.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}
Este exemplo não produz erros. O resultado final é uma tabela de conteúdo com links clicáveis para todos os capítulos (inclusive os dos apêndices) e formatada da maneira que desejo.
Durante a compilação (pdfLaTeX) o seguinte arquivo é produzido:
testar
\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
Minha tese é, obviamente, muito maior (mais capítulos e mais apêndices). Embora a estrutura seja semelhante, compilar minha tese resulta em vários erros enigmáticos (o que significa que não os entendo). Listei alguns abaixo. Comentar o hyperref
pacote me permite compilar, mas também desativa os links e os marcadores no documento 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}
O arquivo .out da minha tese parece bom até você chegar aos marcadores do apêndice.
...
\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
...
Eu acreditoesta postagemestá relacionado ao meu problema, mas não consigo entender isso (ainda sou relativamente novo no LaTeX). Alguém pode me ajudar a ativar os links e marcadores na minha tese?
Saudações,
Lixadeira
EDITAR
Adicionar o babel
pacote ao exemplo reproduz o problema.
\usepackage[dutch]{babel}
Responder1
Relatório de erro
É um bug no apêndice do pacote. O bug é acionado se babel
for carregado com a opção de idioma dutch
. Do meu relatório de bug para o mantenedor do pacote:
O seguinte documento é quebrado na segunda execução:
\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}
O arquivo .out contém:
\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
O nome do contador usado para o nome de destino está quebrado devido à string dependente do idioma: B"ylage
. A razão é:
\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
é redefinido como \appendixname
e isso depende do idioma e é interrompido no caso do holandês devido à expansão abreviada. Mas \Hy@chapapp
é usado em nomes de destino, geralmente é "capítulo" (do capítulo contador), somente depois que \appendix
o nome chapter
é alterado para appendix
para obter melhores nomes de destino exclusivos. Não há necessidade de tornar esse idioma dependente. Apenas use:
\def\Hy@chapapp{appendix}
ou
\def\Hy@chapapp{\Hy@appendixstring}
Além disso, a outra ocorrência \@resets@ppsub
precisa ser corrigida.
Solução alternativa/solução
Há também uma solução alternativa independente da correção de bugs no package appendix
. Basta carregar o pacote bookmark
depois hyperref
. Possui um algoritmo muito mais robusto para os bookmarks e trata das quebras B"ylage
do .aux
arquivo por meio
hex
da codificação ( base16
). Além disso, os marcadores são atualizados anteriormente.
\documentclass{book}
\usepackage[dutch]{babel}
\usepackage{hyperref}
\usepackage{bookmark}
\usepackage[titletoc]{appendix}
Além disso, hyperref
a v6.83b desativará abreviações em nomes de destino (\hypercurrent e nome de destino em \contentsline).
"IJ" e "ij" nos favoritos
Esses caracteres, ligaduras de i e j maiúsculos/minúsculos, não estão disponíveis em PDFDocEncoding. Mas eles são acessíveis por marcadores Unicode, ou seja,
hyperref
opção pdfencoding=auto
ou unicode
.
A substituição por "ÿ" na codificação hyperref
de PD1
é um bug e será corrigida na v6.83b.
Aliás, as redefinições de macros para os marcadores podem ser limitadas aos marcadores (strings de PDF), colocando-os em \pdfstringdefDisableCommands
:
\pdfstringdefDisableCommands{%
\renewcommand*{\appendixname}{Bookmark-Appendix}%
}
Responder2
Uma solução completa compilada a partir de todos os comentários.
\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}
Saudações,
Lixadeira