我是 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_4
和C_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}