Estou tentando definir um ambiente que colocará o conteúdo em um tikzpicture
node
que seja posicionado com base nos parâmetros do ambiente. Sou muito novo em LaTeX, TikZ e PGF, então a sintaxe está se mostrando desafiadora.
Atualmente tenho o seguinte:
\NewEnviron{absnode}[2]
{
\tikzset{%
XPOS/.style={xshift=#1},
YPOS/.style={yshift=#2}
}
\begin{tikzpicture}
\node[XPOS, YPOS, anchor=north west] at (current page.north west) {%
\BODY
};
\end{tikzpicture}
}
Estou então tentando usá-lo com:
\begin{absnode}{500 pt}{-10 pt}
Text inside the node positioned relative to the top left corner
\end{absnode}
Isso... não está funcionando. O procedimento acima é compilado, mas o nó não parece estar posicionado, exceto no canto superior esquerdo (sem deslocamento aplicado).
o que estou perdendo?
Responder1
Ok, então isso é esquecer o [remember picture, overlay] arguments to
\begin{tikzpicture}`
Com o abaixo, funciona conforme o esperado:
\NewEnviron{absnode}[2]
{
\tikzset{%
XPOS/.style={xshift=#1},
YPOS/.style={yshift=#2}
}
\begin{tikzpicture}[remember picture, overlay]
\node[XPOS, YPOS, anchor=north west] at (current page.north west) {%
\BODY
};
\end{tikzpicture}
}
Responder2
Existem muitas maneiras de efetuar esse resultado. Lembre-se de executá-lo duas vezes.
Normalmente o texto é alinhado pela linha de base [anchor=base west].
\documentclass[landscape]{article}
\usepackage{tikz}
\usepackage{environ}
\NewEnviron{absnode}[2]
{\begin{tikzpicture}[remember picture, overlay]
\path (current page.north west) ++(#1,#2) node[anchor=north west] {\BODY};
\end{tikzpicture}}
\begin{document}
\begin{absnode}{500 pt}{-10 pt}
Text inside the node positioned relative to the top left corner
\end{absnode}
\end{document}