\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 列布局时才有效,但可以轻松修复更多列。
我还建议您更改部分标题的外观(也许使它们居中?)以明确部分标题“涵盖”两列......