如何在 \frametitle 中使用 \mylabel

如何在 \frametitle 中使用 \mylabel

我需要參考\frametitle我用新命令標記的部分\mylabel。這是程式碼

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

這就是我所擁有的 在此輸入影像描述

問題是名稱太長,無法容納在 FrameTitle 的一行中,且該行不會中斷。我認為命令中缺少某些內容\mylabel。但我不知道是什麼。

感謝您的任何幫助

答案1

標題和部分名稱就是所謂的移動參數,並且應保護其中的巨集免受壞兆頭和荷蘭天氣的影響。 (如果有興趣,請額外閱讀:為什麼使用 \DeclareTextFontCommand 而不是僅使用 \newcommand?) 編譯兩次

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

在此輸入影像描述

相關內容