
Comecei a usar um novo computador e um dos meus códigos TikZ anteriores produziu resultados inesperados. Após depurá-lo, cheguei ao seguinte 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}
Estranhamente, o deslocamento não é aplicado na coordenada (A), então fica sobre (CENTER), quando compilo esse código na nova máquina (novíssimo vanilla texlive no Windows, com PGF versão 3.1.5 atualizado). Porém, no meu computador anterior (executando MacTex 2019 com PGF versão 3.1, no MACOS), a coordenada (A) é deslocada, então aparece sobre (B).
Este comportamento acontece com coordenadas, mas não com nós. No código a seguir, os nós (A) e (B) aparecem na mesma posição, conforme esperado.
\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}%
Alguém sabe por que isso está acontecendo? Devo reportar isso como um bug em algum lugar (como)? Estou preocupado em ter que atualizar todos os meus códigos antigos para compilar os arquivos na nova máquina.
Responder1
Esta questão já é abordada não tão diretamente em#809. Como este é um problema sério,correção 3.1.5ajá foi lançado e você poderá obtê-lo no CTAN em alguns dias.
Enquanto isso,Henrique Menkefornece uma solução alternativa:
\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
Exemplo de trabalho em 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}