如何自定义框架标题、副标题、正文的位置和字体

如何自定义框架标题、副标题、正文的位置和字体

我正在使用类为演示幻灯片编写一个乳胶模板beamer

我想设计任意帧的标题和副标题的样式,包括颜色、字体大小和位置。我不知道如何针对beamer标题和副标题对象具体调整参数,所以我textblock在 部分定义了两个\defbeamertemplate*

我还想将主文本设置在3.5 cm幻灯片顶部边缘的下方。

下面我给出了我的代码。结果并不好。因为如果我在正文中添加更多内容,正文的第一行会移动到上方,并与标题和副标题行重叠,请参见下面的两个屏幕截图。

您知道如何将正文的第一行保持在3.5 cm幻灯片顶部边缘以下吗?使用文本块作为标题和副标题可能一点也不优雅。欢迎提出任何建议。

\documentclass{beamer}

\usepackage[absolute,overlay]{textpos}

\defbeamertemplate*{frametitle}{}[1][]
{
    \begin{textblock*}{12cm}(0.5cm,1cm)
    {\color{gray} \fontsize{36}{43.2} \selectfont \insertframetitle}
    \end{textblock*}
    \begin{textblock*}{12cm}(0.5cm,2.5cm)
    {\color{gray} \fontsize{20}{24} \selectfont \insertframesubtitle}
    \end{textblock*}
}

\begin{document}

\begin{frame} 
\frametitle{Bulleting and Number} 
\framesubtitle{As An Example}    
This is line should be 3.5 cm below the top edge of the slide.
    \begin{itemize} 
    \item adfas
        \begin{itemize}
        \item afdfa
            \begin{itemize}
            \item adfadsfa
            \item adsfa
            \end{itemize}    
        \end{itemize}
    \end{itemize}

    This is how to add numbered list.
    \begin{enumerate}
        \item Use number
        \item Another number
        \begin{enumerate}[I]
            \item Use Letter
            \item Another letter
            \begin{enumerate}[a]
                \item Use 
                \item Use
            \end{enumerate}
        \end{enumerate}
    \end{enumerate}
\end{frame}

\end{document}

在此处输入图片描述 在此处输入图片描述

答案1

我不会textblock采用传统的 beamer 方式,而是将 frametitle 放在 内beamercolorbox。要调整垂直位置以满足您的要求,请修改 s 的值\vskip

\documentclass{beamer}

\usepackage[absolute,overlay]{textpos}

\setbeamerfont{frametitle}{size=\fontsize{36}{43.2}}
\setbeamerfont{framesubtitle}{size=\fontsize{20}{24}}
\setbeamercolor{frametitle}{fg=gray}
\setbeamercolor{framesubtitle}{fg=gray}

\makeatletter
\setbeamertemplate{frametitle}{%
  \ifbeamercolorempty[bg]{frametitle}{}{\nointerlineskip}%
  \@tempdima=\textwidth%
  \advance\@tempdima by\beamer@leftmargin%
  \advance\@tempdima by\beamer@rightmargin%
  \begin{beamercolorbox}[sep=0.5cm,left,wd=\the\@tempdima]{frametitle}
    \usebeamerfont{frametitle}%
    \vbox{}\vskip-0.25ex%
    \if@tempswa\else\csname beamer@fteleft\endcsname\fi%
    \strut\insertframetitle\strut\par%
    {%
      \ifx\insertframesubtitle\@empty%
      \else%
      {\usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\insertframesubtitle\strut\par}%
      \fi
    }%
    \vskip-1ex%
    \if@tempswa\else\vskip-.3cm\fi% set inside beamercolorbox... evil here...
  \end{beamercolorbox}%
}
\makeatother

\begin{document}

\begin{frame} 
\frametitle{Bulleting and Number} 
\framesubtitle{As An Example}    
This is line should be 3.5 cm below the top edge of the slide.
    \begin{itemize} 
    \item adfas
        \begin{itemize}
        \item afdfa
            \begin{itemize}
            \item adfadsfa
            \item adsfa
            \end{itemize}    
        \end{itemize}
    \end{itemize}

    This is how to add numbered list.
    \begin{enumerate}
        \item Use number
        \item Another number
        \begin{enumerate}[I]
            \item Use Letter
            \item Another letter
            \begin{enumerate}[a]
                \item Use 
                \item Use
            \end{enumerate}
        \end{enumerate}
    \end{enumerate}
\end{frame}

\end{document}

在此处输入图片描述

相关内容