fbox
定义as的宽度时\textwidth-2\fboxsep-2\fboxrule
,它相对于其余文本仍然有点突出。我是否遗漏了宽度/长度?
\documentclass{article}
\usepackage{lipsum,xcolor}
\begin{document}
\lipsum[1][1-5]
\edef\oldfboxsep{\the\fboxsep}
\fboxsep=15pt
\noindent\colorbox{gray!15!white}{
\parbox{\dimexpr\textwidth-2\fboxsep-2\fboxrule\relax}{%
\lipsum[1][1-3]
}}
\fboxsep=\oldfboxsep
\lipsum[1][6-10]
\end{document}
输出如下,红线和蓝线显示错位。
答案1
这是一个很常见的问题,很容易犯,而且经常被忽视。(你眼睛真尖!)
(La)TeX 将行尾解释为空格,因此如果不需要额外的空格,则必须将行尾设置为“不可见”。这可以通过插入%
,
在此示例中,需要两个:
white}{
上线后\noindent
,- 后
\lipsum[1][1-3]
。
那是,
\noindent\colorbox{gray!15!white}{%
\parbox{\dimexpr\textwidth-2\fboxsep 2\fboxrule\relax}{%
\lipsum[1][1-3]%
}}
后面的“明显”位置已经有一个了\relax}{%
,所以您知道这个原理。只需仔细查看其他潜在的空白点并清理需要清理的空白点即可。
编辑
正如问题作者在评论中指出的那样,段落末尾的空格通常不会添加到宽度中,因此%
后面的空格\lipsum
是不需要的。但有两种情况下,段落末尾的空格做做出改变:
- 如果段落的最后一个元素被强制右对齐,就像题词一样;
- 如果段落最后一行的文本完全填满该行并且没有其他空格的空间,则该空格将转到下一行,因此可能会留下可见的空白行。
我没有测试过第一种情况下会发生什么,但经常遇到第二种情况,并且被问及有关问题。在%
不会造成损害的情况下,将其包括在内也无妨。