\newenvironment 具有定义的颜色框

\newenvironment 具有定义的颜色框

抱歉,如果这个问题之前有人问过,但我找不到适合我的情况的答案。我想创建一个 \newenvironment,它会生成一个带有预定义颜色的框,里面可以有文本。我已经有一个它在 LaTeX 中应该是什么样子的例子:

在此处输入图片描述

使用这个代码:

\begin{center}
    \definecolor{lightgray}{cmyk}{0,0,0,.04}
    \setlength{\fboxsep}{10pt}\colorbox{lightgray}{\parbox{0.95\textwidth}{\blindtext}}
\end{center}

我曾尝试这样做:

\newenvironment{boksi}
{
    \begin{center}
    \definecolor{lightgray}{cmyk}{0,0,0,.04}
    \setlength{\fboxsep}{10pt}\colorbox{lightgray}{\parbox{0.95\textwidth}}
}
{
    \end{center}
}

由此产生了如下结果:

在此处输入图片描述

有谁可以告诉我我做错了什么和/或我应该做什么?

答案1

也许这个方法可以解决问题:

\documentclass{article}
\usepackage{blindtext}
\usepackage{xcolor}
\definecolor{lightgray}{cmyk}{0,0,0,.04}

\newbox\scratchbox
\newcommand\PassFirstToSecond[2]{#2{#1}}

\makeatletter
\newenvironment{boksi}{%
  \expandafter\PassFirstToSecond\expandafter{\the\fboxsep}{%
    \setlength{\fboxsep}{10pt}%
    \begin{lrbox}{\scratchbox}%
    \begin{minipage}{\dimexpr\textwidth-2\fboxsep\relax}%-2\fboxrule\relax}%
    % \centering
    \setlength\fboxsep
  }%
}{%
    \end{minipage}%
    \end{lrbox}%
    \trivlist\item\relax\if@minipage\else\vskip\parskip\fi
    % \fcolorbox{black}{lightgray}{\usebox{\scratchbox}}%
    \colorbox{lightgray}{\usebox{\scratchbox}}%
    \if@newlist\leavevmode\fi\endtrivlist 
}%
\makeatother

\fboxsep=.5\fboxsep

\begin{document}

\noindent text \hfill text \hfill text \hfill text

\begin{boksi}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Etiam lobortis \fbox{facilisis} sem. \blindtext
\end{boksi}

\noindent text \hfill text \hfill text \hfill text

\end{document}

在此处输入图片描述

答案2

感谢 v_manz 和 Ulrich Diez 的回答。我最终采用了 v_manz 的解决方案,但 Ulrich Diez 的解决方案也同样有效。

以下是使用 mdframed 包的最终代码:

\newmdenv[backgroundcolor=gray!4, hidealllines, linewidth=0pt, innertopmargin=10pt, innerbottommargin=10pt]{synopboks}

结果是:

在此处输入图片描述

相关内容