如何才能使普通 itemize 和列中 itemize 的缩进相同?如下面的示例代码所示,列中 itemize 的缩进较少。
\documentclass{beamer}
\begin{document}
\frame {
\begin{itemize}
\item foo
\item bar
\item baz
\end{itemize}
}
\frame {
\begin{columns}
\column{.5\textwidth}
\begin{itemize}
\item foo
\item bar
\item baz
\end{itemize}
\column{.5\textwidth}
A picture
\end{columns}
}
\end{document}
有简单的解决办法吗?
答案1
问题确实在于0.5\textwidth + \beamer@rightmargin + \beamer@leftmargin + 0.5\textwidth > \textwidth
……
您可以将这些边距设置为 0,正如 Peter 所指出的(但这会导致列粘在一起,而这并不总是您想要的),或者您可以使用较小的列。
请参阅以下问题以了解非常相似的问题:投影列中的边距
在您的情况下,以下“神奇数字” .455 应该大致有效(至少对于这个 MWE...)
\documentclass{beamer}
\begin{document}
\frame{
\begin{itemize}
\item foo
\item \rule{\linewidth}{1mm}
\item baz
\end{itemize}
\rule{\linewidth}{1mm}
\begin{columns}
\column{.455\textwidth}
\begin{itemize}
\item foo
\item \rule{\linewidth}{1mm}
\item baz
\end{itemize}
\rule{\linewidth}{1mm}
\column{.455\textwidth}
\begin{itemize}
\item foo
\item \rule{\linewidth}{1mm}
\item baz
\end{itemize}
\rule{\linewidth}{1mm}
\end{columns}
}
\end{document}
答案2
不确定是否有官方的方法可以做到这一点,但在序言中添加以下内容可以为我修复对齐问题:
\makeatletter
\setlength{\beamer@rightmargin}{0em}
\setlength{\beamer@leftmargin}{0em}
\makeatother
为了限制这种影响,最好只在需要的地方使用它。下面我定义了一个命令\AdjustMargins
,它需要在开始时执行,\frame
以便那些更改只针对该帧。
\documentclass{beamer}
\makeatletter
\newcommand*{\AdjustMargins}{%
\setlength{\beamer@rightmargin}{0em}%
\setlength{\beamer@leftmargin}{0em}%
}
\makeatother
\begin{document}
\frame {
\begin{itemize}
\item foo
\item bar
\item baz
\end{itemize}
}
\frame {\AdjustMargins% Ensure changes are local
\begin{columns}[r]
\column{.5\textwidth}
\begin{itemize}
\item foo
\item bar
\item baz
\end{itemize}
\column{.5\textwidth}
A picture
\end{columns}
}
\end{document}