如何稍后在 tikzpicture 中使用新选项重新绘制节点?

如何稍后在 tikzpicture 中使用新选项重新绘制节点?

您建议如何首先定义一个具有内容的节点,然后使用新选项重新绘制其内容(覆盖最初绘制的方式)?

小伪示例:

\begin{tikzpicture}
\node (M0) at (0,0) [scale=4.0] {\text{$M_0$}};
% Now imagine more tikzcode here and imagine that we need to redraw (M0), 
% but                        
% with half its size and opacity=0.5. Also imagine there are reasons
% why we did not define (M0) by "\node (M0) at (0,0) [scale=2.0,opacity=0.5] {\text{$M_0$}};" 
% in the first place.
% So we would like to be able to now write 
\redraw[scale=2.0,opacity=0.5] (M0);
% and have tikz redraw the content of the node (M0), 
% with the new  options, and nothing of the previous content visible.
\end{tikzpicture}

这在某种程度上与如何访问节点的内容?,至少从某种意义上来说,这是仅通过引用其名称来获取 (M0) 的内容。

编辑:人们想要这样做的原因之一可以抽象地概括如下:人们想要通过口头指定节点的某些属性来创建节点。

例如,有人希望:

\createnode[color=color_value,sizeofnode=sizeofnode_value,textinnode=textinnode_value] (nameofnode) at (positionofnode);

和类似的东西。使用普通的\newcommand并不能提供这样的舒适感,因为人们必须记住意义位置参数。也就是说,在工作时,人们必须能够回答诸如“我的新命令的第九个参数的含义是什么?

我从文献中得知,要解决这个问题,应该使用

鍵盤

创建自己的可定制节点命令,并带有带有名称的选项。

所以:

附加问题。您是否同意使用鍵盤当前的问题也是这样解决的吗?

答案1

这是一个更常见的方法:使用迭代

  • 从基本代码开始
  • 重新完善和编译
  • 这本身就是一种动态现象。

以下示例尝试模仿此过程。考虑修改 (M0),或者不更改坐标,逐次运行:

  • 从小事做起\node (M1) at (3, 0) {1. start small};
  • 添加样式\node[sta] (M2) at (3,-1) {2. add a style};
  • 修改风格直到好看为止\node[stb] (M3) at (3,-3) {3. adapt style};

因此你的风格会逐渐形成:

  • 失踪
  • 通过{draw=orange,text=red},
  • 最终{draw=orange!80!yellow!50,text=red,minimum height=15mm,dashed,line width=3pt},

如果您还不确定节点的文本内容,您可以例如:

  • 就地编辑
  • 在序言中定义几个宏

结果

\documentclass[10pt,border=3mm,tikz]{standalone}
\usepackage{amsmath}

\begin{document}
 \begin{tikzpicture}[
    sta/.style={draw=orange,text=red},
    stb/.style={draw=orange!80!yellow!50,text=red,minimum height=15mm,dashed,line width=3pt},
 ]
    % ~~~ your example ~~~~~~~~~~~~~
    \node (M0) at (0,0) [scale=4.0] {\text{$M_0$}};
 
    % ~~~ better ways to do it ~~~~~~~~~
    \node       (M1) at (3, 0) {1. start small}; 
    \node[sta]  (M2) at (3,-1) {2. add a style}; 
    \node[stb]  (M3) at (3,-3) {3. adapt style}; 
 
 \end{tikzpicture}
\end{document}

相关内容