![Gesamthöhe der Minipages und MDFramed-Boxen](https://rvso.com/image/286369/Gesamth%C3%B6he%20der%20Minipages%20und%20MDFramed-Boxen.png)
Ich möchte eine beliebige Anzahl von MDFramed-Boxen in einer Multicol-Umgebung verwenden. Jede Spalte sollte die gleiche Höhe haben, was bedeutet, dass die Enden der letzten Box in jeder Spalte übereinstimmen sollten (siehe Abbildung unten).
In meinem konkreten Beispiel möchte ich 5 mdframed-Boxen in eine 3-Spalten-Multicols-Umgebung einfügen. Ich habe versucht, die Höhe der Boxen wie vorgeschlagen mithilfe von Minipages anzupassen.Hier.
Hier ist ein vollständiges Codebeispiel:
\documentclass{article}
\usepackage[framemethod=TikZ]{mdframed}
\usepackage{multicol}
\newlength{\columnheight}
\setlength{\columnheight}{10cm}
\begin{document}
\centering
\begin{multicols}{3}
% First Column
\begin{minipage}[t][\columnheight][t]{0.9\linewidth}
\begin{mdframed}
\begin{minipage}[t][0.6\columnheight][t]{0.9\linewidth}
\begin{itemize}
\item Point 1
\item Point 2
\item Point 3
\end{itemize}
\end{minipage}
\end{mdframed}
\vfill
\begin{mdframed}
\begin{minipage}[t][0.2\columnheight][t]{0.9\linewidth}
\begin{itemize}
\item Point 1
\end{itemize}
\end{minipage}
\end{mdframed}
\end{minipage}
\columnbreak
% Second Column
\begin{minipage}[t][\columnheight][t]{0.9\linewidth}
\begin{mdframed}
\begin{minipage}[t][0.4\columnheight][t]{0.9\linewidth}
\begin{itemize}
\item Point 1
\item Point 2
\end{itemize}
\end{minipage}
\end{mdframed}
\vfill
\begin{mdframed}
\begin{minipage}[t][0.4\columnheight][t]{0.9\linewidth}
\begin{itemize}
\item Point 1
\item Point 2
\end{itemize}
\end{minipage}
\end{mdframed}
\end{minipage}
\columnbreak
% Third Column
\begin{minipage}[t][\columnheight][t]{0.9\linewidth}
\begin{mdframed}
\begin{minipage}[t][\columnheight][t]{0.9\linewidth}
\begin{itemize}
\item Point 1
\end{itemize}
\end{minipage}
\end{mdframed}
\vfill
\end{minipage}
\columnbreak
\end{multicols}
\end{document}
Das Ergebnis sieht wie folgt aus:
Wie man im Bild sehen kann, ist die rechte Spalte größer als die anderen. Gibt es eine Möglichkeit, das automatisch zu lösen? Bisher verwende ich vspaces, um den Abstand zwischen den Boxen in den anderen beiden Spalten so anzupassen, dass die Längen übereinstimmen. Gibt es eine elegantere Möglichkeit, das zu tun? Ich habe bereits versucht, Werte wie „skipbelow“ oder „skipabove“ der Boxen anzupassen, aber das hilft nicht.
Antwort1
In Ihrer 3. Spalte verwenden Sie 2 verschachtelte Miniseiten. Die innere hat die volle Spaltenhöhe und Sie fügen einen Rahmen darum hinzu, der die äußere Miniseite tatsächlich größer als die Spaltenhöhe macht. Wenn dies bloße „ \fbox
es“ wären, müsste man 2\fboxsep
und 2\fboxrule
von der Höhe der inneren Miniseite abziehen.
Aber in mdframed
habe ich es folgendermaßen gemacht. Ich habe diese in der Präambel definiert:
\newlength\innermarg
\innermarg 4pt\relax
\newlength\outerlinewidth
\outerlinewidth 3pt\relax
\mdfsetup{outerlinewidth=\outerlinewidth, innertopmargin=\innermarg,
innerbottommargin=\innermarg, outermargin=0pt}
Dann für die innere Miniseite der 3. Spalte,
\begin{minipage}[t][\columnheight-2\outerlinewidth-2\innermarg][t]{0.9\linewidth}
Auf diese Weise werden Rahmenrand und -breite abgezogen, sodass es nicht zu einem Überlauf kommt. Beachten Sie, dass calc
für meine Syntax ein Paket erforderlich ist.
\documentclass{article}
\usepackage[framemethod=TikZ]{mdframed}
\usepackage{multicol}
\usepackage{calc}
\newlength{\columnheight}
\setlength{\columnheight}{10cm}
\newlength\innermarg
\innermarg 4pt\relax
\newlength\outerlinewidth
\outerlinewidth 3pt\relax
\mdfsetup{outerlinewidth=\outerlinewidth, innertopmargin=\innermarg,
innerbottommargin=\innermarg, outermargin=0pt}
\begin{document}
\centering
\begin{multicols}{3}
% First Column
\begin{minipage}[t][\columnheight][t]{0.9\linewidth}
\begin{mdframed}
\begin{minipage}[t][0.6\columnheight][t]{0.9\linewidth}
\begin{itemize}
\item Point 1
\item Point 2
\item Point 3
\end{itemize}
\end{minipage}
\end{mdframed}
\vfill
\begin{mdframed}
\begin{minipage}[t][0.2\columnheight][t]{0.9\linewidth}
\begin{itemize}
\item Point 1
\end{itemize}
\end{minipage}
\end{mdframed}
\end{minipage}
\columnbreak
% Second Column
\begin{minipage}[t][\columnheight][t]{0.9\linewidth}
\begin{mdframed}
\begin{minipage}[t][0.4\columnheight][t]{0.9\linewidth}
\begin{itemize}
\item Point 1
\item Point 2
\end{itemize}
\end{minipage}
\end{mdframed}
\vfill
\begin{mdframed}
\begin{minipage}[t][0.4\columnheight][t]{0.9\linewidth}
\begin{itemize}
\item Point 1
\item Point 2
\end{itemize}
\end{minipage}
\end{mdframed}
\end{minipage}
\columnbreak
% Third Column
\begin{minipage}[t][\columnheight][t]{0.9\linewidth}
\begin{mdframed}
\begin{minipage}[t][\columnheight-2\outerlinewidth-2\innermarg][t]{0.9\linewidth}
\begin{itemize}
\item Point 1
\end{itemize}
\end{minipage}
\end{mdframed}
% \vfill
\end{minipage}
\columnbreak
\end{multicols}
\end{document}
Hinweis: Es scheint immer noch eine ganz kleine Diskrepanz in der Höhe der letzten Spalte zu geben. Ich habe keine Zeit, sie aufzuspüren, habe aber festgestellt, dass das Abziehen von zusätzlichen 0,8 pt von der Spaltenhöhe der 3. Spalte funktioniert, selbst wenn die Spaltenhöhe auf verschiedene Werte geändert wird:
\begin{minipage}[t][\columnheight-2\outerlinewidth-2\innermarg-.8pt][t]{0.9\linewidth}