LaTeX 中嵌套多列,仅在最外层有列分隔线

LaTeX 中嵌套多列,仅在最外层有列分隔线

我在文档中使用了包含 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}

如果您决定随后更改外列的规则长度,那么您遇到的麻烦就会少一些。

相关内容