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}
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 \hoffset
e \voffset
aos seus valores iniciais, mas apenas em todos os tikzpicture
ambientes, pois o TikZ3 está claramente usando-os para cálculos. Por favor, tente este exemplo onde usei \tikzset
e 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 pdflatex
e 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?