馬鹿げた問題に遭遇しています。最後の 2 つのボックスを接続できないようです。また、ボックスの 1 つに |.| を入れたいのですが、方法がわかりません。誰か助けてくれませんか?
\documentclass{standalone}
\usepackage{amsmath,amscd,amssymb,latexsym,upref} %stmaryrd
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\usetikzlibrary{arrows.meta,
backgrounds,
chains,
fit,
quotes}
\begin{document}
\resizebox{16cm}{2cm}{%
\begin{tikzpicture}[auto,
node distance = 12mm,
start chain = A going right,
block/.style = {draw, fill=white,
text width=#1, minimum height=10mm, align=center,
outer sep=0pt, on chain},
block/.default = 18mm,
container/.style = {draw, fill=gray!50,
inner xsep=2mm, inner ysep=7mm},
]
\node [block=14mm] {a}; % block name is A-1
\node [block=12mm] {b};
\node [block=22mm] {c};
\node [block=15mm] {d};
\node [block=22mm] {e}; % block name is A-4
\node [block=22mm] {f}; % block name is A-6
\node [block=12mm] {g};
\node [block=24mm] {h}; % block name is A-8
\node [block=24mm] {i}; % block name is A-8
%
\scoped[on background layer]
\node [container, label={[anchor=north]joined},
fit= (A-5) (A-6)] (container) {};
\draw [-Stealth]
(A-1) edge (A-2) % text on arrow is between " and "
(A-2) edge (A-3)
(A-3) edge (A-4)
(A-4) edge (A-5)
(A-5) edge (A-6)
(A-6) edge (A-7);
(A-7) edge (A-8);
(A-8) edge (A-8);
\end{tikzpicture}
}
\end{document}
答え1
i でラベル付けされた最後のブロックには name がありA-9
、セミコロンを入力する場合は、新しい描画コマンドを追加する必要があります。モジュロ バーのリクエストを正しく理解できたと思います。
\documentclass{standalone}
\usepackage{amsmath,amscd,amssymb,latexsym,upref} %stmaryrd
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\usetikzlibrary{arrows.meta,
backgrounds,
chains,
fit,
quotes}
\begin{document}
\resizebox{16cm}{2cm}{%
\begin{tikzpicture}[auto,
node distance = 12mm,
start chain = A going right,
block/.style = {draw, fill=white,
text width=#1, minimum height=10mm, align=center,
outer sep=0pt, on chain},
block/.default = 18mm,
container/.style = {draw, fill=gray!50,
inner xsep=2mm, inner ysep=7mm},
]
\node [block=14mm] {a}; % block name is A-1
\node [block=12mm] {b};
\node [block=22mm] {c};
\node [block=15mm] {d};
\node [block=22mm] {e~$|.|$}; % block name is A-4
\node [block=22mm] {f}; % block name is A-6
\node [block=12mm] {g};
\node [block=24mm] {h}; % block name is A-8
\node [block=24mm] {i}; % block name is A-9
%
\scoped[on background layer]
\node [container, label={[anchor=north]joined},
fit= (A-5) (A-6)] (container) {};
\draw [-Stealth]
(A-1) edge (A-2) % text on arrow is between " and "
(A-2) edge (A-3)
(A-3) edge (A-4)
(A-4) edge (A-5)
(A-5) edge (A-6)
(A-6) edge (A-7)
(A-7) edge (A-8)
(A-8) edge (A-9);
\end{tikzpicture}
}
\end{document}
答え2
- 問題の mwe は私にとって非常に馴染み深いものです :-)
A-9
mwe で使用するコードを分析する必要があります。そうすると、最後のノードの名前が(A-8
mwe でメモしたとおりではない) であることがわかります。- 最も一般的なサイズについては、たとえば、デフォルト サイズとして選択し、残りの部分についてのみ、希望するテキスト幅を記述する必要があります (本当にこれほど異なるノード サイズが必要ですか? 私はnad
block/.default=22mm
のみを使用します。以下を参照してください)18mm
9mm
- ノード内にテキストと同じように記述できる数式、例: $|\cdot|$
* は使用しないでください
\resizebox{16cm}{...
。画像内のすべてのサイズが変更され、見苦しくなります。代わりに、ノードの幅とノードの距離を再計算して、それらの合計が 16 cm になるようにします。14mm + 12mm + 22mm + 15mm + 22mm + 22mm +12mm +24mm +24mm + 9x2x(内間隔) +8*(ノード距離)=
318 mm
ほぼ 2 倍の長さです。すべての画像要素の長さを半分にし (以下の例を参照)、フォント サイズを小さくすることをお勧めします。例
footnotesize
:
mwe では、ノード間の矢印にテキストを追加することは行われません。この場合、ライブラリjoin
のマクロを使用してそれらを描画できます。chains
上記のコメントと提案を考慮すると、次のようになります。
\documentclass[margin=3mm]{standalone}
\usepackage{amsmath,amscd,amssymb,latexsym,upref} %stmaryrd
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\usetikzlibrary{arrows.meta,
backgrounds,
chains,
fit,
quotes}
\begin{document}
\begin{tikzpicture}[
node distance = 7mm,
start chain = A going right,
block/.style = {draw, fill=white,
text width=#1, minimum height=10mm, align=center,
font=\footnotesize, inner sep=1mm, outer sep=0pt,
on chain, join=by -Stealth},
block/.default = 12mm,
container/.style = {draw, fill=gray!50,
inner xsep=2mm, inner ysep=7mm},
]
\node [block=6mm] {a}; % block name is A-1
\node [block=6mm] {b};
\node [block] {$|\cdot|$};
\node [block=6mm] {d};
\node [block] {e}; % block name is A-4
\node [block] {f}; % block name is A-6
\node [block=6mm] {g};
\node [block] {h};
\node [block] {i}; % block name is A-9
%
\scoped[on background layer]
\node [container, label={[anchor=north]joined},
fit= (A-5) (A-6)] (container) {};
\end{tikzpicture}
\end{document}
注記: ノード間の矢印にラベルを付けたい場合は、join
ブロック スタイル定義からオプションを削除し、画像に以下を追加する必要があります。
\draw [-Stealth]
(A-1) edge ["$\alpha$"] (A-2)
(A-2) edge ["$\beta$"] (A-3)
(A-3) edge ["$\gamma$"] (A-4)
(A-4) edge ["$\epsilon$"] (A-5)
(A-5) edge ["$\zeta$"] (A-6)
(A-6) edge ["$\theta$"] (A-7)
(A-7) edge ["$\iota$"] (A-8)
(A-8) edge ["$\kappa$"] (A-9);
画像オプションに以下を追加します:
every edge quote/.append style = {font=\footnotesize}
画像を描くには、多くの忍耐、正確さ、そして時間が必要です...