Beamer 테마 신비한 \hbox overfull

Beamer 테마 신비한 \hbox overfull

커스텀 비머 테마를 작성하려고 합니다. 고정 크기 비머 색상 상자에서 제목과 제목+부제목을 모두 세로 중앙에 맞추려고 하다가 프레임 제목에 문제가 생겼습니다. 다른 사람들의 몇 가지 솔루션을 결합하여 \ifx\insertframesubtitle\@empty및 의 조합에 도달했습니다 \vbox to 6ex{ \vfil. 지금 내가 원하는 것과 똑같아 보이지만 \hbox overfull각 프레임마다 생성됩니다. 또 다른 작은 문제는 타이틀 버전에 6ex를, 타이틀+자막 버전에 6.05를 수동으로 넣어서 정확히 같은 크기가 되도록 해야 한다는 것입니다(이유는 모르겠습니다). 좀 더 우아한 솔루션을 원합니다.

도움을 주시면 감사하겠습니다!

주요 파일:

\documentclass{beamer}

\usetheme{TEST}

\begin{document}

\begin{frame}{Frame}
\end{frame}

\begin{frame}{Frame Title}{Subtitle}
\end{frame}

\end{document}

beamerthemeTEST.sty :

\mode<presentation>

\definecolor{salmon}{RGB}{240, 145, 145}
\setbeamercolor{frametitle}{fg=white, bg=salmon}
\setbeamerfont{frametitle}{size=\LARGE}
\setbeamerfont{framesubtitle}{size=\normalsize}

\defbeamertemplate*{frametitle}{}[1][]
{
    \nointerlineskip%
    \ifx\insertframesubtitle\@empty%
        \begin{beamercolorbox}[wd=\paperwidth, left, leftskip = 1ex]{frametitle}%
           \vbox to 6ex{%
            \vfil%
            \usebeamerfont{frametitle}\strut\insertframetitle%
            \vfil}%
        \end{beamercolorbox}%
    \else%
        \begin{beamercolorbox}[wd=\paperwidth, left, leftskip=1ex, rightskip=4ex]{frametitle}%
            \vbox to 6.05ex{%
            \vfil%
            \usebeamerfont{frametitle}\strut\insertframetitle\\%
            \usebeamerfont{framesubtitle}\strut\insertframesubtitle%
            \vfil}%
        \end{beamercolorbox}%
    \fi%
}
\mode<all>

편집: 기본 파일 내부에 프레임 제목을 정의하면 제목 전용 프레임의 제목이 위로 이동합니다(가운데에 위치하지 않음).

EDIT2: hbox overfull에 대한 다음 솔루션을 찾았습니다(메커니즘이 명확하지 않고 관련이 있음 \vbox to).

\begin{beamercolorbox}[wd=\paperwidth, left]{frametitle}%
    \vbox to 40pt{\vfil%     
    \usebeamerfont{frametitle}\hspace{10pt}\strut\insertframetitle%
    \vfil}%
\end{beamercolorbox}%

.\vbox to

답변1

상자가 가득 차지 않도록 전체 용지 너비에 걸쳐 프레임 제목을 만드는 방법에 대한 기본 프레임 제목 템플릿에서 영감을 얻을 수 있습니다.

\documentclass[11pt]{beamer}

\makeatletter
\setbeamertemplate{frametitle}{%
  \ifbeamercolorempty[bg]{frametitle}{}{\nointerlineskip}%
  \@tempdima=\textwidth%
  \advance\@tempdima by\beamer@leftmargin%
  \advance\@tempdima by\beamer@rightmargin%
  % changed code from here
  \begin{beamercolorbox}[sep=0cm,left,wd=\the\@tempdima,leftskip=0.5cm,rightskip=0.5cm]{frametitle}
    \begin{minipage}[c][2cm][c]{\textwidth}
      \usebeamerfont{frametitle}%
      \strut\insertframetitle\strut\par
      \ifx\insertframesubtitle\@empty%
      \else
        {\usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\strut\insertframesubtitle\strut\par}%
      \fi
    \end{minipage}
  \end{beamercolorbox}%
}
\makeatother

\setbeamerfont{frametitle}{size=\LARGE}
\setbeamerfont{framesubtitle}{size=\normalsize}

\definecolor{salmon}{RGB}{240, 145, 145}
\setbeamercolor{frametitle}{fg=white, bg=salmon}

\begin{document}

\begin{frame}
\frametitle{Frame}
test
\end{frame}

\begin{frame}
\frametitle{Frame Title}
\framesubtitle{Subtitle}  
test
\end{frame}

\begin{frame}
content...
\end{frame}

\end{document}

여기에 이미지 설명을 입력하세요 여기에 이미지 설명을 입력하세요

관련 정보