
答案1
如果有一些預設縮排,則應\colorbox
以 a 開頭\noindent
,並且最好框的寬度應等於\linewidth
,因此它也可以在狹窄的空間中使用,例如列表內。縮排和段落跳過在 aminipage
或 a內重置\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}