您建议如何首先定义一个具有内容的节点,然后使用新选项重新绘制其内容(覆盖最初绘制的方式)?
小伪示例:
\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}