
Comencé a usar una computadora nueva y uno de mis códigos TikZ anteriores produjo resultados inesperados. Después de depurarlo, llegué al siguiente 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}
Curiosamente, el cambio no se aplica a la coordenada (A), por lo que permanece en (CENTRO), cuando compilo este código en la nueva máquina (nueva Vanilla texlive en Windows, con PGF versión 3.1.5 actualizada). Sin embargo, en mi computadora anterior (que ejecuta MacTex 2019 con PGF versión 3.1, en MACOS), la coordenada (A) está desplazada, por lo que aparece sobre (B).
Este comportamiento ocurre con las coordenadas, pero no con los nodos. En el siguiente código, los nodos (A) y (B) aparecen en la misma posición, como se esperaba.
\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}%
¿Alguien sabe por qué sucede esto? ¿Debo informarlo como un error en alguna parte (cómo)? Me preocupa tener que actualizar todos mis códigos antiguos para poder compilar los archivos en la nueva máquina.
Respuesta1
Esta cuestión ya se aborda no tan directamente en#809. Como se trata de un problema grave,revisión 3.1.5aya está lanzado y podrás obtenerlo en CTAN en un par de días.
Mientras tanto,Henri Menkeproporciona una solución 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
Ejemplo de trabajo en 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}