
答え1
は、デフォルトのインデントがある場合は\colorbox
で始まり\noindent
、ボックスの幅は と等しくする必要があります。\linewidth
そうすれば、リスト内などの狭いスペースでも使用できます。インデントと段落スキップは または 内でリセットされるminipage
ため\parbox
、最も簡単な修正方法は、各ボックス内で と を手動で設定することです\setlength
。\parskip
親\parindent
のインデントはドキュメントの環境 (リスト内など) に応じて変わる可能性があるためです。考えられるすべての環境で両方の長さを自動的に設定するのは難しい場合があります。例では、メイン テキストとリスト内でのみ正しいインデントと段落を取得するマクロを示していますitemize
。他の場所で機能するという保証はありません。
\documentclass[twocolumn]{article}
\usepackage{xcolor}
\usepackage{lipsum}
\parindent 3em % some clear but dirty indentation and paragraph skip
\parskip 2em plus 1em minus 1em
\newlength{\currentparindent}\currentparindent\parindent % remember the global indentation
\newlength{\currentparskip}\currentparskip\parskip % remember the global skips
\makeatletter
\newcommand\graybox[1]{%
\noindent % no intented box !!
\colorbox{gray!20}{\parbox[t]{\linewidth}{%
\def\insideitemize{itemize}
\ifx\@currenvir\insideitemize
\parskip 4pt plus 2pt minus 1pt % like itemsep
\else
\parindent\currentparindent % use the global indentation
\parskip\currentparskip % use the global paragrapk skip
\fi #1}}}
\makeatother
\begin{document}
\lipsum[2][1-2]\par \lipsum[3][1-2] % normal dummy paragraphs
\graybox{\lipsum[2][1-2]\par \lipsum[3][1-2]} % now boxed
\lipsum[5][1-2]
\newpage % now in nested list
\begin{itemize}
\item \lipsum[2][1-2] \par \lipsum[3][1-2]
\item \graybox{\lipsum[2][1-2]\par \lipsum[3][1-2]}
\item \lipsum[5][1-2]
\begin{itemize}
\item \lipsum[2][1-2] \par \lipsum[3][1-2]
\item \graybox{\lipsum[2][1-2]\par \lipsum[3][1-2]}
\item \lipsum[5][1-2]
\end{itemize}
\end{itemize}
\end{document}