我想排版一些带有彩色背景的文字和轮廓,覆盖整个\textwidth
。我尝试用 来获得这个。它在某种程度上有效,但总是比 大一点,导致彩色填充与轮廓略有重叠:
colorbox
parbox
colorbox
parbox
有什么办法可以解决这个问题吗?我没有找到。相应的代码:
\newcommand{\information}[1]{\colorbox{DarkOliveGreen2}{\fboxsep4mm\framebox[\textwidth][l]{\parbox{\linewidth}{\textbf{foo: } #1}}}}
任何想法都非常感谢。谢谢!
编辑:正如评论中所说:我已经尝试删除或更改 -value \fboxsep
,但它并没有改变行为。只是文本和框边框之间的空间变窄了,我想要那个空间...
答案1
框边缘和实际内容之间的空间由\fboxsep
通常的\fbox
命令来控制。
由于\fboxsep4mm
在宏定义中明确出现,因此之前\information
没有机会改变\fboxsep
值。4mm
似乎太多了,但这当然是一个品味问题。
在我看来,没有必要使用额外的\framebox
命令,因为\fcolorbox
也是可用的。
\documentclass{article}
\usepackage[x11names]{xcolor}
\begin{document}
\newcommand{\information}[2][0pt]{%
\fboxsep=#1%
\par\noindent%
\fcolorbox{black}{DarkOliveGreen2}{%
\parbox{\dimexpr\linewidth-2\fboxsep-2\fboxrule}{\textbf{foo: }#2}%
}% Reduce the box size by 2 \fboxsep and 2\fboxrule widths.
}
\information[2pt]{Foo}
\end{document}
答案2
您需要分别控制\framebox
和的填充:\colorbox
\documentclass{article}
\usepackage[x11names]{xcolor}
\begin{document}
\newcommand{\information}[1]{{%
\setlength{\fboxsep}{0pt}%
\par\noindent
\colorbox{DarkOliveGreen2}{%
\setlength{\fboxsep}{4mm}%
\framebox[\textwidth][l]{\parbox{\linewidth}{\textbf{foo: } #1}}}}}
\information{Foo}
\end{document}