\let vs hyperrref

Course Queries Syllabus Queries 2 years ago

0 2 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Syllabus Queries related to Course Queries. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 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}
profilepic.png
manpreet 2 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.