TikZ:对于未标记的节点,在 \node 声明之后省略 {}?

TikZ:对于未标记的节点,在 \node 声明之后省略 {}?

这看起来可能有点微不足道,但我正在编写包含大量未标记节点的 TikZ 代码。我必须{}在每个节点声明的末尾输入,这让我很沮丧。有没有一些简单的方法可以避免输入这些?省略会导致{}编译错误:A node must have a (possibly empty) label text.

答案1

node contents选项可以用来代替花括号。

您可以将其应用于所有节点:

\documentclass{article}

\usepackage{tikz}

\tikzset{
    every node/.append style = {
        node contents =,
    },
}

\begin{document}
    \begin{tikzpicture}
        \node[fill=red];
    \end{tikzpicture}
\end{document}

或者您可以定义一个应用于所有相关节点的自定义样式:

\documentclass{article}

\usepackage{tikz}

\tikzset{
    notext/.style = {
        node contents =,
    },
}

\begin{document}
    \begin{tikzpicture}
        \node[notext, fill=red];
    \end{tikzpicture}
\end{document}

TikZ 文档第215页。

请注意“当在节点的选项中使用选项 [ node contents] 时,节点的解析会在选项块结束后立即停止。”

但仍然可以使用该name选项来命名节点。

答案2

{}内部使用的语法的一部分,无法避免(只能用 替换\bgroup \egroup,但这对您没有帮助)。

如果您的\nodes 没有任何内容和大小,仅用于存储坐标,那么我会改用\coordinate(或\path coordinate)。它基本上是\node没有内容的。IIRC 它在内部使用\node [..] {};

或者只需编写自己的宏来插入正确的\node语法。

相关内容