我想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}
对于最后一种情况,也是同样,