![在 Beamer 中使用覆盖命令时如何保留空间?](https://linux22.com/image/286194/%E5%9C%A8%20Beamer%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E8%A6%86%E7%9B%96%E5%91%BD%E4%BB%A4%E6%97%B6%E5%A6%82%E4%BD%95%E4%BF%9D%E7%95%99%E7%A9%BA%E9%97%B4%EF%BC%9F.png)
在 Beamer 中,我希望在 Overlay 命令的帮助下,在数学公式中用另一个表达式替换一个表达式时保留空格。例如,如果我们在幻灯片 1 中有这个公式:
\[
x+\mathrm{Trace}M=y.
\]
例如,我想用“z”替换“\mathrm{Trace}M”,以便在幻灯片 2 中,之前的间距仍然相同,我们有:
\[
x+ z =y.
\]
答案1
一种选择:
\documentclass{beamer}
\usepackage{amssymb}
\newlength\mylen
\newlength\mylena
\newlength\mylenb
\newcommand\R{\mathbb{R}}
\newcommand\bL{bL}
\newcommand\Div{Div}
\newcommand\getmaxlength[2]{%
\settowidth\mylen{#1}%
\settowidth\mylena{#1}%
\settowidth\mylenb{#2}%
\ifdim\mylenb>\mylena\relax
\setlength\mylen{\mylenb}
\fi%
}
\newcommand\Replace[2]{%
\getmaxlength{#1}{#2}%
\makebox[\mylen][c]{#2}%
}
\begin{document}
\begin{frame}
\onslide<1,2>{
\[
x+
\only<1>{\mathrm{Trace}M}
\only<2>{\Replace{$\mathrm{Trace}M$}{$y$}}
=z
\]
}
\onslide<3,4>{
\[
x+
\only<3>{\Replace{$\mathrm{Trace}M$}{$y$}}
\only<4>{\Replace{$y$}{$\mathrm{Trace}M$}}
=z
\]
}
\onslide<5->{
Comme l'application d\'eterminant est diff\'erentiable et que sa diff\'erentielle en l'identit\'e est l'application trace, alors $p.p.\, y\in\R^3,\,$:
\[
\only<5>{\mathrm{det}(D_y\Phi(t,y))}
\only<6->{\Replace{$\mathrm{det}(D_y\Phi(t,y))$}{$|J(t,y)|$}}=1+t\,\only<5>{\mathrm{Trace}(D_yV(y))}
\only<6->{\Replace{$\mathrm{Trace}(D_yV(y))$}{$\Div_y V(y)$}}
+t\,\epsilon_1(t,y),\,\epsilon_1(t)\xrightarrow{\bL^{\infty}}0.
\]
}
\end{frame}
\end{document}
主要命令是
\Replace{<text1>}{<text2>},
排版但保留 所用的空间。对于数学模式中的表达式,参数应括在 中$...$
。
与问题无关,但请不要$$...$$
在 LaTeX 文档中使用;\[...\]
而是使用;请参阅为什么 \[ ... \] 比 $$ ... $$ 更可取?。