Tikz 方程式箭头未显示

Tikz 方程式箭头未显示

我想在投影仪演示中添加指向方程不同部分的箭头。我想迭代地突出显示它们。我使用了这个问题尝试这样做,但箭头根本没有出现。我尝试排除环境{\small ... }%,但没有解决问题,也没有消除突出显示或弄乱距离。感谢您的帮助。

\documentclass[12pt,dvipsnames]{beamer}

\usetheme{metropolis}

\usepackage{textgreek}
\usepackage{tikz}

\newcommand{\tikzmark}[1]{\tikz[baseline,remember picture] \coordinate (#1) {};}

\usepackage{booktabs}
\usepackage[scale=2]{ccicons}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{amssymb}
\usepackage{subcaption}
\usepackage{caption}
\usepackage{multicol}
\usepackage{minted}
\usepackage{hyperref}
\hypersetup{
    colorlinks = false,
    linkbordercolor = {blue}
}

\title{Something Interesting}
\author{Name}
\date{\today}

\begin{document}
\maketitle

\begin{frame}[fragile]{Title}

{\small  
\begin{equation*}
\textrm{
Y\textsubscript{gt} =
\textbeta\textsubscript{0} +
\alert<2>{\tikzmark{V}\textbeta\textsubscript{1} A\textsubscript{1}} +
\alert<3>{\tikzmark{Vp}\textbeta\textsubscript{2} B\textsubscript{2}} +
\alert<4>{\tikzmark{Vt}\textbeta\textsubscript{3} C\textsubscript{3}} +
\alert<5>{\textgamma\textsubscript{4} X\textsubscript{4}} +
\textepsilon\textsubscript{...}
}
\end{equation*}

\begin{tikzpicture}[overlay,remember picture]
    \node (Ve) [below of = V, node distance = 4 em, anchor=west]{\footnotesize \textsf{Distribution volume}};
    \draw[<-, in=180, out=-90] (V.south)++(.25em,-.5ex) to (Ve.west);

    \node (Vpe) [below of = Vp, node distance = 3 em, anchor=west] {\footnotesize \textsf{Volume water in plasma}};
    \draw[<-, in=180, out=-90] (Vp.south)++(.25em,-.5ex) to (Vpe.west);

    \node (Vte) [below of = Vt, node distance = 2 em, anchor=west] {\footnotesize \textsf{Volume water in tissue}};
    \draw[<-, in=180, out=-90] (Vt.south)++(.25em,-.5ex) to (Vte.west);

\end{tikzpicture}
}%

\end{frame}
\end{document}

答案1

这实际上是 TikZ/PGF 如何记住节点和图片的一个微妙问题。定义节点时,它会记住定义该节点的图片的唯一 ID。如果设置了键,remember picture则该图片的原点位置将写入文件aux,这意味着可以确定节点在页面上的绝对位置。

但是,在某些情况下,tikzpicture 可能会被多次处理,并且只有其中一个版本会写入 PDF。当\mathchoice涉及到时,就会发生这种情况。由于每次都会定义节点,因此最后一个版本是与给定节点关联的版本。但是,如果最后一个版本不是写入 PDF 的版本,则不会记住它在页面上的位置,因此无法使用该节点在页面上的绝对位置。

在其他地方,Heiko Oberdieck 回答了一个相关问题,使用\label仅针对排版的版本将内容写入辅助文件,并使用该版本来确定设置了哪个版本。使用相同的想法,我进行了调整,\tikzmarknode以便它可以确定实际使用了哪个 tikzpicture,并将其节点与正确的 id 关联起来。

(如果需要的话,此机制可以在其他 tikzpictures 中使用。)

请注意,它\tikzmark本身不会受到影响,因为它不再使用节点。因此这只会影响\tikzmarknode

在您的代码中,这个问题通过命令进入画面(哈哈)\textrm。在包的存在下amsmath,这实际上是\text,并且这在内部使用\mathchoice

我已将新版本的 tikzmark 上传至github来实现这一点。一旦我完成了压力测试,我就会将其上传到 CTAN。

这是您的代码的修复版本:

\documentclass[12pt,dvipsnames]{beamer}
%\url{https://tex.stackexchange.com/q/582811/86}

\usetheme{metropolis}

\usepackage{textgreek}
\usepackage{tikz}
\usetikzlibrary{tikzmark}

%\newcommand{\tikzmark}[1]{\tikz[baseline,remember picture] \coordinate (#1) {};}

\usepackage{booktabs}
\usepackage[scale=2]{ccicons}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{amssymb}
\usepackage{subcaption}
\usepackage{caption}
\usepackage{multicol}
\usepackage{minted}
\usepackage{hyperref}
\hypersetup{
    colorlinks = false,
    linkbordercolor = {blue}
}

\title{Something Interesting}
\author{Name}
\date{\today}

\begin{document}
\maketitle

\begin{frame}[fragile]{Title}

{\small  
\begin{equation*}
\textrm{
Y\textsubscript{gt} =
\textbeta\textsubscript{0} +
\alert<2>{\tikzmarknode{V}\textbeta\textsubscript{1} A\textsubscript{1}} +
\alert<3>{\tikzmarknode{Vp}\textbeta\textsubscript{2} B\textsubscript{2}} +
\alert<4>{\tikzmarknode{Vt}\textbeta\textsubscript{3} C\textsubscript{3}} +
\alert<5>{\textgamma\textsubscript{4} X\textsubscript{4}} +
\textepsilon\textsubscript{...}
}
\end{equation*}

\begin{tikzpicture}[overlay,remember picture]
    \node (Ve) [below of = V, node distance = 4 em, anchor=west]{\footnotesize \textsf{Distribution volume}};
    \draw[<-, in=180, out=-90] (V.south)++(.25em,-.5ex) to (Ve.west);

    \node (Vpe) [below of = Vp, node distance = 3 em, anchor=west] {\footnotesize \textsf{Volume water in plasma}};
    \draw[<-, in=180, out=-90] (Vp.south)++(.25em,-.5ex) to (Vpe.west);

    \node (Vte) [below of = Vt, node distance = 2 em, anchor=west] {\footnotesize \textsf{Volume water in tissue}};
    \draw[<-, in=180, out=-90] (Vt.south)++(.25em,-.5ex) to (Vte.west);

\end{tikzpicture}
}%

\end{frame}
\end{document}

以及相关框架:

修复了 mathchoice 中的 tikzmarknode

相关内容