一个从未写入的字符“b”出现在迷你页面中

一个从未写入的字符“b”出现在迷你页面中

我正在尝试使用 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 tb您的额外字母,例如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,正如您所看到的......

相关内容