同一页面和多栏

同一页面和多栏

我有时会在论文中使用多列来表示特定块,它有一个标题和类似于以下内容的内容块:

\documentclass{article}

\usepackage{lipsum}
\usepackage{multicol}

\newenvironment{mh}[1]{%
    \textbf{#1}%
    \begin{multicols}{2}%
}{%BODY
    \end{multicols}%
}

\begin{document}
    \begin{mh}{This is the title.}
        \lipsum[1]
    \end{mh}
\end{document}

顶部

我遇到了一个事件,它在标题和正文之间创建了一个分页符,所以我需要能够指示它们位于同一页上。但问题是,使用会begin{samepage} ... \end{samepage}破坏multicols环境,将所有文本放在一列中,如下所示:

 %NEED TO FORCE HEADING AND BLOCK ON SAME PAGE
 \begin{samepage}
    \begin{mh}{This is the title.}
         \lipsum[1]
    \end{mh}
\end{samepage}

底部

有人知道这个该怎么做吗?

答案1

最简单的方法:使用环境所具有的可选参数{multicols}来实现这样的目的:

\documentclass{article}

\usepackage{lipsum}
\usepackage{multicol}

\newenvironment{mh}[1]{%
  \begin{multicols}{2}[\textbf{#1}]%
}{%BODY
 \end{multicols}%
}

\begin{document}

\vspace*{.89\textheight}% this page
% \vspace*{.90\textheight}% next page

\begin{mh}{This is the title.}
  \lipsum[1]
\end{mh}

\end{document}

答案2

您可以使用包裹needspace如果没有足够的空间容纳标题和内容,则添加新页面。

笔记:

  • 最好提供能够实际重现该问题的 MWE(如下面的示例所示,如果您注释掉\needspace{3\baselineskip}.

  • 下面的 MWE 将在页面上保留三行,否则将转到新页面。如果您希望保留带有节标题的更多行,您可以将因子增加到3更大的数字。

代码:

\documentclass{article}
\usepackage{needspace}

\usepackage{lipsum}
\usepackage{multicol}

\newenvironment{mh}[1]{%
    \needspace{3\baselineskip}%
    \textbf{#1}%
    \begin{multicols}{2}%
}{%BODY
    \end{multicols}%
}

\begin{document}
    \lipsum[1-5]
    \begin{mh}{This is the title.}
        \lipsum[1]
    \end{mh}
\end{document}

答案3

您可以改用小页面环境:

\documentclass{article}

\usepackage{lipsum}
\usepackage{multicol}

\newenvironment{mh}[1]{%
    \textbf{#1}%
    \begin{multicols}{2}%
}{%BODY
    \end{multicols}%
}

\begin{document}

 \begin{minipage}{\linewidth}
    \begin{mh}{This is the title.}
         \lipsum[1]
    \end{mh}
\end{minipage}

\end{document}

相关内容