LaTeX で、最も外側の層にのみ列区切り線があるネストされた段組み

LaTeX で、最も外側の層にのみ列区切り線があるネストされた段組み

\setlength{\columnseprule}{0.4pt}私はドキュメント内で 3 つの列 (メインの multicols) を持つ multicols 環境を使用しています。環境内で列間の行区切りを取得することができました\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}

後で外側の列の罫線の長さを変更する場合は、問題が少なくなります。

関連情報