以灰色框突出顯示文字

以灰色框突出顯示文字

如何獲得與下圖相同的灰色框?特別是,不應有內部填充,並且在開始新段落時不應破壞縮排(請參閱影像中 DEFINITION 的縮排)。先致謝! 在此輸入影像描述

答案1

如果有一些預設縮排,則應\colorbox以 a 開頭\noindent,並且最好框的寬度應等於\linewidth,因此它也可以在狹窄的空間中使用,例如列表內。縮排和段落跳過在 aminipage或 a內重置\parbox,因此最簡單的修復方法是手動在每個框內添加 和\setlength,因為父縮排可能會根據文件的環境(例如,內部列表)而改變。為每種可能的環境自動設定兩個長度可能很棘手。此範例顯示了一個宏,該宏僅在正文和清單中採用正確的縮排和段落。不保證它在其他地方也能運作:\parskip\parindentitemize

在此輸入影像描述

\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}

答案2

我不知道你想要什麼。請提供更多詳細資訊和 MWE。

這只是一個基於我的猜測的例子:

\documentclass{article}
\usepackage{xcolor}
\begin{document}
\colorbox{gray!30}{
\begin{minipage}{\textwidth}
\setlength\parindent{24pt} some text you want with indentation;\\
some text you want but no indentation.
\end{minipage}}
\end{document}

在此輸入影像描述

相關內容