A seguir está um exemplo mínimo do meu problema:
\documentclass{article}
\RequirePackage{hyperref}
\newenvironment{qu}[1][]{\par\addcontentsline{toc}{subsection}{ #1}}{\par}
\begin{document}
\tableofcontents
\addcontentsline{toc}{section}{a section}
\begin{qu}[foo]\end{qu}
\addcontentsline{toc}{section}{another section}
\begin{qu}[bar]\end{qu}
\end{document}
O índice gerado pelo látex parece correto, mais ou menos assim:
Contents
a section
foo
another section
bar
Quando eu compilo isso (duas vezes) com o pdflatex, ele também gera um índice que meu visualizador de PDF (o aplicativo Evince no Linux) conhece e exibe em um painel lateral. Esse painel lateral tem a estrutura hierárquica errada:
a section
1. foo
another section
2. bar
Por que isso está acontecendo e como posso corrigir isso?
Responder1
Adicionar uma linha de conteúdo manualmente com alguma entrada superior ao nível do marcador atual não redefine o nível do marcador, ou seja, o section
nível no ToC não será alterado de volta para o nível da seção dos marcadores.
O bookmark
pacote cuida disso, caso contrário hyperref
, os usos manuais \phantomsection
são outra solução, mas pior, no meu ponto de vista.
Outra vantagem do bookmark
pacote é que o contorno (o painel de favoritos) já está correto após a execução de uma compilação.
\documentclass{article}
\usepackage[open=true]{bookmark}
\newenvironment{qu}[1][]{\par\addcontentsline{toc}{subsection}{ #1}}{\par}
\begin{document}
\tableofcontents
\addcontentsline{toc}{section}{a section}
\begin{qu}[foo]
\end{qu}
\addcontentsline{toc}{section}{another section}
\begin{qu}[bar]\end{qu}
\end{document}