灰框代码和列表

灰框代码和列表

我从一个网站上获得了该代码,用于在我的 LaTeX 文档中创建灰色区域。

% http://www.alfredklomp.com/programming/tex/macros/

\long\def\greybox#1{%
    \newbox\contentbox%
    \newbox\bkgdbox%
    \setbox\contentbox\hbox to \hsize{%
        \vtop{
            \kern\columnsep
            \hbox to \hsize{%
                \kern\columnsep%
                \advance\hsize by -2\columnsep%
                \setlength{\textwidth}{\hsize}%
                \vbox{
                    \parskip=\baselineskip
                    \parindent=0bp
                    #1
                }%
                \kern\columnsep%
            }%
            \kern\columnsep%
        }%
    }%
    \setbox\bkgdbox\vbox{
        \pdfliteral{0.85 0.85 0.85 rg}
        \hrule width  \wd\contentbox %
               height \ht\contentbox %
               depth  \dp\contentbox
        \pdfliteral{0 0 0 rg}
    }%
    \wd\bkgdbox=0bp%
    \vbox{\hbox to \hsize{\box\bkgdbox\box\contentbox}}%
    \vskip\baselineskip%
}

但与嵌套列表一起使用时,文本无法正确换行。

TeX 面积问题

我对 TeX 宏还只是个新手,所以我很想知道是否可以修改它以使其自动适应页面布局。迷你页面能解决这个问题吗?还是我必须手动换行?

答案1

该解决方案不允许任何分页符。您应该使用类似framedmdframed(新版本即将推出;-)的软件包。):

\documentclass{article}
\usepackage[noframe]{showframe}
\usepackage{framed}
\usepackage{lipsum}
\renewenvironment{shaded}{%
  \def\FrameCommand{\fboxsep=\FrameSep \colorbox{shadecolor}}%
  \MakeFramed{\advance\hsize-\width \FrameRestore\FrameRestore}}%
 {\endMakeFramed}
\definecolor{shadecolor}{gray}{0.75}
\begin{document}
\lipsum[1]
\begin{shaded}
\lipsum
\end{shaded}
\lipsum[2]
\end{document}

答案2

\colorbox从包中使用color会比使用普通的 TeX 宏更好:

\usepackage{color}
\definecolor{lightgray}{gray}{0.75}

\newcommand\greybox[1]{%
  \vskip\baselineskip%
  \par\noindent\colorbox{lightgray}{%
    \begin{minipage}{\textwidth}#1\end{minipage}%
  }%
  \vskip\baselineskip%
}

结果:

\colorbox 命令的结果

相关内容