这是一个巧妙的问题!我想创建一个类似于下面的图表,但我一点也不知道该怎么做。Latex 对我来说很新,但我已经设法使用 Tikz 来绘制数字线和基本的换向图。任何答案都将不胜感激。
答案1
使用极坐标相对坐标很容易在三角网格中构建路径,例如:
\draw (0,0) -- ++(0:1) -- ++(120:1) -- ++(0:1) --
++(-120:1) -- ++(0:1) -- ++(120:2);
(angle:distance)
每个坐标都以相对于前一个坐标的形式给出(这就是++
目的)。这将绘制路径:
再次使用极坐标相对坐标,我们可以在战略位置添加一些“大点”:
\filldraw (0:0) circle(2pt) ++(0:2) ++(120:1) circle(2pt);
给予:
现在我们有了图形的基本构建块。只需重复六次,每次旋转 60 度。这是完整的代码:
\begin{tikzpicture}
\foreach \angle in {0,60,...,300} {
\begin{scope}[rotate=\angle]
\draw (0,0) -- ++(0:1) -- ++(120:1) -- ++(0:1) -- ++(-120:1)
-- ++(0:1) -- ++(120:2);
\filldraw (0:0) circle(2pt) ++(0:2) ++(120:1) circle(2pt);
\end{scope}
}
\end{tikzpicture}
再次使用极坐标可以轻松放置标签。这留给读者练习 ;-)
答案2
当然,将图表放入 TeX 文档的方法有很多种。下面是使用元帖子(如果感兴趣请点击链接)。
prologues := 3;
outputtemplate := "%j%c.eps";
beginfig(1);
r := 4cm;
path hexagon;
hexagon = for theta = 0 step 60 until 359: right scaled r rotated theta -- endfor cycle;
draw hexagon;
for i = 0 upto 2:
draw point i of hexagon -- point i+3 of hexagon;
draw point 2i+1/2 of hexagon -- point 2i+5/2 of hexagon;
draw point 2i+3/2 of hexagon -- point 2i+7/2 of hexagon;
endfor
dotlabel.urt (btex $L_1-L_3$ etex, point 1/2 of hexagon);
dotlabel.top (btex $L_2-L_3$ etex, point 3/2 of hexagon);
dotlabel.ulft(btex $L_2-L_1$ etex, point 5/2 of hexagon);
dotlabel.llft(btex $L_3-L_1$ etex, point 7/2 of hexagon);
dotlabel.bot (btex $L_3-L_2$ etex, point 9/2 of hexagon);
dotlabel.lrt (btex $L_1-L_2$ etex, point 11/2 of hexagon);
fill fullcircle scaled 3;
label("0",right scaled 10 rotated 30);
endfig;
end.
笔记:首先定义的是一个变量r半径。相对于一个关键维度定义绘图通常更容易。然后我们定义一个六边形路径;请注意 MP 如何让您for
在任务中放置一个循环。
因为我们定义了六跳路径,所以它的长度为六个单位,我们可以使用该point x of path
语法来引用我们需要的所有其他点。正如您所见,我们并不局限于整数。
该dotlabel
宏对于六个外部标签来说很方便,但由于网格的原因,原点的标签需要单独完成。