Posicionamento absoluto no TikZ3

Posicionamento absoluto no TikZ3

Também estou enviando a solução, por favor, economize seu tempo e energia nesta questão.

Meu problema é este. O posicionamento absoluto parou de funcionar em alguns casos após a atualização do TikZ2 para o TikZ3. Este é o código onde eu esperava um quadrado no topo da página (foto à esquerda), mas consegui algo diferente (foto à direita). Como podemos consertar isso no TikZ3?

%! pdflatex or xelatex or lualatex
%! bug0002-problem.tex
%! running it twice
\documentclass[a4paper]{article}
\pagestyle{empty}
\addtolength{\hoffset}{-1in}
\addtolength{\voffset}{-1in}
\usepackage{tikz} % version 3
\begin{document}
\begin{tikzpicture}[remember picture, overlay]
\node[minimum width=4cm, minimum height=4cm, draw, fill=orange, anchor=north] at (current page.north) {Hello World!};
\end{tikzpicture}
\end{document}

Exemplo 1

Responder1

Acho que não há necessidade de expressar explicitamente o quão feliz fiquei quando vi todos os novos recursos do TikZ3 e o quão infeliz fiquei quando o recurso principal (para mim) parou de funcionar corretamente de vez em quando.

Minha primeira solução é óbvia no próprio código: comente \addtolength{\hoffset}{-1in}e \addtolength{\voffset}{-1in}. Não foi tão simples rastreá-lo em um projeto real e não foi possível usar tal solução quando o espelho da página foi definido há muito tempo. Este é o código.

%! pdflatex or xelatex or lualatex
%! bug0002-solution-a.tex
%! running it twice
% This solution works in xelatex!
\documentclass[a4paper]{article}
\pagestyle{empty}
%\addtolength{\hoffset}{-1in}
%\addtolength{\voffset}{-1in}
\usepackage{tikz} % version 3
\begin{document}
\begin{tikzpicture}[remember picture, overlay]
\node[minimum width=4cm, minimum height=4cm, draw, fill=orange, anchor=north] at (current page.north) {Hello World!};
\end{tikzpicture}
\end{document}

Eu precisava de outra solução e encontrei uma: vamos retornar as dimensões \hoffsete \voffsetaos seus valores iniciais, mas apenas em todos os tikzpictureambientes, pois o TikZ3 está claramente usando-os para cálculos. Por favor, tente este exemplo onde usei \tikzsete modifiquei o estilo de every picture:

%! pdflatex or xelatex or lualatex
%! bug0002-solution-b.tex
%! running it twice
% This solution does not work in xelatex!
\documentclass[a4paper]{article}
\pagestyle{empty}
\addtolength{\hoffset}{-1in}
\addtolength{\voffset}{-1in}
\usepackage{tikz} % version 3
\begin{document}
\tikzset{every picture/.style={execute at begin picture={
   \hoffset=0pt
   \voffset=0pt
   }}} 
\begin{tikzpicture}[remember picture, overlay]
\node[minimum width=4cm, minimum height=4cm, draw, fill=orange, anchor=north] at (current page.north) {Hello World!};
\end{tikzpicture}
\end{document}

Acredito que há mais coisas acontecendo, pois esta solução não funciona em xelatex, mas funciona em pdflatexe lualatex. Podemos comparar facilmente o resultado esperado (imagem à esquerda) e o resultado real xelatex(imagem à direita). Minha resposta está abrindo uma subquestão, infelizmente. Como isso pode ser corrigido no TikZ3?

exemplo 2

informação relacionada