Posição do título do quadro para um tema beamer

Posição do título do quadro para um tema beamer

Estou tentando construir um beamer theme. Eu gostaria que o arquivo frametitlecorresse ao longo da margem esquerda do arquivo frame. Então eu escrevo 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}

que produz o seguinte resultado

insira a descrição da imagem aqui

Isso não funciona por dois motivos principais: (1) o frametitlenão está exatamente na margem esquerda, mas há algum espaço, (2) o conteúdo se move após o frametitle. Existe uma maneira de resolver esses dois problemas? Prefiro não usar overlay/remember picture do tikzpacote.

O QUE EU TENTEI Tentei modificar o sidebar leftmodelo em vez do frametitlemodelo. Esta abordagem tem alguns problemas: (1) é sobrescrita \useoutertheme{sidebar}ou pelo menos sobrescrita, não é colocada próxima a ela, (2) a largura da barra lateral não muda com o conteúdo, um título longo pode se sobrepor ao conteúdo (3) altera a margem no arquivo titlepage.

Responder1

  • (1) o título do quadro não está exatamente na margem esquerda, mas há algum espaço

    mova a caixa para a esquerda\beamer@leftmargin

  • (2) o conteúdo se move após o frametitle

    você pode ter certeza de que a caixa de título não ocupa espaço vertical (e, portanto, empurrando o corpo do quadro para baixo) quebrando a caixa

  • (2) a largura da barra lateral não muda com o conteúdo, um título longo pode se sobrepor ao conteúdo

    isso não é abordado na solução abaixo. Se você quiser que o título do quadro influencie a largura da área de texto, talvez seja necessário reescrever como o beamer constrói seus quadros...

    Talvez uma abordagem mais fácil seria aumentar a margem esquerda do texto para que caiba em duas linhas do título do quadro?

Alguns dos números no código abaixo podem precisar de alguns ajustes...

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

insira a descrição da imagem aqui

informação relacionada