如何修改投影仪中块内的逐项垂直间距?

如何修改投影仪中块内的逐项垂直间距?

我注意到,当我在 beamer 中的块内定义“itemize”环境时,它们会在块的顶部和底部之间引入比垂直文本更多的垂直间距。由于我的幻灯片中有一些文本填充的块,紧接着是一张只有“itemize”块的幻灯片,因此我希望分项文本和块之间的间距与常规文本相同。

这个问题我已经阅读过有关“挤压”选项的信息,但它似乎不起作用......

附加信息

问题在于“\itemize”环境包含的额外垂直空间。我发现这个答案关于如何从 itemize 列表中删除垂直间距,我正在使用这种方法。但是,这是一种蛮力方法。我想知道是否可以在 itemize 列表的末尾和块的底部之间设置与在普通文本和块底部之间设置的相同的垂直间距。

梅威瑟:

\documentclass[10pt]{beamer}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{exscale}
\usepackage{epsfig}
\usepackage{fancybox}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{overpic}

\usepackage{multimedia}

\usetheme{default}
\usecolortheme{crane}

% -- Modifications that enable the footline and set black color for the fonts 
\setbeamertemplate{footline}{%
    \begin{beamercolorbox}[wd=\paperwidth,ht=2.25ex,dp=1ex,right, rightskip=1mm, leftskip=1mm]{titlelike}
        \textcolor{black}{
            %\inserttitle\hfill\insertauthor\hfill\insertframenumber%
            Something\hfill Something Else \hfill\insertframenumber%
        }
    \end{beamercolorbox}
}

\setbeamertemplate{itemize items}[square]

\setbeamercolor{item}{fg=black}
\setbeamercolor{frametitle}{fg=black}
\setbeamercolor{block title}{fg=black}
\setbeamercolor{title}{fg=black}
\setbeamercolor{block body}{bg=white}

% END Modifications

\begin{document}


\begin{frame}
  \frametitle{text blocks}
    \begin{block}{block}
        block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   blockk
    \end{block}{block} 
    \begin{block}
        block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block
    \end{block}
    \begin{block}{block}
        block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block
    \end{block}
\end{frame}

\begin{frame}
  \frametitle{itemize blocks}
    \begin{block}{item}
        \begin{itemize}
            \item item 
            \item item 
            \item item
        \end{itemize}
    \end{block}
    \begin{block}{item}
        \begin{itemize}
            \item item 
            \item item 
            \item item
        \end{itemize}
    \end{block}
    \begin{block}{item}
        \begin{itemize}
            \item item 
            \item item 
            \item item
        \end{itemize}
    \end{block}


\end{frame}

\end{document}

答案1

在这种情况下,会发生两件事。对于那些了解 LaTeX 列表参数的人来说,\topsep在 itemize 列表之前会添加一个。另一个是,此项目以垂直模式开始,因此\partopsep也会添加一个。

因此,在这种情况下,我们需要做两件事:(1)\topsep通过重新定义将列表设置为零\@listi,(2)清除\partopsep

最好的方法是将其添加到block begin模板中。这是一个基于代码要点的示例。

\documentclass[10pt]{beamer}
\usepackage{lmodern}
\usepackage[T1]{fontenc}

\usetheme{default}
\usecolortheme{crane}

\setbeamertemplate{itemize items}[square]

\setbeamercolor{item}{fg=black}
\setbeamercolor{frametitle}{fg=black}
\setbeamercolor{block title}{fg=black}
\setbeamercolor{title}{fg=black}
\setbeamercolor{block body}{bg=white}

\makeatletter
\addtobeamertemplate{block begin}{
\def\@listi{\leftmargin\leftmargini
              \topsep    0pt
              \parsep    0pt
              \itemsep   3pt plus 2pt minus 3pt}
\partopsep 0pt
}
\makeatother

\begin{document}


\begin{frame}
  \frametitle{text vs. item blocks}
  \begin{columns}[t]
    \begin{column}{0.42\textwidth}
      \begin{block}{text block}
        block block block block block\vadjust{\hrule}
        block block block block block 
        block block block block block 
        block block block block block 
      \end{block}
    \end{column}
    \begin{column}{0.48\textwidth}
      \begin{block}{item block}
        \begin{itemize}
        \item item\vadjust{\hrule}
        \item item
        \item item
        \end{itemize}
      \end{block}
    \end{column}
  \end{columns}
\end{frame}

\end{document}

示例输出

我将这些块并排放置,并添加了\vadjust{\hrule}用于说明目的。的值\@listi基于 beamer 的默认值,即

\def\@listi{\leftmargin\leftmargini
            \topsep 3\p@ \@plus2\p@ \@minus2.5\p@
            \parsep 0\p@
            \itemsep3\p@ \@plus2\p@ \@minus3\p@}

\partopsep有默认值

2.0pt plus 1.0pt minus 1.0pt

如果您希望各行匹配,那么您还应该在上面的代码中放入\itemsep等于。0pt

请注意,如果两个块的标题具有不同的高度/深度,则主体将相应地移动,您将再次失去对齐。您可以通过在块标题中添加适当的支柱来稍微掩盖一下。

请注意,上述代码也会终止同一块内\topsep后续使用itemize。如果这是一个问题,您可以尝试进行调整\partopsep以取消\topsep并确保块中的后续列表不会以垂直模式启动。

答案2

你好,我不太确定这是否真的是一个答案,但它以某种方式解决了问题。我对 MWE 的评论出现了,因为我从不使用默认主题。我发现,\setbeamertemplate{blocks}[rounded]在序言中使用只会使与块边界的分离保持一致。我还发现那些圆角块的绘制方式不同。但这在这里行不通,因为它没有要求不同的块。所以在绝望中我只是做了以下事情:

\documentclass[10pt]{beamer}

\usetheme{default}
\usecolortheme{crane}


\setbeamertemplate{block begin}%{default}
{
  \par\vskip\medskipamount%
    \begin{beamercolorbox}[colsep*=.75ex]{block title}
    \usebeamerfont*{block title}\insertblocktitle%
  \end{beamercolorbox}%
  {\parskip0pt\par}%
  \ifbeamercolorempty[bg]{block title}
  {}
  {\ifbeamercolorempty[bg]{block body}{}{\nointerlineskip\vskip-0.5pt}}%
  \usebeamerfont{block body}%
  \begin{beamercolorbox}[colsep*=.75ex,vmode, sep=.5mm]{block body}%
    \ifbeamercolorempty[bg]{block body}{\vskip-.25ex}{\vskip-.75ex}\vbox{}\begin{minipage}{\textwidth}%
}
\setbeamertemplate{block end}%{default}  
{\end{minipage}\end{beamercolorbox}\vskip\smallskipamount}


\begin{document}


\begin{frame}
  \frametitle{text blocks}
  \begin{columns}
        \column[t]{.5\textwidth}
    \begin{block}{block}
        block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   block   blockk
    \end{block}
    \column[t]{.5\textwidth}
        \begin{block}{iteml}
        \begin{itemize}
            \item item 
            \item item 
            \item item
        \end{itemize}
    \end{block}
  \end{columns}

\end{frame}


\end{document}

我在原始定义中添加了minipage,这样块的内容就位于最顶部。到目前为止似乎有效,但也许一些投影仪专业人士可以对此有所启发。

在此处输入图片描述

相关内容