我正在尝试绘制一张用于教育目的的考试图表。我使用该包multicols
将问题显示为两列。该考试的每个问题分为三个部分:
- 基础文本
- 措辞
- 答案
我将这些区块分别分组放在一个迷你页面中,这样它们就不会被拆分。我们希望这些区块能够跨越同一页上的列,但我们很难找到如何防止一个问题被分成两页。
以下是一个例子:
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[left=15mm,right=15mm,top=15mm,bottom=15mm]{geometry}
\usepackage[portuguese]{babel}
\usepackage{multicol}
\usepackage{blindtext}
\begin{document}
\begin{multicols*}{2}
\begin{minipage}{0.48\textwidth}
\noindent{\bf QUESTION 1}\\
\textbf{BASE-TEXT}\\
\blindtext
\end{minipage}
\vfill
\begin{minipage}{0.48\textwidth}
\textbf{WORDING}\\
\blindtext
\end{minipage}
\vfill
\begin{minipage}{0.48\textwidth}
\textbf{ANSWERS}\\
\blinditemize
\end{minipage}
\vfill
\begin{minipage}{0.48\textwidth}
\noindent{\bf QUESTION 2}\\
\textbf{BASE-TEXT}\\
\blindtext
\end{minipage}
\vfill
\begin{minipage}{0.48\textwidth}
\textbf{WORDING}\\
\blindtext
\end{minipage}
\vfill
\begin{minipage}{0.48\textwidth}
\textbf{ANSWERS}\\
\blinditemize
\end{minipage}
\vfill
\begin{minipage}{0.48\textwidth}
\noindent{\bf QUESTION 3}\\
\textbf{BASE-TEXT}\\
\blindtext
\end{minipage}
\vfill
\begin{minipage}{0.48\textwidth}
\textbf{WORDING}\\
\blindtext
\end{minipage}
\vfill
\begin{minipage}{0.48\textwidth}
\textbf{ANSWERS}\\
\blinditemize
\end{minipage}
\end{multicols*}
\end{document}
如果你编译此代码,你会注意到问题 2 的块跨越了两列,这是可取的(列约束),但问题 3 分为两页(页面约束),我们不能让这种情况发生。
我们尝试使用\samepage
,但没有效果。
我们还尝试在第一个和第二个块之后添加\nobreak
。我们没有\nobreak
在第三个块之后添加,因为我们不想在此时阻止中断。一旦每个问题都完全放在一列中,此尝试就会保持页面约束,但会破坏列约束。
有没有办法在 LaTeX 中同时保持这两个约束?
美好祝愿。
答案1
对于这一点来说,使用标准可能更容易,twocolumn
而不是multicol
因为全局平衡使得更难知道您处于哪一列。
\documentclass[a4paper,twocolumn]{article}
\usepackage[utf8]{inputenc}
\usepackage[left=15mm,right=15mm,top=15mm,bottom=15mm]{geometry}
\usepackage[portuguese]{babel}
\raggedbottom
\usepackage{blindtext}
\setlength\parindent{0pt}
\makeatletter
\def\hmm{\par\if@firstcolumn\else \par \nopagebreak \fi\par\bigskip}
\makeatother
\begin{document}
\begin{minipage}{\columnwidth}
\textbf{QUESTION 1}\\
\textbf{BASE-TEXT}\\
\blindtext
\end{minipage}
\hmm
\begin{minipage}{\columnwidth}
\textbf{WORDING}\\
\blindtext
\end{minipage}
\hmm
\begin{minipage}{\columnwidth}
\textbf{ANSWERS}\\
\blinditemize
\end{minipage}
\vfill
\begin{minipage}{\columnwidth}
\textbf{QUESTION 2}\\
\textbf{BASE-TEXT}\\
\blindtext
\end{minipage}
\hmm
\begin{minipage}{\columnwidth}
\textbf{WORDING}\\
\blindtext
\end{minipage}
\hmm
\begin{minipage}{\columnwidth}
\textbf{ANSWERS}\\
\blinditemize
\end{minipage}
\vfill
\begin{minipage}{\columnwidth}
\textbf{QUESTION 3}\\
\textbf{BASE-TEXT}\\
\blindtext
\end{minipage}
\hmm
\begin{minipage}{\columnwidth}
\textbf{WORDING}\\
\blindtext
\end{minipage}
\hmm
\begin{minipage}{\columnwidth}
\textbf{ANSWERS}\\
\blinditemize
\end{minipage}
\end{document}