![从 TeX Live 2018 到 2019,TikZ 库中可能出现错误或功能变化吗?](https://linux22.com/image/398978/%E4%BB%8E%20TeX%20Live%202018%20%E5%88%B0%202019%EF%BC%8CTikZ%20%E5%BA%93%E4%B8%AD%E5%8F%AF%E8%83%BD%E5%87%BA%E7%8E%B0%E9%94%99%E8%AF%AF%E6%88%96%E5%8A%9F%E8%83%BD%E5%8F%98%E5%8C%96%E5%90%97%EF%BC%9F.png)
使用 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}