を構築しようとしています。を の左端に沿って表示しbeamer themeたいです。そこで、この MWE を書きます。frametitleframe
\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}
これは次の結果をもたらす
これは主に 2 つの理由で機能しません: (1) はframetitle左余白にぴったりと収まらず、いくらかのスペースがあります。(2) コンテンツは の後に動きます。この 2 つの問題を解決する方法はありますか?パッケージ からのframetitle使用は避けたいです。overlay/remember picturetikz
私が試したことsidebar leftテンプレートの代わりにテンプレート を変更しようとしましたframetitle。このアプローチにはいくつか問題があります: (1) 上書きされる\useoutertheme{sidebar}か、少なくとも上書きされ、隣に配置されません。(2) サイドバーの幅はコンテンツによって変化せず、長いタイトルはコンテンツと重なる可能性があります。(3) の余白が変更されますtitlepage。
答え1
-
(1)フレームタイトルは左端にぴったりと収まらず、若干のスペースがある
ボックスを左に動かす
\beamer@leftmargin -
(2)コンテンツはフレームタイトルの後に移動する
タイトルボックスが垂直方向のスペースを占有しないように(フレーム本体を押し下げないように)するには、ボックスを潰します。
-
(2)サイドバーの幅はコンテンツに応じて変化しないため、長いタイトルはコンテンツと重なってしまう可能性がある。
これは、以下のソリューションでは対処されていません。フレームタイトルがテキスト領域の幅に影響を与えるようにしたい場合は、beamer がフレームを構築する方法を書き直す必要があるかもしれません...
おそらくもっと簡単な方法は、フレームタイトルの 2 行が収まるように左のテキスト余白を増やすことでしょうか?
以下のコード内のいくつかの数値は、少し微調整する必要があるかもしれません...
\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}




