我在带有 itemize 环境的 beamer 包中有一个幻灯片,其中有些项目略微太宽,无法放在一行中(根据 LaTeX 的自动换行系统)。这是代码:
\documentclass{beamer}
\begin{document}
\begin{frame}
A polymorphism f is
\begin{itemize}
\item{\textbf{Malcev}, if $f(y,y,x) = f(x,y,y) = f(x,x,x) = x$}
\item{\textbf{majority}, if $f(x,x,y) = f(x,y,x) = f(y,x,x) = f(x,x,x) = x$}
\item{\textbf{sml}, if $f(x,x)=x, f(x,y)=f(y,x), f(f(x,y),z)=f(x,f(y,z))$}
\item{\textbf{2sml}, if $f(x,x)=x, f(x,y)=f(y,x), f(f(x,y),x)=f(x,y)$}
\end{itemize}
\end{frame}
\end{document}
因为我觉得把每个项目放在一行中在视觉上是可以接受的,所以我用 \mbox 包围了每个项目条目以防止换行:
\item{\mbox{\textbf{majority}, if $f(x,x,y) = f(x,y,x) = f(y,x,x) = f(x,x,x) = x$}}
我该如何解决这个问题?我的目标是防止换行 - 不必使用 \mbox。
第二个问题是,为什么它会这样表现?我不认为这是一种有意为之的行为...
答案1
TeX 希望避免出现过满的行,因此它会在 ; 之前找到一个可能的换行符\mbox
,然后它会放弃,因为它无法打破这个框。
解决方案:如果您确定文本适合幻灯片,尽管会超出为文本保留的区域,请使用
\item \makebox[\linewidth][l]{\textbf{majority}, if $f(x,x,y) = f(x,y,x) = f(y,x,x) = f(x,x,x) = x$}
因此项目文本不会显得比可用空间更宽。
为了进行比较,下面举一个例子,其中一件长物品放在盒子里,而另一件没有放在盒子里:
\documentclass{beamer}
\begin{document}
\begin{frame}
A polymorphism $f$ is
\begin{itemize}
\item \textbf{Malcev}, if $f(y,y,x) = f(x,y,y) = f(x,x,x) = x$
\item \makebox[\linewidth][l]{\textbf{majority}, if $f(x,x,y) = f(x,y,x) = f(y,x,x) = f(x,x,x) = x$}
\item \textbf{sml}, if $f(x,x)=x, f(x,y)=f(y,x), f(f(x,y),z)=f(x,f(y,z))$
\item \textbf{2sml}, if $f(x,x)=x, f(x,y)=f(y,x), f(f(x,y),x)=f(x,y)$
\end{itemize}
\end{frame}
\end{document}
请注意,您不需要\item{...}
,而只需要\item ...