
Preciso consultar \frametitle
uma seção que rotulei com um novo comando \mylabel
. Aqui está o código
\documentclass{beamer}
\makeatletter
\newcommand*{\mylabel}[2]{%
\@bsphack
\begingroup
\def\@currentlabel{#2}%
\label{#1}%
\endgroup
\@esphack
}
\makeatother
\begin{document}
\section[Title 1]{This is a long title that gos on very long long long long long
long long title more long long }{\mylabel{LabelTopic1}{This is a long title that
gos on very long long long long long long long title more long long }}
\frame<presentation>{\frametitle{\ref{LabelTopic1}}}
\end{document}
Isto é o que eu tenho
O problema é que o nome é muito longo e não cabe em uma linha do frametitle e a linha não quebra. Acho que está faltando alguma coisa no comando \mylabel
. Mas não sei o quê.
Obrigado por qualquer ajuda
Responder1
Os nomes do título e das seções são conhecidos como argumentos móveis e as macros dentro deles devem ser protegidas de maus presságios e do clima holandês. (Leitura extra se estiver interessado:Por que usar \DeclareTextFontCommand em vez de apenas \newcommand?) Compile-o duas vezes
\documentclass{beamer}
\makeatletter
\newcommand*{\mylabel}[2]{%
\@bsphack%
\begingroup%
\def\@currentlabel{#2}%
\label{#1}%
\endgroup%
\@esphack%
}
\makeatother
\begin{document}
\section[Title 1]{This is a long title that gos on very long long long
long long long long title more long long }{% Watch the next line
\protect\mylabel{LabelTopic1}{This is a long title that gos on very
long long long long long long long title more long long}%
}
\frame<presentation>{\frametitle{\ref{LabelTopic1}}}
\end{document}