在 TikZ 中隐式命名矩阵内的节点(引号语法)

在 TikZ 中隐式命名矩阵内的节点(引号语法)

我有以下图片:

\documentclass{standalone}
\usepackage{tikz} 
\usetikzlibrary{positioning,arrows,calc,matrix,quotes}

\begin{tikzpicture}
     \matrix (a) [matrix of nodes,
                  every node/.style={anchor=west}, 
                  node distance=5mm,inner sep=0.5mm,draw]
     {
       |(ping)| ping\\
       foo bar\\
       |(todo)| todo\\
     };

     \draw[thick,red,->] (ping.west) -- (todo.east);
\end{tikzpicture}

我能否以某种方式避免使用冗长的“|(ping)| ping”语法?我想直接写 ping、(ping) 或 ["ping"],或类似的东西。

我知道 (a-1-1) 语法,但对于人类来说,它的可读性更差。

答案1

如果你的问题是是否可以避免重复,即ping只输入一次,答案是肯定的。

\documentclass{standalone}
\usepackage{tikz} 
\usetikzlibrary{positioning,arrows,calc,matrix,quotes}
\begin{document}
\begin{tikzpicture}[s/.style={alias=#1,execute at begin node=#1}]
     \matrix (a) [matrix of nodes,
                  every node/.style={anchor=west}, 
                  node distance=5mm,inner sep=0.5mm,draw]
     {
        |[s=ping]| \\
       foo bar\\
        |[s=todo]|\\
     };

     \draw[thick,red,->] (ping.west) -- (todo.east);
\end{tikzpicture}
\end{document}

在此处输入图片描述

这是否比不命名节点并使用更优雅\draw[thick,red,->] (a-1-1.west) -- (a-3-1.east);是另一个问题。

相关内容