投影機主題的框架標題位置

投影機主題的框架標題位置

我正在嘗試構建一個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 從包裝中使用tikz

我嘗試過的 我嘗試修改sidebar left模板而不是frametitle模板。這種方法有一些問題:(1)它被覆蓋\useoutertheme{sidebar}或至少被覆蓋,它沒有放置在它旁邊,(2)側邊欄的寬度不隨內容變化,長標題可能會與內容重疊content (3) 它改變了titlepage.

答案1

  • (1)frametitle不剛好在左邊距,而是有些空格

    將框向左移動\beamer@leftmargin

  • (2)內容移動到frametitle之後

    您可以透過粉碎標題框來確保標題框不佔用垂直空間(從而將框架主體向下推)

  • (2)側邊欄的寬度不隨內容變化,過長的標題可能會與內容重疊

    下面的解決方案中沒有解決這個問題。如果您希望框架標題影響文字區域的寬度,您可能必須重寫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}

在此輸入影像描述

相關內容