我正在尝试使用 beamer 进行演示,并且刚刚开始使用 minipages。
以下代码编译时没有任何问题,并且当包含适当的文本和图形时,生成的格式很好,尽管可能有更好的方法来完成我在这里所做的事情。
问题是:幻灯片中左中位置出现了一个字符“b”。我发现原因是(应该是)[cc] 位置的迷你页面。如果我删除该迷你页面,“b”就会消失,而如果我不删除,无论我在迷你页面中写什么,该字母都会保留在那里。
现在我在演示中轻松绕过了这个问题,但我想知道为什么会发生这种情况以及如何解决它。
\documentclass{beamer}
\begin{document}
\begin{frame}
\begin{minipage}[tl]{0.45\textwidth}
there's a pic here
\end{minipage}
\begin{minipage}[tc]{0.06\textwidth}
\center{$\Longrightarrow$}
\end{minipage}
\begin{minipage}[tr]{0.45\textwidth}
pic
\end{minipage}
\begin{minipage}[cl][0.5cm][t]{0.45\textwidth}
\phantom{skip}
\end{minipage}
\begin{minipage}[cc][0.5cm][t]{0.06\textwidth}
\phantom{skip}
\end{minipage}%
\begin{minipage}[r][0.5cm][t]{\textwidth}
$\Downarrow$
\end{minipage}
\begin{minipage}[bl]{0.45\textwidth}
text
\end{minipage}
\begin{minipage}[bc]{0.06\textwidth}
\phantom{skip}
\end{minipage}
\begin{minipage}[br]{0.45\textwidth}
pic
\end{minipage}
\end{frame}
\end{document}
谢谢
答案1
的可选参数minipage
只能是c
t
或b
您的额外字母,例如br
破坏测试并导致意外的标记被排版。
主要问题是(由于当时的内存限制)LaTeX 假设一个字符的有效输入,[.]
并通过执行以下测试
\if#1b\vbox
\else\if #1t\vtop
\else\ifmmode\vcenter
意思就是[b]
制作一个\vbox
,[t]
制作一个\vtop
并且任何其他东西(记录为c
)制作一个\vcenter
但是如果你输入#1
两个不同的字符,那么rl
这就是
\if rlb\vbox
\else\if rlt\vtop
\else\ifmmode\vcenter
因此前两个\if
测试r
针对l
是假的,所以你得到一个\vcenter
如果你输入两个相等的字符,[xx]
那么你得到
\if xxb\vbox
\else\if xxt\vtop
\else\ifmmode\vcenter
所以第一个\if
测试是正确的,并且您会b
在 a 之前得到一个排版\vbox
,正如您所看到的......