
Necesito hacer referencia \frametitle
a 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
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}