宏到多列部分内容但不到部分标题

宏到多列部分内容但不到部分标题
\section{Introduction}

我想编写一个宏,使上述行为与以下内容相同:

\usepackage{multicol}
\begin{multicols}{2}[\section{Introduction}]

赞扬代码卷积避免:最短、最简单的答案(最符合 KISS 哲学)将是公认的答案。如果不需要,请不要使用库。

答案1

这是我能想到的最好的办法。首先,我将其定义\oldsection为旧的 \section 宏,然后使用它来定义一个新的 \section 命令,该命令首先结束先前的多列环境(除非它是第一个部分,在这种情况下它不执行任何操作),然后启动一个新的多列环境,其部分标题由旧部分定义。

我还必须重新定义\enddocument以结束最后的多列。

这不是一个非常强大或可取的解决方案,但在紧急情况下可能会起作用。

\usepackage{multicol}
\usepackage{ifthen}
\let\oldsection\section
\renewcommand*{\section}[1]{%
    \ifthenelse{\thesection = 0}{}{\end{multicols}}%
    \begin{multicols}{2}[\oldsection{#1}]}
\let\oldend\enddocument
\renewcommand*{\enddocument}{\end{multicols}\oldend}

使用方法如下:

\documentclass{article}
\usepackage{lipsum}
\usepackage{multicol}
\usepackage{ifthen}
\let\oldsection\section
\renewcommand*{\section}[1]{%
    \ifthenelse{\thesection = 0}{}{\end{multicols}}%
    \begin{multicols}{2}[\oldsection{#1}]}
\let\oldend\enddocument
\renewcommand*{\enddocument}{\end{multicols}\oldend}
\begin{document}
        \section{My first section}
        \lipsum[1-2]
        \section{Another section}
        \lipsum[3-4]
\end{document}

答案2

我不太明白你的问题,但这可能会满足你的要求:

\newenvironment{xmulticols}[1]{\section{#1} \begin{multicols}{2}}{\end{multicols}}

这仅在您只想要 2 列布局时才有效,但可以轻松修复更多列。

我还建议您更改部分标题的外观(也许使它们居中?)以明确部分标题“涵盖”两列......

相关内容