![ミニページと MD フレーム ボックスの合計高さ](https://rvso.com/image/286369/%E3%83%9F%E3%83%8B%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%A8%20MD%20%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%20%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%81%AE%E5%90%88%E8%A8%88%E9%AB%98%E3%81%95.png)
マルチコル環境で任意の数の mdframed ボックスを使用したいと考えています。各列の高さは同じである必要があります。つまり、各列の最後のボックスの端が一致している必要があります (下の図を参照)。
私の具体的な例では、3列のマルチカラム環境に5つのmdframeボックスを配置したい。提案されたようにミニページを使用してボックスの高さを調整しようとした。ここ。
完全なコード例を次に示します。
\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}
結果は次のようになります。
写真からわかるように、右の列は他の列よりも大きいです。これを自動的に解決する方法はありますか? これまでは、長さが一致するまで、他の 2 つの列のボックス間の余白を vspaces を使用して調整していました。これを行うよりエレガントな方法はありますか? ボックスの skipbelow や skipabove などの値を調整しようとしましたが、役に立ちませんでした。
答え1
3 番目の列では、ネストされた 2 つのミニページを使用します。内側のミニページは列全体の高さで、その周囲にフレームを追加します。これにより、外側のミニページが列の高さよりも大きくなります。これらが単なる es である場合は、内側のミニページの高さからと を\fbox
減算する必要があります。2\fboxsep
2\fboxrule
しかしmdframed
、 では、次のようにしました。 前文でこれらを定義しました。
\newlength\innermarg
\innermarg 4pt\relax
\newlength\outerlinewidth
\outerlinewidth 3pt\relax
\mdfsetup{outerlinewidth=\outerlinewidth, innertopmargin=\innermarg,
innerbottommargin=\innermarg, outermargin=0pt}
次に、3列目の内側のミニページについては、
\begin{minipage}[t][\columnheight-2\outerlinewidth-2\innermarg][t]{0.9\linewidth}
この方法では、フレームの境界線と幅が減算されるため、オーバーフローが発生しません。calc
私の構文ではパッケージが必要であることに注意してください。
\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}
注: 最後の列の高さにはまだわずかな差異があるようです。追跡する時間はありませんが、列の高さがさまざまな値に変更された場合でも、3 番目の列の高さから 0.8 ポイント余分に減算すると機能することがわかりました。
\begin{minipage}[t][\columnheight-2\outerlinewidth-2\innermarg-.8pt][t]{0.9\linewidth}