10

When I use titlesec, hyperref, and algorithm2e together, sections after an \appendix are not numbered properly.

\documentclass{article}
\usepackage{titlesec}
\usepackage{hyperref}
\usepackage{algorithm2e}
\begin{document}
\section{foo}
\appendix
\section{bar}
\end{document}

Compiling this gives the warning

pdfTeX warning (ext4): destination with the same identifier (name{section.1}) has been already used, duplicate ignored

Sure enough, the .aux file shows

\@writefile{toc}{\contentsline {section}{\numberline {1}foo}{1}{section.1}}
\@writefile{toc}{\contentsline {section}{\numberline {A}bar}{1}{section.1}}
  • Removing titlesec changes the second section.1 to appendix.1.
  • Removing algorithm2e changes the second section.1 to section.A.
  • Removing both changes the second section.1 to appendix.A.

Unlike last time, I tried all six permutations of the packages but had no luck.

Can this combination of packages be made to work?

1 Answer 1

6

It's always good to load hyperref last. (But you're right, that won't solve your problem.) I think the main source of the problem is algorithm2e. Based on this discussion (in German) here, it seems that there are a few possible solutions. The simplest two are:

Add

\renewcommand*{\theHsection}{\thesection}

after loading hyperref.

or

add

\let\chapter\undefined

after loading algorithm2e.

\documentclass{article}
\usepackage{titlesec}
\usepackage{algorithm2e}
\let\chapter\undefined % use this line
\usepackage[]{hyperref}
%\renewcommand*{\theHsection}{\thesection} % or this one
\begin{document}
\section{foo}
\appendix
\section{bar}
\end{document}
2
  • Thanks! It seems like the best solution (per a Google translate) is \let\chapter\undefined after loading algorithm2e. As you note, I should have been loading hyperref last, and indeed I normally would. I just happened to start with lexicographic ordering of the packages to make sure I didn't miss any of the 6 permutations. t, h, a was the 6th permutation. =)
    – TH.
    Commented Apr 10, 2011 at 1:13
  • Yes, that will work too. I read the post quite quickly and went for the first solution that worked. I'll adjust my answer.
    – Alan Munn
    Commented Apr 10, 2011 at 1:27

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .