使用 TeX Live 2018 的 LuaLaTeX 编译下面的代码,经过三次运行后我得到了所需的结果(以获得正确的引用)。
更改为 TeX Live 2019 时,我收到来自 PGF 的错误:
(c:/texlive/2019/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg)
!包 pgf 错误:没有已知的名为 two 的形状。
请参阅 pgf 包文档以了解解释。输入 H 可立即获得帮助。...
l.18 \node[above=4mm of two] (减号文本) { ?
以下是代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,tikzmark}
% positioning used for above= and below=
% tikzmark used for subnode
\begin{document}
\begin{tikzpicture}[remember picture]
\node{$
\subnode{sign1}{$\color{red}-$}
3
\mathbin{\subnode{minusoperator}{$\color{blue}-$}}
\subnode{two}{$2$}
=
\subnode{sign2}{$\color{red}-$}
5
$};
\node[above=4mm of two] (minussigntext) {
\color{red} Minus symbol as sign
};
\node[below=4mm of two] (minusoperatortext) {
\color{blue} Minus symbol for subtraction
};
\draw [-] (minussigntext) to [out=230,in= 90] (sign1);
\draw [-] (minussigntext) to [out=310,in= 90] (sign2);
\draw [-] (minusoperatortext) to [out=110,in=270] (minusoperator);
\end{tikzpicture}
\end{document}
期望结果:
答案1
Ulrike Fischer 指出了正确的方向。这似乎是 tikzmark v1.7 的一个问题。我尝试用这个进行编译这从 2019 年 5 月 13 日开始在 tikzmark 的 github 页面上提交,它解决了我的问题。我的原始代码还存在一些其他语法问题;下面是一个更好的版本。我不应该在子节点中使用 $,因为这会退出数学模式。我希望这个问题将在较新版本的 tikzmark 中得到解决。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,tikzmark}
% positioning used for above= and below=
% tikzmark used for subnode
\begin{document}
\begin{tikzpicture}[remember picture]
\node (expression) {$
\subnode{sign1}{\color{red}-} % -
3 % 3
\mathbin{\subnode{minusoperator}{\color{blue}-}} % -
2 % 2
\mathrel{=} % =
\subnode{sign2}{\color{red}-} % -
5 % 5
$};
\node[above=4mm of expression] (minussigntext) {
\color{red} Minus symbol as sign
};
\node[below=4mm of expression] (minusoperatortext) {
\color{blue} Minus symbol for subtraction
};
\draw [-] (minussigntext) to [out=230,in= 90] (sign1);
\draw [-] (minussigntext) to [out=310,in= 90] (sign2);
\draw [-] (minusoperatortext) to [out=110,in=270] (minusoperator);
\end{tikzpicture}
\end{document}