将 2 个 Minipages 与图形顶部对齐并缩放节点

将 2 个 Minipages 与图形顶部对齐并缩放节点

下面是我的 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}

在此处输入图片描述

相关内容