投影仪主题的框架标题位置

投影仪主题的框架标题位置

我正在尝试构建一个beamer theme。我希望frametitle沿着 的左边距运行frame。所以我写了这个 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}

产生以下结果

在此处输入图片描述

这不起作用,主要有两个原因:(1)frametitle不完全在左边距,但有一些空间,(2)内容移动到 之后frametitle。 有没有办法解决这两个问题? 我不喜欢使用overlay/remember picture fromtikz包。

我尝试过 我尝试修改sidebar left模板而不是修改frametitle模板。这种方法存在一些问题:(1)它被覆盖\useoutertheme{sidebar}或至少覆盖了它,它没有放在它旁边,(2)侧边栏的宽度不会随着内容而变化,长标题可能会与内容重叠(3)它会更改 中的边距titlepage

答案1

  • (1)frametitle 并不完全位于左边距,但有一些空间

    将框向左移动\beamer@leftmargin

  • (2)内容在frametitle之后移动

    你可以通过粉碎框来确保标题框不占据垂直空间(从而将框架主体向下推)

  • (2)侧边栏的宽度不会随着内容而变化,较长的标题可能会与内容重叠

    以下解决方案并未解决此问题。如果您希望 frametitle 影响文本区域的宽度,则可能必须重写 beamer 构建其框架的方式...

    也许更简单的方法是增加左边距以便它可以容纳两行框架标题?

下面代码中的某些数字可能需要稍微微调一下……

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

在此处输入图片描述

相关内容