
Я начал использовать новый компьютер, и один из моих предыдущих кодов 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}
Странно, но смещение не применяется к координате (A), поэтому она остается над (CENTER), когда я компилирую этот код на новой машине (совершенно новый vanilla texlive на Windows с обновленной версией PGF 3.1.5). Однако на моем предыдущем компьютере (работающем под управлением MacTex 2019 с PGF версии 3.1 на MACOS) координата (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}