Beamer 叠加 tikz 节点会破坏逐字空格处理

Beamer 叠加 tikz 节点会破坏逐字空格处理

当我将它放入覆盖宏中时,我无法让任何逐字环境(alltt、semiverbatim)尊重空格:

\documentclass{beamer}
\begin{document}


\begin{frame}[fragile]

\only<1>{\begin{minipage}{0.9\textwidth}
\begin{semiverbatim}
top level
  2 spaces indent
    4 spaces indent
\end{semiverbatim}
\end{minipage}};

\end{frame}


\end{document}

上述示例在一行上排版如下:

top level 2 spaces 4 spaces

根据这个答案https://tex.stackexchange.com/a/32488/63936这与逐字缩进在宏参数中不起作用有关。但是逐字缩进在某些宏中确实有效,例如在 tikz 的 \node 中,但前提是节点没有覆盖规范。因此,覆盖和逐字处理之间存在一些奇怪的交互。可能 tikz 会做一些神奇的事情来克服问题,但它对带有覆盖的节点没有帮​​助。上面链接的答案中提出的解决方案仅适用于 listings 包。

有没有办法让其他逐字环境在覆盖内容中工作?

答案1

一个简单的替代方案是回到beamer同样提供的覆盖环境。这些在手册的 §9.4 中描述beamer

对于每个基本命令 \only、\alt、\visible、\uncover 和 \invisible,都存在“环境版本”onlyenv、altenv、visibleenv、uncoverenv 和 invisibleenv。

因此,对于您来说,切换到onlyenv会产生预期的结果:

\documentclass{beamer}
\begin{document}


\begin{frame}[fragile]


\begin{onlyenv}<1>
\begin{minipage}{0.9\textwidth}
\begin{semiverbatim}
top level
2 spaces indent
  4 spaces indent
\end{semiverbatim}
\end{minipage}
\end{onlyenv}
;

\end{frame}


\end{document}

在此处输入图片描述

相关内容