编辑

编辑

在 TikZ 中编辑具有许多节点的图形时(例如使用 tikzedt --http://www.tikzedt.org/),跟踪节点名称会变得很麻烦。因此,我希望在生成初步输出时在标签中显示它们的名称。

在阅读完文档并在互联网上搜索后,根据这篇文章,这是我得到的最接近的答案: 如何从 pgfkeys 样式元素中提取值

但我不知道如何引用当前节点的名称..

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[
% does work:
    mystyle/.style={label={right:\pgfkeysvalueof{/pgf/minimum width}}}
% does not work:
%    mystyle/.style={label={right:\pgfkeysvalueof{/pgf/name}}}
  ]

  \node [mystyle, draw] (n1) {1};
\end{tikzpicture}

\end{document}

生成的输出显示在左下方,所需的输出显示在右下方:

输出

我希望标签在样式中定义,而不是在每个单独节点的代码中定义,这样我就不需要为每个节点单独编辑代码。

提前谢谢您!

答案1

你想要这样的东西吗?

致谢阿莱南诺...

\documentclass[border=10pt,multi,tikz]{standalone}
\begin{document}
\begin{tikzpicture}[
    mystyle/.style={%
      label={right:\pgfkeysvalueof{/pgf/minimum width}},
    },
   my style/.style={%
     append after command={% courtesy of Alenanno ref: https://tex.stackexchange.com/questions/287967/drawing-thin-line-around-a-multipart-tikz-shape#comment696552_287972
       \pgfextra{\node [right] at (\tikzlastnode.mid east) {\tikzlastnode};}
     },
   },
  ]
  \node (n1) [mystyle, draw] {1};
  \node (n2) [my style, draw] at (0,1) {2};
\end{tikzpicture}
\end{document}

名字在右边

编辑

跟进percusse 的评论,你可以看到

  \draw (0,0) -- (1,1) node (n2) [my style, draw] {2} -- (2,2) node (n3) [my style, draw]{2};

在定位节点方面做了需要做的事情......

就地理位置而言,我期望如此,但其他方面则不然

但并非你所希望的那样......

答案2

这需要相当深奥的技巧,你可能不想参与其中。主要是因为名称不是设置为值,而是粗略地说是指向形状 ID 的指针。

相反,您可以使用自己的样式,这样您就可以跳过括号并同时设置名称和标签。完成后,您基本上可以删除标签部分。

\begin{tikzpicture}[mystyle/.style={name = #1, label={right:#1}}]
  \node [mystyle=n1, draw] {1};
\end{tikzpicture} 

相关内容