TikZ 移位坐标在新机器上表现不同

TikZ 移位坐标在新机器上表现不同

我开始使用一台新电脑,而我之前的一个 TikZ 代码产生了意想不到的结果。调试后,我得到了以下 MWE。

\documentclass{article}
\usepackage{tikz}

\begin{document}
\thispagestyle{empty}
    \begin{tikzpicture}[remember picture,overlay]
        \coordinate  (CENTER) at (current page.center);
        \coordinate  (A) at ([xshift=1cm,yshift=-2cm] CENTER); %This coordinate is not shifted on PGF 3.1.5 running on texlive on windows; but it is shifted on PGFs 3.1 running on MacTex.
        \coordinate [xshift=1cm,yshift=-2cm] (B) at (CENTER); %This is shifted in both computers.

        \node at (CENTER) {XXX};
        \node at (A) {000};
        \node at (B) {111};
    \end{tikzpicture}
\end{document}

奇怪的是,当我在新机器(Windows 上的全新 vanilla texlive,带有更新的 PGF 版本 3.1.5)中编译此代码时,移位不适用于坐标 (A),因此它停留在 (CENTER) 上方。然而,在我之前的电脑上(在 MACOS 上运行 MacTex 2019 和 PGF 版本 3.1),坐标 (A) 被移位,因此它出现在 (B) 上方。

这种行为发生在坐标上,但不发生在节点上。在下面的代码中,节点 (A) 和 (B) 出现在相同的位置,正如预期的那样。

\begin{tikzpicture}[remember picture,overlay]
    \node  (CENTER) at (current page.center) {XXX};
    \node  (A) at ([xshift=1cm,yshift=-2cm] CENTER) {000};
    \node [xshift=1cm,yshift=-2cm] (B) at (CENTER) {111};
\end{tikzpicture}%

有人知道为什么会发生这种情况吗?我应该在某处将其报告为错误吗(如何)?我担心我必须更新所有旧代码,才能在新机器中编译文件。

答案1

这个问题已经不太直接地在#809。由于这是一个严重的问题,修补程序 3.1.5a已经发布,您可以在几天后从 CTAN 获取它。

同时,亨利·孟克提供了一种解决方法:

\makeatletter
\def\tikz@@coordinate@at@math#1{%
  \pgf@process{#1}%
  \edef\tikz@temp{(\the\pgf@x,\the\pgf@y)}%
  \expandafter\tikz@coordinate@caller\tikz@temp{}%
}%
\makeatother

3.1.5 中的工作示例:

\documentclass{article}
\usepackage{tikz}
\makeatletter
\def\tikz@@coordinate@at@math#1{%
  \pgf@process{#1}%
  \edef\tikz@temp{(\the\pgf@x,\the\pgf@y)}%
  \expandafter\tikz@coordinate@caller\tikz@temp{}%
}%
\makeatother
\begin{document}
\begin{tikzpicture}[remember picture,overlay]
  \coordinate (CENTER) at (current page.center);
  \coordinate (A) at ([xshift=1cm,yshift=-2cm] CENTER);
  \coordinate [xshift=1cm,yshift=-2cm] (B) at (CENTER); 
  \node at (CENTER) {XXX};
  \node at (A) {000};
  \node at (B) {111};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容