如何在 beamer/beamerposter 中将块与全宽块对齐?

如何在 beamer/beamerposter 中将块与全宽块对齐?

这是 pdflatex 的输入(无论 Debian/squeeze 上的 texlive 版本是什么)

\documentclass{beamer}

\usepackage[orientation=portrait,size=a3,scale=0.9]{beamerposter}
\usepackage{lipsum}

\beamertemplategridbackground[0.5cm]
\setbeamertemplate{background canvas}[vertical shading][bottom=gray,top=white]

\setbeamercolor*{block body}{bg=white,fg=black}
\setbeamercolor*{block title}{fg=white,bg=blue}
\setbeamerfont{block title}{size=\Large}

\begin{document}

\begin{frame}

  \begin{block}{Introduction}
    \lipsum[1]
  \end{block}

  \begin{columns}[t]

    \begin{column}{.5\textwidth}
      \begin{block}{Problems are inevitable}
        \lipsum[2]
      \end{block}
    \end{column}

    \begin{column}{.5\textwidth}
      \begin{block}{Problems are soluble}
        \lipsum[3]
      \end{block}
    \end{column}

  \end{columns}

  \begin{block}{Conclusion}
    \lipsum[4]
  \end{block}

  \vfill

\end{frame}

\end{document}

产生以下输出:

给定代码的输出

现在,显然,为每列放置0.5\textwidth(或0.5\linewidth) 会太宽,因为它没有考虑任何列间距或边距,因此它无法与上下非列全宽块很好地对齐也就不足为奇了。但是,我不清楚我可以/应该在那里指定什么来实现该结果。

我目前的解决方法是摆弄宽度直到它看起来足够好(网格有帮助),但肯定有更好的方法。

我的问题是,我应该为列宽设置多少才能神奇地使列块的外边缘与全宽非列块和谐一致? 是否有可以从其他投影仪参数计算出来并起作用的东西?

更新 2012-10-06:对此进行了更深入的研究。评论这个问题在这里回答让我认为一个令人满意的解决方案将需要一个新的列环境定义,或者以某种方式修改投影仪。

答案1

环境columns可以采用相当多的可选参数,其中一个是我在下面的解决方案中totalwidth指定的。\linewidth

输出如下

截屏

我借用了 Stefan 的解决方案更改投影仪中块的默认宽度定义一个varwidth块,允许您指定环境的宽度block

这确实会导致,overfull hbox所以这个解决方案可能并不理想;如果有人可以改进它,我会删除这个答案。如果你的演讲是明天,那么这个会起作用 :)

\documentclass{beamer}

\usepackage[orientation=portrait,size=a3,scale=0.9]{beamerposter}
\usepackage{lipsum}

\beamertemplategridbackground[0.5cm]
\setbeamertemplate{background canvas}[vertical shading][bottom=gray,top=white]

\setbeamercolor*{block body}{bg=white,fg=black}
\setbeamercolor*{block title}{fg=white,bg=blue}
\setbeamerfont{block title}{size=\Large}

\newenvironment<>{varblock}[2][.9\textwidth]{%
  \setlength{\textwidth}{#1}
  \begin{actionenv}#3%
    \def\insertblocktitle{#2}%
    \par%
    \usebeamertemplate{block begin}}
  {\par%
    \usebeamertemplate{block end}%
  \end{actionenv}}

\begin{document}

\begin{frame}

  \begin{block}{Introduction}
    \lipsum[1]
  \end{block}

  \begin{columns}[t,totalwidth=\linewidth]
    \begin{column}{.5\linewidth}
      \begin{varblock}{Problems are inevitable}
        \lipsum[2]
      \end{varblock}
    \end{column}
    \begin{column}{.5\linewidth}
      \begin{varblock}[\textwidth]{Problems are soluble}
        \lipsum[3]
      \end{varblock}
    \end{column}
  \end{columns}

  \begin{block}{Conclusion}
    \lipsum[4]
  \end{block}

  \vfill

\end{frame}
\end{document}

相关内容