Cómo usar \mylabel en un \frametitle

Cómo usar \mylabel en un \frametitle

Necesito hacer referencia \frametitlea una sección que he etiquetado con un nuevo comando \mylabel. Aquí está el 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}

esto es lo que tengo ingrese la descripción de la imagen aquí

El problema es que el nombre es demasiado largo y no cabe en una línea del título del marco y la línea no se divide. Creo que falta algo en el comando \mylabel. Pero no sé qué.

Gracias por cualquier ayuda

Respuesta1

El título y los nombres de las secciones son lo que se conoce como argumentos en movimiento y las macros que contienen deben protegerse de los malos augurios y del clima holandés. (Lectura adicional si está interesado:¿Por qué utilizar \DeclareTextFontCommand en lugar de simplemente \newcommand?) Compílalo dos veces

\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}

ingrese la descripción de la imagen aquí

información relacionada