網掛けマルチカラム II

網掛けマルチカラム II

前回の質問の続きですが、網掛けの段組み、マルチコル環境で、外側の 4 つの角 (つまり、ページ余白のすぐ隣の角) に丸い角を設定するにはどうすればよいでしょうか。

この質問は、マルチカラムのシェーディングが使用されている場合、またはマルチカラムの境界線が使用されている場合にのみ実際に関連します。解決策はこの質問のパート I に含まれています (上記のリンクを参照)。

したがって、最も重要なことは、環境が途中で改ページできる必要があるということです。David Carlisle はコメントの 1 つでボックス コマンドにパッチを適用することを提案しましたが、左の列の左 2 つの角のみを丸くし、右の列の右 2 つの角を丸くし、中央の列 (3 列以上ある場合) の角を丸くしないようにするにはどうすればよいでしょうか。

答え1

ここに画像の説明を入力してください

質問にあるように、これは基本的に次のもの\fcolorboxに置き換えるだけですmdframed(正しいmdframed呪文を提供してくれたMarcoに感謝します)

\documentclass{article}
\usepackage{multicol}
\usepackage[framemethod=tikz]{mdframed}

\makeatletter
\let\old@page@sofar\page@sofar
\let\old@box\box
\let\old@rlap\rlap
\def\page@sofar{%
\let\box\colorcolumn
\def\rlap{\let\box\old@box\old@rlap}%
\old@page@sofar
}
\def\colorcolumn#1{%
\ifnum#1=\mult@rightbox
\def\zz{\begin{mdframed}[middlelinewidth=2pt,roundcorner=5pt,leftline=false,backgroundcolor=yellow]}%
\fi
\ifnum#1=\numexpr\mult@rightbox+2\relax
 \def\zz{\begin{mdframed}[middlelinewidth=2pt,roundcorner=5pt,rightline=false,backgroundcolor=yellow]}%
\fi
\ifnum#1=\numexpr\mult@rightbox+4\relax
  \def\zz{\begin{mdframed}[middlelinewidth=2pt,roundcorner=5pt,rightline=false,leftline=false,backgroundcolor=yellow]}%
\fi
       \kern\dimexpr-15pt\relax
        {\let\box\old@box\vtop{%
          \zz{%
           \hbox{\box#1\llap{\phantom p}}}%
           \end{mdframed}}}%
        \kern\dimexpr-15pt\relax
}

\makeatother


\def\a{Red blue green yellow black white. }
\def\b{One two three four five six. }
\def\c{\stepcounter{enumi} \Roman{enumi}
\a\a\b\b\a\a\b\a\a\b\b\b\b\b\b\a\a\b}
\begin{document}

\begin{multicols}{3}
\c\c\c\c\c\c\c\c\c\c
\end{multicols}

\end{document}

関連情報