用灰色框突出显示文本

用灰色框突出显示文本

我怎样才能实现与下图相同的灰色框?特别是,不应有内部填充,并且在开始新段落时不应破坏缩进(参见图中 DEFINITION 的缩进)。提前致谢! 在此处输入图片描述

答案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}

答案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}

在此处输入图片描述

相关内容