#### \let vs hyperrref

##### Replies

User

( 4 months ago )

In the following sample from my custom syllabus class, I am getting a new error since updating my TeXLive 2015 distribution to the most recent release today. The error is TeX capacity exceeded.

As far as I can tell the error is the result of an interaction between the \let, the \addcontentslinecommand, and the hyperref package. If I define \term as a regular \newcommand, or if I omit the \addcontentsline, then it works with hyperref.

Why can't I use a \let command inside \addcontentsline with hyperref?

\documentclass{article}
\usepackage{xparse}

\newcounter{Week}
\DeclareDocumentCommand{\Week}{o m}{%
\stepcounter{Week}
\def\ThisWeek{\WeekLabel #2}
\subsection*{\ThisWeek}
}

\newcommand{\term}[1]{\emph{#1}} % no error
%\let\term\emph % produces error with hyperref, why?

\usepackage{hyperref}

\begin{document}

\section*{Syllabus}
\tableofcontents

\section{Eighteenth-Century Opera}

\Week[11/09]{Italian \term{opera seria}}

\Week[11/15]{Italian \term{opera buffa}}

\end{document}

User

( 4 months ago )

The title in \addcontentsline is also used in the bookmarks. There, the text should be expandable. \emph cannot be used for this reason. Also fonts cannot be changed inside bookmarks strings. Package hyperref redefines \emph inside the bookmarks. But it does not see \emph anymore, when \term is defined via \let.

The easiest solution is using \newcommand as in the question, a little optimized:

\newcommand{\term}{\emph}

Otherwise, \term needs to be redefined inside bookmarks:

\usepackage{hyperref}
\pdfstringdefDisableCommands{\let\term\relax}

Ra
04-Sep-2019

2 Replies

Ra
05-Sep-2019

2 Replies

11-Sep-2019

0 Replies