下面是我的 MWE 以及它应该是什么样子的示例。我昨天问了一个类似的问题,请参阅这里。
现在的问题是,我需要两个图在垂直方向上具有相同的高度,因此节点间距相等,并且还要与顶部对齐。
将两个小页面在顶部对齐将是最有用的一步。
\documentclass[
a4paper, % Papierformat A4
12pt, % Schrift 12-Punkt
headsepline, % mit Linie unter der Kopfzeile
numbers=noenddot, % Nummern ohne Punkt am Ende
index=totoc, % Index mit Nummer im Inhaltsverzeichnis
fleqn, % Formeln werden linksbündig statt zentriert
angeordnet
headings=normal % Etwas kleinere Überschriften
]{scrbook}
\usepackage{tikz}
\usetikzlibrary{positioning,chains,arrows, decorations, patterns}
\usepackage{subcaption}
\tikzset{rounddiagram/.style={>=stealth'},
punktchain/.style={
rectangle,
rounded corners,
draw=black, very thick,
text width=10em,
minimum height=3em,
text centered,
on chain},
every join/.style={->, thick,shorten >=1pt}}
\begin{document}
\begin{figure}[h]
\vspace{0pt}
\begin{minipage}[t]{0.5\textwidth}
\centering
\begin{tikzpicture}
[style=rounddiagram, node distance=.4cm, start chain=going below]
\node[punktchain, fill=gray, text=white, join]{CbmStsFindClusters};
\node[punktchain, join]{ProcessData};
\node[punktchain, join]{Reset};
\node[punktchain, join]{ProcessDigis};
\node[punktchain, join]{ProcessBuffer};
\node[punktchain, join]{Analyze};
\node[punktchain, join]{RegisterClusters};
\end{tikzpicture}
\subcaption{Unterschritte von CbmStsFindClusters}
\end{minipage}
\begin{minipage}[t]{0.5\textwidth}
\centering
\begin{tikzpicture}
[style=rounddiagram, node distance=.4cm, start chain=going below]
\node[punktchain, fill=gray, text=white, join]{CbmStsFindHits};
\node[punktchain, join]{ProcessData};
\node[punktchain, join]{SortClusters};
\node[punktchain, join]{FindHitsInModules};
\end{tikzpicture}
\subcaption{Unterschritte von CbmStsFindHits}
\end{minipage}
\caption{Die Tasks CbmStsFindClusters und CbmStsFindHits}
\label{img:tasks}
\end{figure}
\end{document}
谢谢!
答案1
您可以在一个框中排版两个链;第二个链首先以零间隔排版,然后根据根据两个框之间的总高度差计算出的间隔重新排版。
\documentclass[
a4paper, % Papierformat A4
12pt, % Schrift 12-Punkt
headsepline, % mit Linie unter der Kopfzeile
numbers=noenddot, % Nummern ohne Punkt am Ende
index=totoc, % Index mit Nummer im Inhaltsverzeichnis
fleqn, % Formeln werden linksbündig statt zentriert angeordnet
headings=normal % Etwas kleinere Überschriften
]{scrbook}
\usepackage{tikz}
\usetikzlibrary{positioning,chains,arrows, decorations, patterns}
\usepackage{subcaption}
\tikzset{
rounddiagram/.style={>=stealth'},
punktchain/.style={
rectangle,
rounded corners,
draw=black,
very thick,
text width=10em,
minimum height=3em,
text centered,
on chain
},
every join/.style={->, thick,shorten >=1pt},
}
\newsavebox{\leftbox}
\newsavebox{\rightbox}
\newlength{\compute}
\begin{document}
\begin{figure}[htp]
\sbox{\leftbox}{%
\begin{tikzpicture}[style=rounddiagram, node distance=.4cm, start chain=going below]
\node[punktchain, fill=gray, text=white, join]{CbmStsFindClusters};
\node[punktchain, join]{ProcessData};
\node[punktchain, join]{Reset};
\node[punktchain, join]{ProcessDigis};
\node[punktchain, join]{ProcessBuffer};
\node[punktchain, join]{Analyze};
\node[punktchain, join]{RegisterClusters};
\end{tikzpicture}%
}
\newcommand{\rightpicture}[1]{%
\begin{tikzpicture}[style=rounddiagram, node distance=#1, start chain=going below]
\node[punktchain, fill=gray, text=white, join]{CbmStsFindHits};
\node[punktchain, join]{ProcessData};
\node[punktchain, join]{SortClusters};
\node[punktchain, join]{FindHitsInModules};
\end{tikzpicture}%
}
\sbox{\rightbox}{\rightpicture{0cm}}
\setlength{\compute}{\dimexpr(\ht\leftbox+\dp\leftbox-\ht\rightbox-\dp\rightbox)/3}
\begin{subfigure}{0.5\textwidth}
\centering
\usebox{\leftbox}
\subcaption{Unterschritte von CbmStsFindClusters}
\end{subfigure}%
\begin{subfigure}{0.5\textwidth}
\centering
\rightpicture{\compute}
\subcaption{Unterschritte von CbmStsFindHits}
\end{subfigure}
\caption{Die Tasks CbmStsFindClusters und CbmStsFindHits}\label{img:tasks}
\end{figure}
\end{document}
答案2
有很多种可能性,这是其中一种:adjustbox
。然后您可以node sep
类似地计算上一个答案。
\documentclass[
a4paper, % Papierformat A4
12pt, % Schrift 12-Punkt
headsepline, % mit Linie unter der Kopfzeile
numbers=noenddot, % Nummern ohne Punkt am Ende
index=totoc, % Index mit Nummer im Inhaltsverzeichnis
fleqn, % Formeln werden linksbündig statt zentriert
angeordnet
headings=normal % Etwas kleinere Überschriften
]{scrbook}
\usepackage{tikz}
\usetikzlibrary{positioning,chains,arrows, decorations, patterns}
\usepackage{subcaption}
\usepackage{adjustbox}
\tikzset{rounddiagram/.style={>=stealth'},
punktchain/.style={outer sep=0pt,
rectangle,
rounded corners,
draw=black, very thick,
text width=10em,
minimum height=3em,
text centered,
on chain},
every join/.style={->, thick,shorten >=1pt}}
\begin{document}
\begin{figure}[h]
\vspace{0pt}
\adjustbox{valign=t,minipage={0.49\textwidth}}{%
\centering
\begin{tikzpicture}[style=rounddiagram, node distance=.4cm, start chain=going below]
\node[punktchain, fill=gray, text=white, join]{CbmStsFindClusters};
\node[punktchain, join]{ProcessData};
\node[punktchain, join]{Reset};
\node[punktchain, join]{ProcessDigis};
\node[punktchain, join]{ProcessBuffer};
\node[punktchain, join]{Analyze};
\node[punktchain, join]{RegisterClusters};
\end{tikzpicture}
\subcaption{Unterschritte von CbmStsFindClusters}}
\adjustbox{valign=t,minipage={0.49\textwidth}}{%
\centering
\begin{tikzpicture}[style=rounddiagram, start chain=going below]
\pgfmathsetmacro{\mydist}{(((7-4)*3em+6*0.4cm)/3}
\begin{scope}[node distance=\mydist*1pt]
\node[punktchain, fill=gray, text=white, join]{CbmStsFindHits};
\node[punktchain, join]{ProcessData};
\node[punktchain, join]{SortClusters};
\node[punktchain, join]{FindHitsInModules};
\end{scope}
\end{tikzpicture}
\subcaption{Unterschritte von CbmStsFindHits}}
\caption{Die Tasks CbmStsFindClusters und CbmStsFindHits}
\label{img:tasks}
\end{figure}
\end{document}