从 TeX Live 2018 到 2019,TikZ 库中可能出现错误或功能变化吗?

从 TeX Live 2018 到 2019,TikZ 库中可能出现错误或功能变化吗?

使用 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}

相关内容