멀티콜 환경에서 임의의 수의 mdframed 상자를 사용하고 싶습니다. 각 열의 높이는 동일해야 합니다. 즉, 각 열의 마지막 상자 끝이 일치해야 함을 의미합니다(아래 그림 참조).
내 구체적인 예에서는 3열 다중 열 환경에 5개의 mdframed 상자를 넣고 싶습니다. 제안된 대로 미니페이지를 사용하여 상자의 높이를 조정해 보았습니다.여기.
전체 코드 예제는 다음과 같습니다.
\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}
결과는 다음과 같습니다.
그림에서 볼 수 있듯이 오른쪽 열이 다른 열보다 큽니다. 이 문제를 자동으로 해결하는 방법이 있나요? 지금까지 나는 길이가 일치할 때까지 다른 두 열의 상자 사이의 여백을 조정하기 위해 vspaces를 사용했습니다. 이를 수행하는 더 우아한 방법이 있습니까? 이미 상자 아래로 건너뛰기 또는 상자 위로 건너뛰기 등의 값을 조정하려고 시도했지만 도움이 되지 않습니다.
답변1
세 번째 열에서는 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}
참고: 마지막 열 높이에는 여전히 약간의 차이가 있는 것 같습니다. 추적할 시간은 없지만 세 번째 열의 열 높이에서 추가로 0.8pt를 빼면 열 높이가 다양한 값으로 변경되는 경우에도 작동한다는 것을 알았습니다.
\begin{minipage}[t][\columnheight-2\outerlinewidth-2\innermarg-.8pt][t]{0.9\linewidth}