Como usar \mylabel em um \frametitle

Como usar \mylabel em um \frametitle

Preciso consultar \frametitleuma 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 insira a descrição da imagem aqui

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}

insira a descrição da imagem aqui

informação relacionada