多列中列的数量可变,包括单个列

多列中列的数量可变,包括单个列

我想multicols用一个参数来调用,该参数是列数,并允许该参数取值 1,就像在这个最小的工作示例中一样:

\documentclass[a4paper,10pt]{report}
\usepackage{multicol,lipsum}

\newcommand{\varcols}[1]{%
\ifnum#1=1\lipsum\else{\begin{multicols}{#1}\lipsum\end{multicols}}\fi
}

\begin{document}
\varcols{3} 
\end{document}

但问题是,它迫使我(在这里\lipsum)写两次文本,这当然是不可取的。

我尝试了另一种解决方案,但不幸的是没有成功:

\newcommand{\varcols}[1]{%
\ifnum#1=1\relax\else{\begin{multicols}{#1}}\fi
\lipsum
\ifnum#1=1\relax\else{\end{multicols}}\fi
}

但这失败了:!Extra }, or forgotten \endgroup

答案1

您的\else代码是

{\begin{multicols}{#1}}

在开头处使用虚假的括号组。你只需要

\begin{multicols}{#1}

对于最后一种情况,也是同样,

相关内容