赞
踩
在学习Tikz的过程中,当我们对基本代码有一定熟悉之后,作图思路就是更重要的事情了。本文借一个例子谈谈作图思路的问题。
昨天在网上看到这样一幅图形:
看上去挺复杂的一个图,心里琢磨如果用Tikz
来画,需要几行代码呢?
我看到原文附的代码共有97行,而且里面的点的坐标看上去是由计算机生成的。也就是说,绘图者先在第三方软件用鼠标画出这幅图形,然后再转成Tikz
代码,然后插入到TeX
文档中。
如果有这样的软件,对广大LaTeXer
们来说岂不是一件大好事吗?因为这样及兼顾了Tikz
的优秀出图品质,又能让绘图者节省脑力,免受复杂代码的折磨了!
事实上,笔者这种折衷的方法只能偶尔尝试一下,不宜用它代替对Tikz
的学习和钻研。有诸多理由:一是用鼠标作图很费手,而且作图难以精确。笔者就是一个手残党,一个箭头用鼠标拉三四次都不能放到心里想要的位置。二是费时,三是费事折腾,四是代码太多,五是用多了会产生依赖心理,也就不想学习Tikz
了……
当然,学习Tikz
也需要花很多时间,不过这是一件虽然烧脑但是却有趣的事情。只要每天积累一点点,进步一点点,时间久了,就能水到渠成了!
言归正传,下面我们说说这个图的绘图思路。
使用Tikz
作图与写一篇作文很相似,拿到一个图形以后,先要谋篇布局,打好腹稿。第一,节点的位置如何安排?第二,使用什么作图工具和技巧?
以文首的图形为例,这个图形虽然节点多(17个),箭头多(60个),但是,节点位置分布有规律,箭头也有规律(左边的每个节点都与相邻右侧的点相连)。
所以,作图的思路是:先安排节点的位置,上下两个节点的距离为2,水平相邻的两个节点的距离为4。节点按照四列分别用\node
工具+\foreach
循环语句批量作出,连线用\draw[->]()--();
箭头工具+\foreach
循环语句批量作出。
作图思路确定以后,就要具体安排节点的位置了。我们要考虑,坐标原点放在哪里好呢?
一种是放在图形的中心位置,让节点均匀的分布在原点周围,如下图:
另一种是放在图形左下角位置,如下图:
读者可以思考一下,这两种安排哪种更好?
节点位置安排大概花两三分钟就够了。安排好节点以后,就可以开始作图了。
作图有两种方法:一种是逐个给出17节点的坐标,然后逐条画出60个箭头。这样做想法比较简单,但操作比较繁琐乏味,没有挑战性,且耗时,易出错。
第二种方法是用循环语句\foreach
批量设置节点,批量连线。这种方法只需要6行代码就能实现,熟悉代码的话只要10分钟就够了。
最后的图形如下:
关于如何使用循环语句\foreach
作图,可以查看往期推文Tikz教程 | 批量操作 foreach 语句,观看视频学习。
如果有朋友对本文例子的代码有兴趣,那么可以点击下方链接获取:
Tikz作图教程:动手 VS 动脑? 97行代码 VS 6行代码?
今天的介绍就到这里,喜欢的话欢迎点赞、收藏、分享,谢谢啦!
【LaTeX微信交流加群:】
如果你希望交流LaTeX
使用或者TikZ
作图或者Beamer
制作幻灯片方面的问题,请先添加作者微信:niltxz
,然后加入作者的LaTeX+TikZ+Beamer
交流微信群。
更多LaTeX
资料欢迎关注公众号 大哉数学之为用
:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。