找回密码
 快速注册
搜索
查看: 1269|回复: 7

tikz这两种方式竟然不等价,关于line width

[复制链接]

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2018-6-10 18:17 |阅读模式
\tikz{
\node[inner sep=0pt] (x) {X};
\draw[gray,opacity=0.5,line width=2pt] (x.south west) rectangle (x.north east);
}
\tikz[line width=2pt]{
\node[inner sep=0pt] (x) {X};
\draw[gray,opacity=0.5] (x.south west) rectangle (x.north east);
}
它们的效果分别是:
QQ截图20180610181613.png

@isee 你用最新版texlive试试看是不是也是这样?

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

 楼主| kuing 发表于 2018-6-10 18:27
而且,前者的线的中间也并不是在 x 的边界上,这可以通过将线宽改小看来出,比如:
\tikz{
\node[inner sep=0pt] (x) {X};
\draw[line width=.05pt] (x.south west) rectangle (x.north east);
}
\tikz[line width=.05pt]{
\node[inner sep=0pt] (x) {X};
\draw (x.south west) rectangle (x.north east);
}
效果:
QQ截图20180610182659.png

830

主题

4862

回帖

3万

积分

积分
36159

显示全部楼层

isee 发表于 2018-6-10 23:33
回复 1# kuing


这当然效果不同。
首先,我本地执行效果与你一样。

其次,当然不同啦  

\tikz{
\node[inner sep=0pt,line width=2pt] (x) {X};
\draw[gray,opacity=0.5,line width=2pt] (x.south west) rectangle (x.north east);
}  

才和第二个代码等价,不信你试。

难得你出现这样的低级错误

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

 楼主| kuing 发表于 2018-6-10 23:41
回复 3# isee

哦,看来我对 node 的理解不到位。
是不是说,node 就算没画线,但也会有一个 line width 的宽度存在?

830

主题

4862

回帖

3万

积分

积分
36159

显示全部楼层

isee 发表于 2018-6-10 23:48
回复 4# kuing


我更不懂,反正第二种是全局的。。。。。

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

 楼主| kuing 发表于 2018-6-11 00:28
回复 4# kuing

准确说应该是,node 的边框不管画不画,它的边角方位点(.north 等这些)都是包括那线宽的。
测试了下似乎是这样……

830

主题

4862

回帖

3万

积分

积分
36159

显示全部楼层

isee 发表于 2018-6-11 00:42
回复 6# kuing


实际效果是这样,我以前也碰到多,但没多想

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

 楼主| kuing 发表于 2018-6-11 00:53
回复 7# isee

我以前都没注意到,而且改变线宽通常都在全局改,今天在测试一些符号时写在了局部,才发现了。

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 11:55

Powered by Discuz!

× 快速回复 返回顶部 返回列表