Forgot password?
 Create new account
View 215|Reply 11

用tikz画一个类似国际象棋盘的图

[Copy link]

418

Threads

1628

Posts

110K

Credits

Credits
11891

Show all posts

abababa Posted at 2024-3-7 16:48:00 |Read mode
QQ截图20240307164815.jpg
  1. \begin{tikzpicture}[every node/.style={inner sep=0pt}]
  2. \matrix (m) [matrix of math nodes,column sep=0pt,row sep=0pt,r/.style={fill=red!50,minimum size=7mm},
  3. b/.style={fill=blue!50,minimum size=7mm}]
  4. {
  5. \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~};\\
  6. \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~};\\
  7. \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~};\\
  8. \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~};\\
  9. \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~};\\
  10. \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~};\\
  11. \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~};\\
  12. \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~};\\
  13. };
  14. \end{tikzpicture}
Copy the Code


目前效果和代码如上,参考了这帖里链接中的方案和这帖里的矩阵画法。

现在还差打那个格子线没成,这个比如我要画成黑色的线,要怎么弄才简单一些?(比如能直接设置矩阵格子线的参数之类的)

700

Threads

110K

Posts

910K

Credits

Credits
94177
QQ

Show all posts

kuing Posted at 2024-3-7 22:09:08
用什么方案好,还视乎你往后还会不会继续在这个图上画些啥,或者是否还有很多类似的棋盘要画,只是染色方式不同,等等……

700

Threads

110K

Posts

910K

Credits

Credits
94177
QQ

Show all posts

kuing Posted at 2024-3-7 23:54:12
Last edited by kuing at 2024-3-8 00:39:00看了一会儿 tikz 手册,发现一个叫 execute at begin cell 的参数,可以往每个非空的 cell 前面插入东西,于是就可以这样玩儿了:

418

Threads

1628

Posts

110K

Credits

Credits
11891

Show all posts

 Author| abababa Posted at 2024-3-8 09:02:02
kuing 发表于 2024-3-7 22:09
用什么方案好,还视乎你往后还会不会继续在这个图上画些啥,或者是否还有很多类似的棋盘要画,只是染色方式 ...
目前只有两个棋盘型的图要画,只是填充方格颜色,还需要格子线,不需要再画别的东西。

这个我今天搜到一个帖子:tex.stackexchange.com/questions/226223/border … -are-not-well-placed
然后用帖子里的方式,让那些node都画上边线,再把边距用pgflinewidth调一下就好了,现在代码如下:
  1. \begin{tikzpicture}[every node/.style={inner sep=0pt}]
  2. \matrix (m) [
  3. matrix of math nodes,
  4. nodes=draw,
  5. row sep =-\pgflinewidth,
  6. column sep = -\pgflinewidth,
  7. r/.style={black, line width=1.1\pgflinewidth, fill=red!10, minimum size=7mm},
  8. b/.style={black, line width=1.1\pgflinewidth, fill=blue!10, minimum size=7mm}
  9. ]
  10. {
  11. \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~};\\
  12. \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~};\\
  13. \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~};\\
  14. \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~};\\
  15. \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~};\\
  16. \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~};\\
  17. \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~};\\
  18. \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~}; & \node[b]{~}; & \node[b]{~}; & \node[r]{~}; & \node[r]{~};\\
  19. };
  20. \end{tikzpicture}
Copy the Code

700

Threads

110K

Posts

910K

Credits

Credits
94177
QQ

Show all posts

kuing Posted at 2024-3-8 11:45:42
abababa 发表于 2024-3-8 09:02
目前只有两个棋盘型的图要画,只是填充方格颜色,还需要格子线,不需要再画别的东西。

这个我今天搜到一 ...
咋还用这复杂的写法,没看 3# 的代码吗?

418

Threads

1628

Posts

110K

Credits

Credits
11891

Show all posts

 Author| abababa Posted at 2024-3-8 13:32:43
kuing 发表于 2024-3-8 11:45
咋还用这复杂的写法,没看 3# 的代码吗?
原来是想把\node[ b ]{~}这种替换成一个新命令,但是我想让这个命令只在这个tikzpicture里起作用,离开这个环境就失效,避免其它地方再次用它,所以就没改。

700

Threads

110K

Posts

910K

Credits

Credits
94177
QQ

Show all posts

kuing Posted at 2024-3-8 14:13:08
abababa 发表于 2024-3-8 13:32
原来是想把\node[ b ]{~}这种替换成一个新命令,但是我想让这个命令只在这个tikzpicture里起作用,离开这 ...
那你将 3# 的 \newcommand 那行放 tikzpicture 环境的内部,这样就只在该图里有效。

PS、3# 中的 0.4pt 就是默认线宽,不过的确改成 \pgflinewidth 是更好的选择。

418

Threads

1628

Posts

110K

Credits

Credits
11891

Show all posts

 Author| abababa Posted at 2024-3-8 16:03:20
kuing 发表于 2024-3-8 14:13
那你将 3# 的 \newcommand 那行放 tikzpicture 环境的内部,这样就只在该图里有效。

PS、3# 中的 0.4pt  ...
这样的话,\test这个命令在下一题里想用,是不是就得renewcommand才行?我刚才试了,提示LaTeX Error: Command \test already defined.

700

Threads

110K

Posts

910K

Credits

Credits
94177
QQ

Show all posts

kuing Posted at 2024-3-8 17:10:39
abababa 发表于 2024-3-8 16:03
这样的话,\test这个命令在下一题里想用,是不是就得renewcommand才行?我刚才试了,提示LaTeX Error: Co ...
定义放环境里面那下一题还想用就得再次 \newcommand。
不过你说的提示我不太理解,\test already defined 的话,那就是已经有定义,你确定 \test 是放进 tikzpicture 里了吗?

418

Threads

1628

Posts

110K

Credits

Credits
11891

Show all posts

 Author| abababa Posted at 2024-3-8 20:37:25
kuing 发表于 2024-3-8 17:10
定义放环境里面那下一题还想用就得再次 \newcommand。
不过你说的提示我不太理解,\test already defined ...
是的,我知道这是怎么回事了,因为我把这段复制粘贴到测试文档里,而那个文档前面定义过\test,所以就报错了,我开始以为是两个tikzpicture环境里的定义冲突,怎么也找不出原因来。

Comment

😅下次得取个长点的名,不能再习惯性地写 \test 了  Posted at 2024-3-8 21:10

700

Threads

110K

Posts

910K

Credits

Credits
94177
QQ

Show all posts

kuing Posted at 2024-3-8 21:27:42
Last edited by kuing at 2024-3-8 21:37:00还有一种简便写法 |[...]| :

这样就不需要定义新命令,也是个不错的选择。

(小 b 改成了大 B,因为 [ b ] 触发了 discuz 粗体😣)

手机版Mobile version|Leisure Math Forum

2025-4-21 01:24 GMT+8

Powered by Discuz!

× Quick Reply To Top Return to the list