如何使用 tikz 创建由参数确定的绝对定位环境位置?

如何使用 tikz 创建由参数确定的绝对定位环境位置?

我正在尝试定义一个环境,该环境将根据环境参数将内容放置在一个tikzpicture node位置。我对 LaTeX、TikZ 和 PGF 还很陌生,因此语法很有挑战性。

目前我有以下内容:

\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}
}

然后我尝试将它与以下对象一起使用:

\begin{absnode}{500 pt}{-10 pt}
Text inside the node positioned relative to the top left corner
\end{absnode}

这……不起作用。上面的代码可以编译,但节点似乎没有定位到左上角以外的位置(没有应用移位)。

我错过了什么?

答案1

好的,原来是忘记了[remember picture, overlay] arguments to\begin{tikzpicture}`

通过下面的操作,它可以按预期工作:

\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}
}

答案2

有很多方法可以实现这个结果。记得运行两次。

通常文本与基线 [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}

相关内容