在 TikZ 中绘制子群格

在 TikZ 中绘制子群格

我是 tikz 的新手,需要绘制子群格子。我确实找到了这个“简单”的解决方法,但看起来不太好:

\documentclass[12pt]{article}
\usepackage{tikz}
\usepackage{amsfonts}
\begin{document}
\begin{figure}

\begin{tikzpicture}[node distance=2cm]
\title{Untergruppenverband der $A_4$}
\node(A4)                           {$A_4$};
\node(V4)       [below right of=A4] {$V_4$};
\node(C31)      [below left of=A4]  {$C_3$};
\node(C32)      [left of=C31]       {$C_3$};
\node(C33)      [left of=C32]       {$C_3$};
\node(C34)      [left of=C33]       {$C_3$};
\node(C22)      [below of=V4]       {$C_2$};
\node(C21)      [left of=C22]       {$C_2$};
\node(C23)      [right of=C22]      {$C_2$};

\node(1)            [below left of=C21]     {$\left\{1\right\}$};
\draw(A4)       -- (V4);
\draw(A4)       -- (C31);
\draw(A4)       -- (C32);
\draw(A4)       -- (C33);
\draw(A4)       -- (C34);
\draw(C31)      -- (C32);
\draw(C32)      --  (C33);
\draw(C33)      --  (C34);
\draw(C31)      --  (1);
\draw(C32)      --  (1);
\draw(C33)      --  (1);
\draw(C34)      --  (1);
\draw(V4)       -- (C21);
\draw(V4)       -- (C22);
\draw(V4)       -- (C23);
\draw(C21)      -- (C22);
\draw(C22)      -- (C23);
\draw(C21)      --  (1);
\draw(C22)      --  (1);
\draw(C23)      --  (1);
\end{tikzpicture}
\caption{Untergruppenverband}
\end{figure}
\end{document}

输出

我希望A_4位于图片的顶部中心,并且V_4C_2之间以及 之间的线条C_3应该更短。除此之外,我还想在某些线条上放置子群的索引(一个自然数),例如在连接V_4和 的线条上放置 2 C_2

我将不胜感激任何帮助。

答案1

tikz可以使用相对定位节点之间的偏移量进行设置。我稍微修改了您的代码,并将重复绘制剥离为\foreach-循环。这样,您可以节省一些代码行,并非常轻松地自动化一些事情。还有一些代码可以包装成循环,但这只是举例。

此外,还有使用midway-nodes 创建的带标签的行。只需查看代码,如果您还有其他问题,请再次提问。

\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usepackage{amsfonts}
\begin{document}
\begin{figure}

% center everything in the figure
\centering
% horizontal node distance
\newcommand{\mydistance}{.6cm}
\begin{tikzpicture}[node distance=2cm]
\title{Untergruppenverband der $A_4$}
\node(A4)                           {$A_4$};
\node(V4)       [below right=2cm and 2cm of A4] {$V_4$};
\node(C31)      [below left=2cm and 0cm of A4]  {$C_3$};
\node(C32)      [left=\mydistance of C31]       {$C_3$};
\node(C33)      [left=\mydistance of C32]       {$C_3$};
\node(C34)      [left=\mydistance of C33]       {$C_3$};
\node(C22)      [below=2cm of V4]       {$C_2$};
\node(C21)      [left=\mydistance of C22]       {$C_2$};
\node(C23)      [right=\mydistance of C22]      {$C_2$};
\node(1)            [below=6cm of A4]     {$\left\{1\right\}$};
\draw(A4)       -- (V4);
\foreach \x\y in {1,2,3,4} {
    \draw (A4) -- (C3\x) node [midway, fill=white] {3};
    \draw (C3\x) -- (1);

}
\foreach \x\y in {1/2,2/3,3/4} {
    \draw(V4) -- (C2\x) node [midway, fill=white] {2};
\draw (C3\x) -- (C3\y);
\draw (C2\x) -- (1);
}
\draw(C21)      -- (C22);
\draw(C22)      -- (C23);
\end{tikzpicture}
\caption{Untergruppenverband}
\end{figure}
\end{document}

在此处输入图片描述

答案2

另一种方法是我修改了您的部分代码,例如,修改了节点 A4 的坐标,然后所有后续内容都将引用它。这node distance=<dim>可用于增加/减少总体布局。

在此处输入图片描述

代码

\documentclass[12pt]{article}
\usepackage[papersize={25cm,10cm}]{geometry}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usepackage{amsfonts}
\begin{document}
\begin{figure}

\begin{tikzpicture}[node distance=2.5cm,line width=1pt]
\title{Untergruppenverband der $A_4$}
\node(A4) at (0,0)     {$A_4$};
\node(V4)       [below right  =0.2cm of A4] {$V_4$};
\node(C31)      [below left of=A4]  {$C_3$};
\node(C32)      [left of=C31]       {$C_3$};
\node(C33)      [left of=C32]       {$C_3$};
\node(C34)      [left of=C33]       {$C_3$};
\node(C21)      [below right of =A4]       {$C_2$};
\node(C22)      [right of=C21]      {$C_2$};
\node(C23)      [right of=C22]      {$C_2$};

\node(1)        [below=5cm of A4]   {$\left\{1\right\}$};
\draw(A4)       -- (V4);
\draw(A4)       -- (C31);
\draw(A4)       -- node[left]{3}  (C32);
\draw(A4)       -- (C33);
\draw(A4)       -- (C34);
\draw(C31)      -- (C32);
\draw(C32)      -- (C33);
\draw(C33)      -- (C34);
\draw(C31)      --  (1);
\draw(C32)      --  (1);
\draw(C33)      --  (1);
\draw(C34)      --  (1);
\draw(V4)       --(C21);
\draw(V4)       -- node[midway,left]{2} (C22);
\draw(V4)       -- (C23);
\draw(C21)      -- (C22);
\draw(C22)      -- (C23);
\draw(C21)      --  (1);
\draw(C22)      --  (1);
\draw(C23)      --  (1);
\end{tikzpicture}
\caption{Untergruppenverband}
\end{figure}
\end{document}

相关内容