两根柱子——牢不可破

两根柱子——牢不可破

以下 M(merly)WE 有一个缺陷:它将材料 5 和 6 放在了两个不同的页面上。这是它的一个正常功能,multicols也是我认为的好功能。

在此处输入图片描述

既然我不能使用浮点数(由于教学上的不良原因),我该如何避免这种情况?玩惩罚?使用不同的方法?

\documentclass[a4paper, 12pt]{article}

\usepackage{multicol}

\newcommand\fakematerial[1]{
    Material #1 - START

    \vspace{7cm}
    
    Material #1 - END 
}

\begin{document}

\begin{multicols}{2}
    \fakematerial{1}
    
    \columnbreak
    
    \fakematerial{2}
\end{multicols}


\begin{multicols}{2}
    \fakematerial{3}
    
    \columnbreak
    
    \fakematerial{4}
\end{multicols}


\begin{multicols}{2}
    \fakematerial{5}
    
    \columnbreak
    
    \fakematerial{6}
\end{multicols}

\end{document}

答案1

什么失败?

您使用了 3 次宏,每次都插入 7 厘米的固定空间(总计超过 597 pt,不包括文本行数和行间空格),但文本可用的所有垂直空间为592 pt

您只需校正垂直空间。只需将垂直空间减少到文本高度的 1/3,减去文本行和跳行的空间:

\documentclass[a4paper, 12pt]{article}
\usepackage{multicol}
\newcommand\fakematerial[1]{%
    Material #1 - START%
    \par\vspace{\dimexpr.33\textheight-2\baselineskip-2\lineskip}\par%
    Material #1 - END\par} 
\begin{document}
\begin{multicols}{2}
    \fakematerial{1}
    \columnbreak
    \fakematerial{2}
\end{multicols}
\begin{multicols}{2}
    \fakematerial{3}
    \columnbreak
    \fakematerial{4}
\end{multicols}
\begin{multicols}{2}
    \fakematerial{5}
    \columnbreak
    \fakematerial{6}
\end{multicols}
\end{document}

但是,这仍然不必要地复杂和僵化(任何布局变化,例如 \parskip 的变化,都足以破坏这个解决方案)。

对于只有两列的情况,你只需要\vfill在真正的双列模式下,不需要multicol。这样你甚至可以在\fakematerial一列的树宏之间输入一些额外的内容(包括一个以上的宏),而 LaTeX 会负责在列中分配可用空间(如果还有的话):

\documentclass[twocolumn, 12pt]{article}
\newcommand\fakematerial[1]{Material #1 - START \vfill  Material #1 - END\par} 
\begin{document}
    \fakematerial{1} 
    \fakematerial{3}
    \fakematerial{5} \newpage
    \fakematerial{2}
    \fakematerial{4}
    \fakematerial{6}
\end{document}  

姆韦

答案2

minipage一个好方法是使用斯基尔蒙莱安德里斯

这是一个硬编码解决方案(这只是专用宏或环境的起点)。

\documentclass[a4paper, 12pt]{article}

\newcommand\fakematerial[1]{
    Material #1 - START

    \vspace{7cm}
    
    Material #1 - END 
}

\begin{document}

\begin{minipage}[t]{0.45\linewidth}
    \fakematerial{1}%
\end{minipage}
\hfill%
\begin{minipage}[t]{0.45\linewidth}
    \fakematerial{2}
\end{minipage}%

\medskip

\begin{minipage}[t]{0.45\linewidth}
    \fakematerial{3}%
\end{minipage}
\hfill%
\begin{minipage}[t]{0.45\linewidth}
    \fakematerial{4}
\end{minipage}%

\medskip

\begin{minipage}[t]{0.45\linewidth}
    \fakematerial{5}%
\end{minipage}
\hfill%
\begin{minipage}[t]{0.45\linewidth}
    \fakematerial{6}
\end{minipage}%

\end{document}

相关内容