私は論文用の Web グラフを描こうとしています。TikZ を使用して個々のページをノードとして描画します。しかし、タイプセットすると、グラフは線の 1 つの小さな角に配置され、ノードが近すぎます。node distance
は機能せず、minimum size
ノードが互いに重なるように拡張されるだけです。ノード間の最小距離を設定するにはどうすればよいでしょうか。 ありがとうございます。
未完成の(まだ線がない)グラフは次のようになります。
理想的には、ページの幅と同じ幅で、ノードは互いに離れた位置に分散される必要があります。
私のコードは次のようになります:
\documentclass[12pt, oneside]{amsart}
\usepackage{geometry}
\geometry{a4paper}
\usepackage{tikz}
\begin{document}
\tikzstyle{node}=[circle, draw=black!100, thick]
\tikzstyle{dangling node}=[circle, draw=black!100, fill=black!30, thick]
\begin{tikzpicture}[minimum size=5mm][node distance=5.3cm,>=stealth?,bend angle=45,auto]
\node[node](page 1){1};
\node[node](page 2)[right of=page 1]{2};
\node[node](page 3)[below of=page 1]{3};
\node[node](page 4)[below of=page 2]{4};
\node[dangling node](page 5)[below of=page 3, xshift=5mm]{5};
\end{tikzpicture}
\end{document}
答え1
環境tikzpicture
は1つオプションの引数。つまり、LaTeX が[
の後にを見つけた場合\begin{tikzpicture}
、最初に見つけたものまですべてを取得し]
、それが環境のオプションになります。 がある場合\begin{tikzpicture}[..][..]
、2 番目の括弧のペアは実際には通常のテキストとして読み取られるだけだと思います。また、TiKZ は一般に /TikZ コマンド以外のものをすべて抑制しようとするpgf
ため、基本的に無視されます。
まとめると、 a のすべてのオプションはtikzpicture
同じ括弧のペアに配置する必要があります。
それに応じてコードを変更すると(?
の後の誤った部分を削除すると)、設定が期待どおりに動作するstealth
ことがわかります。node distance
positioning
とはいえ、TeXniciansのアドバイスに従ってライブラリを使用し、right=of
の代わりにeg と入力するとよいかもしれませんright of=
。これに関する議論は、PGF/TikZ における "right of=" と "right=of" の違いライブラリを使用するもう 1 つの理由は、positioning
と記述することで、水平方向と垂直方向のノード距離を別々に設定できることです。例は以下のコードで確認できます。gernot がコメントで述べているように、その場合はノード スタイルにnode distance=Ycm and Xcm
も追加する必要があるでしょう。は、距離がノードの中心点から計算されることを意味します。on grid
on grid
最後に、あるスタイルを別のスタイル内に置くことができるので、dangling node
が と同じスタイルである場合node
、 を追加してfill
とすることができますdangling node/.style={node,fill=black!30}
。これにより、コードの重複が減り、変更が容易になります。
\documentclass[12pt, oneside]{amsart}
\usepackage{geometry}
\geometry{a4paper}
\usepackage{tikz}
\usetikzlibrary{positioning}
\tikzset{
node/.style={circle, draw=black!100, thick, on grid}, % on grid added
dangling node/.style={node, fill=black!30}
}
\begin{document}
\begin{center}
\begin{tikzpicture}[
minimum size=5mm,
node distance=4cm and 7cm,
>=stealth,
bend angle=45,
auto
]
% grid to easier see that the node centers line up
\draw [help lines] (-1,-9) grid (9,1);
\node[node](page 1){1};
\node[node](page 2)[right=of page 1]{22};
\node[node](page 3)[below=of page 1]{3333};
\node[node](page 4)[below=of page 2]{4555555};
\node[dangling node](page 5)[below=of page 3, xshift=5mm]{5};
\end{tikzpicture}
\end{center}
\end{document}