[Tex/LaTex] titlesec, hyperref, algorithm2e, and \appendix

algorithm2eappendiceshyperrefsectioningtitlesec

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?

Best Answer

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}
Related Question