Estoy intentando construir un beamer theme. Me gustaría que frametitlese ejecutara a lo largo del margen izquierdo del archivo frame. Entonces escribo este MWE
\documentclass{beamer}
\title{Title}
\author{John Smith}
\date{\today}
\usepackage{tikz}
\setbeamertemplate{frame numbering}{\insertframenumber}
\defbeamertemplate{frametitle}{plain}{%
\nointerlineskip%
\rotatebox[origin=c]{90}{\begin{beamercolorbox}[%
wd=\paperheight,%
sep=0pt,%
leftskip=0cm,%
rightskip=1cm,%
]{frametitle}%%
\begin{tikzpicture}[baseline={(0,0)}]
\fill[fg] (0,.5ex-1.5pt) rectangle (.1*\paperheight,.5ex+1.5pt);
\end{tikzpicture}%
\insertframetitle%
\nolinebreak%%
\hfill
\rotatebox[origin=c]{270}{\usebeamertemplate*{frame numbering}}%
\end{beamercolorbox}}%
}
\setbeamertemplate{frametitle}[plain]
\begin{document}
\begin{frame}[t]{Frame Title}
\end{frame}
\end{document}
lo que produce el siguiente resultado
Esto no funciona por dos razones principales: (1) frametitleno está exactamente en el margen izquierdo, pero hay algo de espacio, (2) el contenido se mueve después del frametitle. ¿Hay alguna manera de resolver estos dos problemas? Prefiero no usarlo overlay/remember picture del tikzpaquete.
LO QUE INTENTÉ
Intenté modificar la sidebar leftplantilla en lugar de la frametitleplantilla. Este enfoque tiene algunos problemas: (1) se sobrescribe \useoutertheme{sidebar}o al menos lo sobrescribe, no se coloca al lado de él, (2) el ancho de la barra lateral no cambia con el contenido, un título largo puede superponerse con el contenido (3) cambia el margen en el archivo titlepage.
Respuesta1
-
(1) el título del marco no está exactamente en el margen izquierdo, pero hay algo de espacio
mueve la casilla dejada por
\beamer@leftmargin -
(2) el contenido se mueve después del título del marco
Puedes asegurarte de que el cuadro de título no ocupe espacio vertical (y por lo tanto empuje el cuerpo del marco hacia abajo) rompiendo el cuadro.
-
(2) el ancho de la barra lateral no cambia con el contenido, un título largo puede superponerse con el contenido
esto no se aborda en la solución siguiente. Si desea que el título del marco influya en el ancho del área de texto, es posible que deba reescribir cómo Beamer construye sus marcos...
¿Quizás un enfoque más sencillo sería aumentar el margen izquierdo del texto para que quepa en dos líneas de título del marco?
Es posible que algunos de los números en el código siguiente necesiten un poco de ajuste...
\documentclass{beamer}
\title{Title}
\author{John Smith}
\date{\today}
\usepackage{tikz}
\setbeamertemplate{frame numbering}{\insertframenumber}
\makeatletter
\defbeamertemplate{frametitle}{plain}{%
\hspace{-\beamer@leftmargin}%
\smash{\rotatebox[origin=tr]{90}{\begin{beamercolorbox}[%
wd=\paperheight,%
sep=0pt,%
leftskip=0cm,%
rightskip=0cm,%
vmode
]{frametitle}%%
\hspace*{0.1em}
\parbox[t]{.85\linewidth}{%
\begin{tikzpicture}[baseline={(0,0)}]
\fill[fg] (0,.5ex-1.5pt) rectangle (.1*\paperheight,.5ex+1.5pt);
\end{tikzpicture}%
\strut\insertframetitle}%
\hfill
\parbox{.1\linewidth}{\hfill\rotatebox[origin=c]{270}{\usebeamertemplate*{frame numbering}}\hspace{0.35em}\mbox{}}%
\end{beamercolorbox}}}%
\vskip-1.47em
}
\makeatother
\setbeamertemplate{frametitle}[plain]
\begin{document}
\begin{frame}[t]{Frame Title}
ghds
\end{frame}
\begin{frame}[t]
ghds
\end{frame}
\begin{frame}[t]{Frame Title which is terrible long and occupies two line}
ghds
\end{frame}
\begin{frame}[t]{Frame Title}
ghds
\end{frame}
\end{document}




