如何在 TikZ 中更改文本位置?

如何在 TikZ 中更改文本位置?

我是 LaTeX 的新手,目前正在进行我的第一个 Beamer 演示。我尝试使用 TikZ 在证明中添加已经证明的公式作为评论,因为我看到了类似的东西这里。我目前的状态是这样的:

\documentclass[beamer,compress,t]{beamer}
\usepackage{amsmath}
\usepackage[utf8]{inputenc}
\usepackage{tikz}

\newcommand{\norm}[1]{\left\lVert#1\right\rVert}
\usetikzlibrary{shapes.callouts}

\begin{document}
\begin{frame}
\frametitle{Title}

\[\norm{a-b} \tikz[remember picture] \node (a) {$\leq$}; \norm{a} + \norm{b} \]

\begin{tikzpicture}[remember picture,overlay]
\path<2> (a.south) ++(0,1) node[anchor=north,rectangle callout,fill=blue!50,opacity=1, callout absolute pointer={(a.mid)}]  {From $\Delta$};
\end{tikzpicture}
\pause \pause
\[\norm{\lambda x} = \lambda \norm{x} \]
\end{frame}

\end{document}

结果是:

enter image description here

这个效果还不错,但我希望标志\leq不要向上移动,而框位于标志下方。但是,这似乎不是一个锚点选项。我尝试查找这个,但 TikZ 帮助现在看起来有点吓人。

答案1

如果我理解正确的话,你想要这样的东西吗?

enter image description here

您可以通过在命令\leq中标识基线来防止移动。只需在相对定位中使用负号,即可将标注放在下方,例如。您可以根据需要调整锚点和距离。代码如下。\tikztikzpicture++(0,-0.5)

\documentclass[beamer,compress,t]{beamer}
\usepackage{amsmath}
\usepackage[utf8]{inputenc}
\usepackage{tikz}

\newcommand{\norm}[1]{\left\lVert#1\right\rVert}
\usetikzlibrary{shapes.callouts}

\begin{document}
\begin{frame}
\frametitle{Title}

\[\norm{a-b} \tikz[remember picture,baseline=(a.base)] \node (a) {$\leq$}; \norm{a} + \norm{b} \]

\begin{tikzpicture}[remember picture,overlay]
\path<2> (a.south) ++(0,-0.5) node[anchor=north,rectangle callout,fill=blue!50,opacity=1, callout absolute pointer={(a.south)}]  {From $\Delta$};
\end{tikzpicture}
\pause \pause
\[\norm{\lambda x} = \lambda \norm{x} \]
\end{frame}

\end{document}

答案2

对于问题的第二部分,诀窍是先坚持覆盖。对于第一部分,请查看节点的锚点和基线参数。

enter image description here

\documentclass[beamer,compress,t]{beamer}
\usepackage{amsmath}
\usepackage[utf8]{inputenc}
\usepackage{tikz}


\newcommand{\norm}[1]{\left\lVert#1\right\rVert}
\usetikzlibrary{shapes.callouts}

\begin{document}
    \begin{frame}
        \frametitle{Title}

        \begin{tikzpicture}[remember picture,overlay]
        \path<2> (a.south) ++(0,1.2) node[anchor=north,rectangle callout,fill=blue!50,opacity=1, callout absolute pointer={(a.mid)}]  {From $\Delta$};
        \end{tikzpicture}
        \[\norm{a-b} \tikz[remember picture,anchor=base,baseline] \node (a)  {$\leq$}; \norm{a} + \norm{b} \]

        \pause \pause
        \[\norm{\lambda x} = \lambda \norm{x} \]
    \end{frame}

\end{document}

相关内容