
数学の授業では、数学の論文の書き方を学んでいます。実際、面白い授業です。意味のある英語の授業のようなものです。多面体について書いた論文では、プラトン立体が 5 つしか存在しない理由を証明し、グラフィカルな証明も示しました。グラフィカルな証明では、3 つの六角形が共通の頂点で交わる必要がありました。文書を書いている間、必要なものを見つけようとしましたが、無駄だったので「強引に」やってみたところ、十分でした。しかし、もっと良い方法があるはずです。以下の最小限の実用的な例を検討して、より良い方法を教えてください。最終論文では、直角三角形とその辺に正三角形が必要になるため、tikz の限界に挑戦する必要があります。重い tikz が待っています。
アンディ
\documentclass{article}
\usepackage{gensymb}
\usepackage{tikz}
\usetikzlibrary{angles, calc, quotes, shapes.geometric}
\usepackage[utf8]{inputenc}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\node[draw, minimum size=3cm,regular polygon,regular polygon sides=6] (a) {};
\node[draw, minimum size=3cm,regular polygon,regular polygon sides=6] (b) at (0,2.6cm) {};
\node[draw, minimum size=3cm,regular polygon, regular polygon sides=6] (c) at (2.26cm,1.29cm) {};
\draw (a.corner 1) circle (1cm);
\draw (0,0) -- (a.corner 1) (0,0) -- (a.corner 6);
\draw (.33cm,0) arc (0:60:.33cm) node[right] {$60\degree$};
\end{tikzpicture}
\end{figure}
\end{document}
レンダリングすると次のようになります。微妙ではありますが、右側の六角形は積み重ねられた 2 つの六角形と完全には揃っていません。
答え1
これはいくぶん正確です。スタンドアロンに変更したのは、単に画像を切り取る手間を省くためです。
\documentclass{standalone}
\usepackage{gensymb}
\usepackage{tikz}
\usetikzlibrary{angles, calc, quotes, shapes.geometric}
\usepackage[utf8]{inputenc}
\begin{document}
%\begin{figure}
%\centering
\begin{tikzpicture}[every node/.style={outer sep=-0pt}]
\node[draw, minimum size=3cm,regular polygon,regular polygon sides=6] (a) {};
\node[draw, minimum size=3cm,regular polygon,regular polygon sides=6,anchor=corner 5] (b) at (a.corner 1) {};
\node[draw, minimum size=3cm,regular polygon, regular polygon sides=6,anchor=corner 3] (c) at (a.corner 1) {};
\draw (a.corner 1) circle (1cm);
\draw (0,0) -- (a.corner 1) (0,0) -- (a.corner 6);
\draw (.33cm,0) arc (0:60:.33cm) node[right] {$60\degree$};
\end{tikzpicture}
%\end{figure}
\end{document}
答え2
円の中心を として、円の中心を基準にして六角形を配置する方が簡単だと思います(0,0)
。そうすれば、極座標を使用して六角形を配置でき、高さなどを計算する必要がなくなります。
[これがより大きな図の一部である場合は、相対極座標を使用して、原点以外の点の周りに配置できます。]
\foreach \i [count=\j] in {0,120,240} \node (h\j) [my hexagon] at (\i:15mm) {};
ループを使用しましたが、\node
必要に応じて 3 つのコマンドを使用することもできます。は、my hexagon
一貫性と柔軟性のある書式設定を容易にするためのスタイルです。
\tikzset{%
my hexagon/.style={draw, minimum size=3cm, regular polygon, regular polygon sides=6},
}
すると原点にも円が描かれます。
\draw circle (10mm);
次に、角度の線を描き、角度にマークとラベルを付けます。
ロードするライブラリ を使用しますangles
。座標に という名前を付けます。コードA
はデフォルトでこれらの座標を使用するので、簡単にします。 は、で描画される角度の半径です。は、 からのラベルの に対する距離です。つまり、ラベル テキストは、 、つまりからになることがあります。B
C
angle
angle radius
angle eccentricity
angle radius
B
2.1
2mm
4.2mm
B
\draw (h3.corner 6) coordinate (A) -- (h3.center) coordinate (B) -- (0,0) coordinate (C) pic ["$60\degree$", draw, angle eccentricity=2.1, font=\scriptsize, angle radius=2mm] {angle};
[円とぶつからないように角度マークを少し小さくするようにサイズを調整しましたが、もちろんこれは必要に応じて調整できます。]
すると、六角形がきれいに揃います。
完全なコード:
\documentclass[tikz,border=10pt,multi]{standalone}
\usepackage{gensymb}
\usetikzlibrary{angles,quotes,shapes.geometric}
\usepackage[utf8]{inputenc}
\begin{document}
\tikzset{%
my hexagon/.style={draw, minimum size=3cm, regular polygon, regular polygon sides=6},
}
\begin{tikzpicture}
\foreach \i [count=\j] in {0,120,240} \node (h\j) [my hexagon] at (\i:15mm) {};
\draw circle (10mm);
\draw (h3.corner 6) coordinate (A) -- (h3.center) coordinate (B) -- (0,0) coordinate (C) pic ["$60\degree$", draw, angle eccentricity=2.1, font=\scriptsize, angle radius=2mm] {angle};
\end{tikzpicture}
\end{document}