TikZ 画像内のシフトされた六角形

TikZ 画像内のシフトされた六角形

最近、素晴らしい答えTikZ で 3D 六角形構造を描く方法は?

しかし、修正できないような小さな「バグ」に気づきました。問題を示すコードを抜粋しました。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}

\begin{document}
\begin{tikzpicture}
  \begin{scope}[%
      every node/.style={anchor=west,regular polygon, regular polygon sides=6,draw,inner sep=0.5cm},
      transform shape]
    \node (A) {A};
    \node (B) at (A.corner 1) {B};
    \node (C) at (B.corner 5) {C};
    \node (D) at (A.corner 5) {D};
    \node (E) at (D.corner 5) {E};
    \foreach \hex in {A,...,E}
    {
      \foreach \corn in {1,...,6}
        \draw[fill=white] (\hex.corner \corn) circle (2pt); 
    }
  \end{scope}
\end{tikzpicture}
\end{document}

このコードは、六角形の 5 つのノードを描画しますが、六角形の数は少数ですが、常に「少数」の異なるピクセルが「オフ」になります (次の図を参照)。

ここに画像の説明を入力してください

  • この原因はどの値ですか?
  • なぜ「シフト」は異なる強さで起こるのでしょうか?
  • どうすれば修正できますか?

答え1

必要になりますouter sep=0。また、inner sepこれはノードの内容に依存し、それに応じてノードのサイズが変わります。代わりに、minimum height/widthキーを使用できます。

\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) {B};
    \node (C) at (B.corner 5) {C};
    \node (D) at (A.corner 5) {DECF};
    \node (E) at (D.corner 5) {E};
    \foreach \hex in {A,...,E}
    {
      \foreach \corn in {1,...,6}
        \draw[fill=white] (\hex.corner \corn) circle (2pt); 
    }
  \end{scope}
\end{tikzpicture}
\end{document}

ここに画像の説明を入力してください

関連情報