在 LaTeX 中绘制六角链?

在 LaTeX 中绘制六角链?

我正在尝试绘制三种六边形链,每条链中有有限数量的六边形。它看起来有点像六边形的路径图。

我该如何绘制三个六边形,使它们共享不同数量的边,就像照片中那样?

三条链

太感谢了!

答案1

你想要的东西看起来很像有机化学。

在这种情况下,您可以使用“chemfig”

\documentclass[border=5pt]{standalone}
\usepackage{chemfig}
\begin{document}
    
    \chemfig{*6(--*6(--*6(-----)---)----)}
    
    \hspace{1cm}
    
    \chemfig{*6(-*6(-*6(-----)----)-----)}
    
    \hspace{1cm}
    
        \chemfig{*6(-*6(----*6(----)-)-----)}
\end{document}

在此处输入图片描述

答案2

只是为了好玩,使用不同的输入语法。

代码

\documentclass[tikz]{standalone}
\usetikzlibrary{shapes.geometric}
\tikzset{
  hexa setup/.style 2 args={
    x=(#2:.86602540378*#1), y=(60+#2:.86602540378*#1),
    hexa node/.style={
      shape=regular polygon, regular polygon sides=6, draw,
      rotate=30+#2,  minimum size=#1, inner sep=+0pt},
    Hexa/.style={/tikz/insert path={node[hexa node,##1]{}}}},
  hexa/.code=\pgfqkeys{/tikz/hexa}{#1},
  hexa={
    h/.style={/tikz/Hexa},0/.style={/tikz/Hexa},
    /utils/temp/.style args={#1/#2/#3}{#1/.style={
      /tikz/insert path={-- ++(#2,#3)},/tikz/Hexa}},
    /utils/temp/.list={1/1/0, 2/0/1, 3/-1/1, 4/-1/0, 5/0/-1, 6/1/-1}}}
\begin{document}
\begin{tikzpicture}[hexa setup={1cm}{0}]
  \draw[help lines] foreach \dir in {1,...,6}{(0,0) [hexa/\dir] node{\dir}};
  \draw[inner sep=0pt, <->] (0,1) -- (0,0) -- (1,0);
\end{tikzpicture}

\tikz[hexa setup={1cm}{30}]\path[hexa={h,5,5}];
\tikz[hexa setup={1cm}{45}]\path[hexa={h,1,2}];
\tikz[hexa setup={1cm}{ 0}]\path[hexa={h,1,3}];
\end{document}

输出

在此处输入图片描述 在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

答案3

这是一种使用的可能性chains

在此处输入图片描述

要制作链条,请从 开始\begin{tikzpicture}[hexchain]。如果您希望六边形的顶点位于顶部(而不是侧面),请使用hexchain=30。您可以使用任何您想要的角度。

然后使用\node[myhex, <tikz options>]{<label>}开始链。标签和任何其他 tikz 选项都是可选的。后续节点应使用 放置\node[myhex=<angle>, <tikz options>]{<label>};,其中<angle>是从上一个节点的方向。

六边形的尺寸由 全局控制\circdiam

以下是生成图像的代码:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{chains, shapes.geometric}

\tikzset{hexchain/.style={start chain, node distance=-\pgflinewidth, shape border rotate=#1},
    hexchain/.default={0},
    myhex/.style={regular polygon, regular polygon sides=6, draw, minimum size=\circdiam cm, 
        on chain=going {at=(\tikzchainprevious),shift=(#1:{\circdiam*sqrt(3)/4})}},
    myhex/.default={}}
    
\newcommand{\circdiam}{1} % diameter of circumcircle in cm

\begin{document}

\begin{tikzpicture}[hexchain]
\node[myhex]{1};
\node[myhex=-90]{2};
\node[myhex=-30]{3};
\node[myhex=210]{4};
\end{tikzpicture}\qquad
%
\begin{tikzpicture}[hexchain=30]
\node[myhex, fill=blue!30]{};
\node[myhex=-60, fill=red!30]{};
\node[myhex=-120, fill=yellow!30]{};
\node[myhex=0, fill=green!30]{};
\end{tikzpicture}

\end{document}

答案4

从中得到了一个想法回答

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}
\begin{tikzpicture}
\begin{scope}[%
every node/.style={anchor=west,
    regular polygon, 
    regular polygon sides=6,
    draw,
    minimum width=2cm,
    outer sep=0,
    }, transform shape]
    \node (A) {A};
    \node (B) at (A.corner 1) {};
    \node (C) at (B.corner 5) {};
    \node (D) at (A.corner 5) {};
    \node (E) at (D.corner 5) {};
    \node (F) at (A.side 2)[yshift=-150pt]{};
    \node (G) at (F.corner 3)[yshift=-50pt]{};
    \node (H) at (G.corner 3)[yshift=-50pt]{};
  \end{scope}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容