我在文档中使用了包含 3 列的 multicols 环境(主 multicols)。我设法在环境\setlength{\columnseprule}{0.4pt}
内部实现了列之间的线分隔\begin{multicols*}{3}
。
现在我需要在主多列中使用嵌套多列环境,该环境没有分隔线。我尝试\setlength{\columnseprule}{0pt}
在嵌套多列中使用,但嵌套多列中仍然会出现分隔线。我怎样才能只在主多列中绘制分隔线,而不在嵌套多列中绘制分隔线?
我正在使用以下代码:
\documentclass[a4paper, 6pt, landscape]{scrartcl}
\usepackage{multicol}
\begin{document}
\begin{multicols*}{3}
\setlength{\columnseprule}{0.4pt}
Here follows some text with a separation line between the columns...
\begin{multicols*}{2}
\setlength{\columnseprule}{0pt}
Text in the nested multicols that should be without separation lines...
\setlength{\columnseprule}{0.4pt}
\end{multicols*}
\end{multicols*}
\end{document}
答案1
multicols
当环境列真正设置时,并不总是容易发现。将\setlength
命令移出内部multicols
环境可以解决您的问题:
\documentclass[a4paper, 6pt, landscape]{scrartcl}
\usepackage{multicol}
\usepackage{lipsum}
\begin{document}
\setlength{\columnseprule}{0.4pt}
\begin{multicols*}{3}
Here follows some text with a separation line between the columns...
\setlength{\columnseprule}{0pt}
\begin{multicols*}{2}
Text in the nested multicols that should be without separation lines...
\end{multicols*}
\setlength{\columnseprule}{0.4pt}
\lipsum
\end{multicols*}
\end{document}
答案2
请注意,如果您经常执行此操作,创建一个自定义环境可能会更方便,该环境将使用本地组自动恢复外部规则长度。
\newenvironment{innermulticol}[1]
{\begingroup\setlength{\columnseprule}{0pt}\begin{multicols*}{#1}}
{\end{multicols*}\endgroup}
如果您决定随后更改外列的规则长度,那么您遇到的麻烦就会少一些。