我从一个网站上获得了该代码,用于在我的 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 宏还只是个新手,所以我很想知道是否可以修改它以使其自动适应页面布局。迷你页面能解决这个问题吗?还是我必须手动换行?
答案1
该解决方案不允许任何分页符。您应该使用类似framed
或mdframed
(新版本即将推出;-)的软件包。):
\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%
}
结果: