我遇到了一個愚蠢的問題。我似乎無法連接最後兩個盒子。我也想要|.|在其中一個盒子裡,但我不知道它是如何完成的。有人可以幫我解決這個問題嗎?
\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 很熟悉:-)
- 你應該分析你在 mwe 中使用的程式碼...那麼您將觀察到最後一個節點的名稱是
A-9
(而不是A-8
您在 mwe 中註意到的那樣) - 對於最常見的尺寸,您應該選擇預設尺寸,例如
block/.default=22mm
,僅對於其餘的寫入所需的文字寬度(您真的需要如此不同的節點尺寸嗎?我將僅使用18mm
nad9mm
,請參閱下面的 mwe ) - 您可以像在文字中一樣在節點中編寫數學表達式,例如 $|\cdot|$
*不要使用
\resizebox{16cm}{...
.它會調整圖像中所有內容的大小,並使其變得醜陋。而是重新計算節點寬度和節點距離,它們的總和為 16 公分:14mm + 12mm + 22mm + 15mm + 22mm + 22mm +12mm +24mm +24mm + 9x2x(內間隔) +8*(節點距離)=
318 mm
幾乎是兩倍長。我建議將所有圖像元素長度減半(請參閱下面的 mwe)並使用較小的字體大小,例如
footnotesize
:
從 mwe 來看,您將在節點之間的箭頭上新增文字。如果是這種情況,您可以使用庫join
中的巨集來繪製它們chains
考慮以上意見和建議,您的 mwe 變成:
\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}
繪製圖像需要大量的耐心、準確性和時間...