投影仪幻灯片上 frametitle 和 framesubtitle 下方的水平线

投影仪幻灯片上 frametitle 和 framesubtitle 下方的水平线

很长一段时间以来,我一直使用 tikz 来解决这个问题。
我有一些代码可以根据 frametitle(包括换行符)和 framesubtitle(如果存在)的高度来计算高度。然后我使用 tikz 在这个计算出的高度画一条线。我现在发现自己需要使用 tikzexternalize,如果碰巧有多个 tikz 图片,那么框架内容和 tikz 图像就会丢失。

所以,问题是,如何在不使用 tikz 的情况下在框架上的指定高度(相对于顶部)绘制定义宽度和颜色的水平线?这是我以前做过的方法。

\newcommand{\topline}{%
  \calculateLengths{0}
  \tikz[remember picture,overlay] {%
    \draw[riceBlue] ([yshift=-\contentheadheight+6pt,xshift=2cm]current page.north west)
                 -- ([yshift=-\contentheadheight+6pt,xshift=\paperwidth-2cm]current page.north west);
  }%
}

calculateLengths 命令找到了 frametitle 和 framesubtitle 的下边缘。

答案1

beamercolorboxbeamer 的方式是在 frametitle 模板的末尾使用一个空的。可以使用通常的\setbeamercolor机制调整颜色,并通过修改中的值来调整线条的粗细colsep=1.5pt

\documentclass[xcolor={dvipsnames},aspectratio=1610]{beamer}

\setbeamercolor{lower separation line head}{bg=red}

\makeatletter
\setbeamertemplate{frametitle}{%
  \nointerlineskip%
    \vskip0.3cm%
   \begin{beamercolorbox}[wd=\paperwidth,leftskip=.3cm,rightskip=.3cm plus1fil,vmode]{frametitle}%
        \begin{minipage}{2cm}%
            \includegraphics[height=1.2cm]{example-image-a}%
        \end{minipage}%
        \begin{minipage}{\dimexpr\paperwidth-4.6cm\relax}%
    \usebeamerfont*{frametitle}\insertframetitle%
      \ifx\insertframesubtitle\@empty%
        \strut\par%
      \else
        \par{\usebeamerfont*{framesubtitle}{\usebeamercolor[fg]{framesubtitle}\insertframesubtitle}\strut\par}%
      \fi%%
        \end{minipage}%
        \begin{minipage}{2cm}%
            \hfill
            \includegraphics[height=1.2cm]{example-image-b}%
        \end{minipage}%
  \end{beamercolorbox}%
  \vskip1ex
  \begin{beamercolorbox}[colsep=1.5pt,wd=\paperwidth]{lower separation line head}
  \end{beamercolorbox}
}
\makeatother

\usepackage{tikz}

\begin{document}

\begin{frame}
    \frametitle{title}
\end{frame}

\begin{frame}
    \frametitle{multiline very very very very very very very very very long title}
    \framesubtitle{title}
\end{frame}

\begin{frame}
    \frametitle{title}
    \framesubtitle{title}
\end{frame}

\end{document}

在此处输入图片描述

相关内容