\let vs hyperrref

Course Queries Syllabus Queries 3 years ago

3.11K 2 0 0 0

User submissions are the sole responsibility of contributors, with TuteeHUB disclaiming liability for accuracy, copyrights, or consequences of use; content is for informational purposes only and not professional advice.

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 3 years 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}
\newcommand{\WeekLabel}{Week \theWeek\quad}
\DeclareDocumentCommand{\Week}{o m}{%                                                                                                                                                          
  \stepcounter{Week}
  \def\ThisWeek{\WeekLabel #2}
  \subsection*{\ThisWeek}
  \addcontentsline{toc}{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}
0 views
0 shares

profilepic.png
manpreet 3 years 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}

0 views   0 shares

No matter what stage you're at in your education or career, TuteeHUB will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.

Similar Forum