列跨越 beamer footline 中的 \paperwidth

列跨越 beamer footline 中的 \paperwidth

在下面的代码中

\documentclass{beamer}
\makeatletter
\setbeamertemplate{footline}{
  \leavevmode
    \begin{beamercolorbox}[wd=\paperwidth, ht=4ex, left]{author in head/foot}%                                                                                                                              
      \usebeamerfont{author in head/foot}
      \begin{tabular}{|p{0.5\paperwidth}|p{0.5\paperwidth}|}
        entry00 & entry01
      \end{tabular}
    \end{beamercolorbox}%                                                                                                                                                                                   
}
\makeatother

\begin{document}
\begin{frame}
  frame contents
\end{frame}
\end{document}

我尝试在投影仪脚注中创建一个表格,以跨越投影仪框架的宽度。结果并不令人满意,因为我看不到表格的最右边距:

在此处输入图片描述

如何修复解决方案?

答案1

您的代码只有两处错误:

  1. 后面有一个额外的隐式空格。我通过在其后\hbox{添加一个来修复它。%
  2. 0.5\paperwidth文本的宽度。它不包括将\tabcolsep文本与垂直规则分开的。我已将其设置为零,以使列正好为0.5\paperwidth

此外,正如您自己指出的那样,显然没有必要\hbox,因此我将其删除了

代码:

\documentclass{beamer}
\makeatletter
\setbeamertemplate{footline}{
  \leavevmode
  \begin{beamercolorbox}[wd=\paperwidth, ht=4ex, left]{author in head/foot}
    \usebeamerfont{author in head/foot}
    \setlength{\tabcolsep}{0pt}
    \begin{tabular}{|p{0.5\paperwidth}|p{0.5\paperwidth}|}
      entry00 & entry01
    \end{tabular}
  \end{beamercolorbox}%
}
\makeatother

\begin{document}
\begin{frame}
  frame contents
\end{frame}
\end{document}

第二个问题的另一种选择是减少列的宽度以2\tabcolsep使其适合,如下所示:

\documentclass{beamer}
\makeatletter
\setbeamertemplate{footline}{
  \leavevmode
  \begin{beamercolorbox}[wd=\paperwidth, ht=4ex, left]{author in head/foot}
    \usebeamerfont{author in head/foot}
    \begin{tabular}{|p{\dimexpr0.5\paperwidth-2\tabcolsep}|p{\dimexpr0.5\paperwidth-2\tabcolsep}|}
      entry00 & entry01
    \end{tabular}
  \end{beamercolorbox}%
}
\makeatother

\begin{document}
\begin{frame}
  frame contents
\end{frame}
\end{document}

第二种选择看起来更好,因为文本不会超出垂直线。但如果你必须让文本运行,0.5\paperwidth那么第一个就是你想要的。

答案2

我不会使用表格将不同的字段并排放置在页脚中。在普通的 Beamer 主题中,只需将几个beamercolorbox字段并排放置即可实现此效果:

\documentclass{beamer}

\makeatletter
\setbeamertemplate{footline}{%
  \leavevmode%
  \hbox{%
  \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.25ex,dp=1ex,center]{author in head/foot}%
    \usebeamerfont{author in head/foot}\insertshortauthor\expandafter\ifblank\expandafter{\beamer@shortinstitute}{}{~~(\insertshortinstitute)}
  \end{beamercolorbox}%
  \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.25ex,dp=1ex,center]{title in head/foot}%
    \usebeamerfont{title in head/foot}\insertshorttitle
  \end{beamercolorbox}%
    }%
  \vskip0pt%
}
\makeatother

\author{names}
\title{title}

\begin{document}
\begin{frame}
  frame contents
\end{frame}
\end{document}

根据您实际要添加到脚注的内容,hackthefootline可能是一个简单的替代方法:

\documentclass{beamer}
\usepackage[twocols]{hackthefootline}

\author{names}
\title{title}

\begin{document}
\begin{frame}
  frame contents
\end{frame}
\end{document}

相关内容