在 TikZ 中,是否可以将节点中表达式的每个字符隔离为其自己的节点?

在 TikZ 中,是否可以将节点中表达式的每个字符隔离为其自己的节点?

我经常发现自己在 tikz 图片的节点中输入方程式。然后我经常发现我想隔离方程式中的某些字符并将它们定义为节点。

例如,考虑下图。

\documentclass{standalone}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
  \node {$e^{i\pi}+1=0$};
\end{tikzpicture}
\end{document}

在此处输入图片描述

我希望在这个图中我可以把每个字符、 、 、 、 和e定义ipi自己+1节点。这可能吗?=0

答案1

\subnode来自的命令tikzmark是为这种情况而设计的。它伪造了 内的文本周围的节点\node。它确实需要几次编译运行才能解决(对我来说,这段代码花了 3 次),并且您必须记住remember picturetikzpicture 上的密钥。

\documentclass{article}
%\url{https://tex.stackexchange.com/q/582127/86}

\usepackage{tikz}
\usetikzlibrary{tikzmark, arrows.meta}

\begin{document}
\begin{tikzpicture}[>=Latex,remember picture]
  \node (eipi) at (0,0) {\(e^{i\pi}+1=0\)};
\node at (0,-1) {\(\subnode{e}{e}^{\subnode{i}{i}\subnode{pi}{\pi}}+\subnode{one}{1}=\subnode{zero}{0}\)};
\draw[<-] (e) to[out=-90, in=90] ++(-2,-1) node[below] {Base of natural logarithm};
\draw[<-] (i) to[out=135, in=0] ++(-2,1) node[left] {A square root of \(-1\)};
  \draw[<-] (pi) -- ++(0,-2) node[below] {Area of a unit circle};
  \draw[<-] (one) to[out=-45, in=180] ++(2,-1) node[right] {Unity};
\draw[<-] (zero) -- ++(2,0) node[right] {Zilch};
\draw[<-] (eipi) -- ++(0,1) node[above] {An ugly equation};
\end{tikzpicture}
\end{document}

带子节点的注释方程

相关内容