使用 \only 和 \textcolor{}{} 更改下括号颜色会稍微移动内容

使用 \only 和 \textcolor{}{} 更改下括号颜色会稍微移动内容

我正在使用 进行演示,并beamer尝试使用 进行underbrace{}{}演示。我使用代码\textcolor{}{}\only<>

\documentclass{beamer}
\usepackage{bm}

% Just some newcommands.
\newcommand{\msum}[2][]{\sum \limits_{#2}^{#1}}
\newcommand{\norm}[1]{\left|\left|{#1}\right|\right|}
\newcommand{\nqb}[1]{{#1}^{\perp}}
\newcommand{\nqj}[1]{\check{#1}}
\newcommand{\textblack}[1]{\textcolor{black}{#1}}
\newcommand{\textb}[1]{\textcolor{blue}{#1}}
\newcommand{\textg}[1]{\textcolor{green}{#1}}
\newcommand{\textr}[1]{\textcolor{red}{#1}}
\newcommand{\textw}[1]{\textcolor{white}{#1}}

\begin{document}
    \begin{frame}
        \only<1>
        {
            \[
                \nqj{\psi}_j:=\textw{\underbrace{\textblack{\psi_j}}_{\bm{g}}
                \textblack{-}
                \underbrace{\textblack{\msum[j-1]{k=1}(\psi_j,\nqb{\psi}_k)\nqb{\psi}_k}}_{\bm{h}}},
                \quad\nqb{\psi}_j:=\dfrac{\nqj{\psi}_j}{\norm{\nqj{\psi}_j}}
            \]
        }
        \only<2->
        {
            \[
                \nqj{\psi}_j:=\textblack{\underbrace{\textblack{\psi_j}}_{\bm{g}}
                \textblack{-}
                \underbrace{\textblack{\msum[j-1]{k=1}(\psi_j,\nqb{\psi}_k)\nqb{\psi}_k}}_{\bm{h}}},
                \quad\nqb{\psi}_j:=\dfrac{\nqj{\psi}_j}{\norm{\nqj{\psi}_j}}
            \]
        }       
    \end{frame}
\end{document}

其中我只更改了部分文本的颜色。尽管如此,查看生成的两张幻灯片,内容还是发生了一些变化。我该如何避免这种情况?或者是否有更好的方法让\underbraces 出现?

解决方案如下:使用 \only<#> 更改文本颜色会导致间距问题我相信,这行不通。

答案1

这不是颜色的问题。使用相同颜色,垂直偏移也很明显。但现在\vfill稳定了方程。(没有图片,但可以很容易地验证)。

\documentclass{beamer}
\usepackage{bm}
\usepackage{color}

% Just some newcommands.
\newcommand{\msum}[2][]{\sum \limits_{#2}^{#1}}
\newcommand{\norm}[1]{\left|\left|{#1}\right|\right|}
\newcommand{\nqb}[1]{{#1}^{\perp}}
\newcommand{\nqj}[1]{\check{#1}}
\newcommand{\textblack}[1]{\textcolor{black}{#1}}
\newcommand{\textb}[1]{\textcolor{blue}{#1}}
\newcommand{\textg}[1]{\textcolor{green}{#1}}
\newcommand{\textr}[1]{\textcolor{red}{#1}}
\newcommand{\textw}[1]{\textcolor{white}{#1}}



\begin{document}
    \begin{frame}
        \only<1>
        {
            \[
                \nqj{\psi}_j:=\textw{\underbrace{\textblack{\psi_j}}_{\bm{g}}
                \textblack{-}
                \underbrace{\textblack{\msum[j-1]{k=1}(\psi_j,\nqb{\psi}_k)\nqb{\psi}_k}}_{\bm{h}}},
                \quad\nqb{\psi}_j:=\dfrac{\nqj{\psi}_j}{\norm{\nqj{\psi}_j}}
            \]
      \vfill  }
        \only<2->
        {
            \[
                \nqj{\psi}_j:=\textblack{\underbrace{\textblack{\psi_j}}_{\bm{g}}
                \textblack{-}
                \underbrace{\textblack{\msum[j-1]{k=1}(\psi_j,\nqb{\psi}_k)\nqb{\psi}_k}}_{\bm{h}}},
                \quad\nqb{\psi}_j:=\dfrac{\nqj{\psi}_j}{\norm{\nqj{\psi}_j}}
            \]
    \vfill    }       

    \end{frame}
\end{document}

答案2

您可以使用\color而不是\textcolor。 主要优点是 具有\color叠加感知功能,这意味着您无需重复文本即可获得相同的结果:您可以使用{\color<1>{white} text...}仅在第一个叠加层上将文本着色为白色。

并且作为一个很好的副作用(可能是一些魔法),内容不再在覆盖之间移动。

\documentclass{beamer}
\usepackage{bm}

% Just some newcommands.
\newcommand{\msum}[2][]{\sum \limits_{#2}^{#1}}
\newcommand{\norm}[1]{\left|\left|{#1}\right|\right|}
\newcommand{\nqb}[1]{{#1}^{\perp}}
\newcommand{\nqj}[1]{\check{#1}}
\newcommand{\textblack}[1]{\textcolor{black}{#1}}
\newcommand{\textb}[1]{\textcolor{blue}{#1}}
\newcommand{\textg}[1]{\textcolor{green}{#1}}
\newcommand{\textr}[1]{\textcolor{red}{#1}}
\newcommand{\textw}[1]{\textcolor{white}{#1}}

\begin{document}

\begin{frame}
  \[
    \nqj{\psi}_j:={\color<1>{white}\color<2>{black}\underbrace{\textblack{\psi_j}}_{\bm{g}}
      \textblack{-}
      \underbrace{\textblack{\msum[j-1]{k=1}(\psi_j,\nqb{\psi}_k)\nqb{\psi}_k}}_{\bm{h}}},
    \quad\nqb{\psi}_j:=\dfrac{\nqj{\psi}_j}{\norm{\nqj{\psi}_j}}
    \]

\end{frame}

相关内容