悠闲数学娱乐论坛(第2版)'s Archiver

kuing 发表于 2018-6-10 18:17

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

\tikz{
\node[inner sep=0pt] (x) {X};
\draw[gray,opacity=0.5,[color=Red]line width=2pt[/color]] (x.south west) rectangle (x.north east);
}
\tikz[[color=Red]line width=2pt[/color]]{
\node[inner sep=0pt] (x) {X};
\draw[gray,opacity=0.5] (x.south west) rectangle (x.north east);
}
它们的效果分别是:
[attach]6325[/attach]

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

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);
}
效果:
[attach]6326[/attach]

isee 发表于 2018-6-10 23:33

[b]回复 [url=http://kuing.orzweb.net/redirect.php?goto=findpost&pid=27070&ptid=5428]1#[/url] [i]kuing[/i] [/b]


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

其次,当然不同啦  

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

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

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

kuing 发表于 2018-6-10 23:41

[b]回复 [url=http://kuing.orzweb.net/redirect.php?goto=findpost&pid=27074&ptid=5428]3#[/url] [i]isee[/i] [/b]

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

isee 发表于 2018-6-10 23:48

[b]回复 [url=http://kuing.orzweb.net/redirect.php?goto=findpost&pid=27076&ptid=5428]4#[/url] [i]kuing[/i] [/b]


我更不懂,反正第二种是全局的。。。。。{:lol:}

kuing 发表于 2018-6-11 00:28

[b]回复 [url=http://kuing.orzweb.net/redirect.php?goto=findpost&pid=27076&ptid=5428]4#[/url] [i]kuing[/i] [/b]

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

isee 发表于 2018-6-11 00:42

[b]回复 [url=http://kuing.orzweb.net/redirect.php?goto=findpost&pid=27079&ptid=5428]6#[/url] [i]kuing[/i] [/b]


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

kuing 发表于 2018-6-11 00:53

[b]回复 [url=http://kuing.orzweb.net/redirect.php?goto=findpost&pid=27080&ptid=5428]7#[/url] [i]isee[/i] [/b]

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

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.