beamer: Как добавить новую опцию для среды кадра

beamer: Как добавить новую опцию для среды кадра

В некоторых кадрах я хочу, чтобы заголовок был повернут в левую сторону кадра. Это чаще случается в форматах 16x9.

Как мне переопределить окружение фрейма, чтобы добавить опцию, которая позволит мне это сделать. Если эта новая опция не используется, применяется исходное поведение фрейма.

Что-то вроде этого:

\documentclass{beamer}
\begin{document}

\begin{frame}[rotatetitle]
  \frametitle{My Rotated Title}
\end{frame}
\end{document}

введите описание изображения здесь

Это также может быть опция команды \frametitle{}.

Хотя я мог бы решить эту конкретную проблему с помощью нового варианта команды \frametitle (что я сейчас и делаю), у меня есть несколько дополнительных поведений фрейма, которые я хотел бы включать и выключать с помощью опций. Например: сделать ширину текста шире и отключить нижнюю линию. Поэтому я ищу общий механизм для добавления опций и дополнительного поведения в среду \frame, при этом сохраняя все поведение по умолчанию и существующие опции, такие как хрупкость. Каким может быть такой механизм?

--Аксель

решение1

Вы можете использовать ту же технику, что и вhttps://topanswers.xyz/tex?q=1163#a1370

\documentclass[aspectratio=169,t]{beamer}

\usepackage{tikz}

\defbeamertemplate*{frametitle}{regular}{\insertframetitle}
\defbeamertemplate{frametitle}{rotated}{%
\begin{tikzpicture}[remember picture,overlay]
  \node[rotate=90,anchor=north east] at (current page.north west) {\insertframetitle};
\end{tikzpicture}%
}


\makeatletter
\providebool{rotatedframe}
\define@key{beamerframe}{rotated}[true]{
  \booltrue{rotatedframe}
  \begingroup
  \setbeamertemplate{frametitle}[rotated]
}

\apptocmd{\beamer@reseteecodes}{%
  \ifbool{rotatedframe}{%
    \endgroup
    \boolfalse{rotatedframe}
  }{}
}{}{}
\makeatother

\begin{document}

\begin{frame}
\frametitle{normal title}
This page shall have the regular frametitle
\end{frame}

\begin{frame}[rotated]
\frametitle{rotated title}
This page shall have the special frametitle
\end{frame}

\begin{frame}
\frametitle{normal title}
This page shall have the regular frametitle
\end{frame}
\end{document}

Связанный контент