![geometry.sty 中的小错误](https://linux22.com/image/233604/geometry.sty%20%E4%B8%AD%E7%9A%84%E5%B0%8F%E9%94%99%E8%AF%AF.png)
完全的
左上角
右上角
左下角
右下角
\documentclass[dvipsnames,dvips,cmyk]{minimal}
\usepackage{xcolor,calc}
\usepackage[%
paperwidth=30mm,
paperheight=30mm,
textwidth=25mm,
textheight=25mm,
showframe]{geometry}
\setlength{\fboxsep}{5mm}
\setlength{\fboxrule}{5mm}
\usepackage{lipsum}
\begin{document}
\topskip0pt%
\noindent\color{red}\fbox{\parbox{\textwidth-2\fboxsep-2\fboxrule}{\color{green}\rule{5mm}{5mm}}}
\end{document}
编辑1:
问题:
- 这些不对称的框架规则是故意制定的还是bug?
\textwidth
等于框架规则内边缘或框架规则外边缘之间的水平距离?
编辑2:
我认为包围文本内容的框架是使用 4 条规则部分/单独创建的,而不是使用
\fbox
(\fboxsep
当然设置为零)。可以将其更改为使用吗\fbox
?如果我们在讨论中使用 PSTrick 的术语,我认为包围文本内容的框使用了
dimen=inner
,对吗?如果正确,则 是\textwidth
测量框内边缘之间的水平距离。请确认我的理解是否正确?
编辑3:
除了 geometry.sty 产生的“不对称框架规则”之外,下面的图表通过一些注释重现了它。
geometry.sty 生成的框架似乎向外扩展。因此,\textwidth
等于该框架内边缘之间的水平距离。
注意:比例以毫米为单位。
这个错误仍然存在。
答案1
我认为所看到的行为是 中的一个错误geometry
。LaTeX\fbox
也必须使用四条规则才能实现该效果,但这些规则确实可以正确连接。所以我会将问题报告给 的作者geometry
,看看他怎么说。
在框架周围\textwidth
,框架应该位于材料的“外部”(IE包含材料的 TeX 框实际上应该具有\textwidth
所用规则宽度的两倍。同样,这当然是可行的\fbox
。
答案2
TeX 总是以方框来思考。参考点是当前点,它位于每行最左边的起点。当 TeX 绘制一个 fbox 时,它会绘制一个 width 的垂直条,\fboxsep
并将当前点增加此值。然后,它会绘制两个水平规则,每个框宽度为 0,这就是当前点不增加的原因。然后,它会插入一个空格,其作用\fboxsep
与将当前点向右移动相同。然后插入框内容,并随着框内容的宽度增加当前点。现在\fboxsep
再次添加,同样增加当前点。现在绘制右侧垂直条,并再次将当前点增加\fboxrule
。下一个框(如果有)从其左侧的当前点开始。另请参阅幻灯片 32ffhttp://userpages.fu-berlin.de/~latex/PSTricks/DANTE2006.pdf。它是德文,但很容易看出我所说的设置框是什么意思。
答案3
我不能说我理解你的问题。但这里有一个稍微改变的代码,它给了我一个预期的结果:
\documentclass[cmyk]{minimal}
\usepackage{xcolor,calc}
\usepackage[%
paperwidth=30mm,
paperheight=30mm,
textwidth=25mm,
textheight=25mm,
showframe]{geometry}
\setlength{\fboxsep}{5mm}
\setlength{\fboxrule}{5mm}
\begin{document}
\noindent\color{red}\fbox{%
% \parbox{\linewidth-2\fboxsep-2\fboxrule}{%
\color{green}\rule{5mm}{5mm}%
% }
}
\end{document}