我有一个较大的文档,其中的文本通常以多列方式排列。现在我必须删除打印布局的列,并想重新定义多列环境。
不幸的是,“Renewenvironment”不能那么容易地工作,显然是因为在环境中指定了列数。
有人能给我什么好的建议吗?
\documentclass{scrreprt}
\usepackage{multicol}
\usepackage{blindtext}
\begin{document}
\blindtext
\begin{multicols}{2}
\blindtext
\end{multicols}
\blindtext
\end{document}
答案1
环境multicols
有一个强制参数,您只需忽略它,还有一个可选参数,用于在切换到多列格式之前打印文本,通常是一个部分标题。
\documentclass{scrreprt}
\usepackage{multicol}
\usepackage{blindtext}
\RenewDocumentEnvironment{multicols}{mO{}}{\par#2\par}{\par}
\begin{document}
\blindtext
\begin{multicols}{2}
\blindtext
\end{multicols}
\begin{multicols}{2}[\section{Title}]
\blindtext
\end{multicols}
\blindtext
\end{document}
答案2
以下应该有效
\DeclareDocumentEnvironment{multicols}{mO{}+b}{%
\IfValueT{#2}{\notblank{#2}{#2}{}}#3}{}
如果您的 LaTeX 版本太旧,则需要加载etoolbox
(对于\notblank
),也许xparse
(对于)。\Declare...