在使用 (La)TeX 和 PSTricks 时我们应该使用什么单位来最大限度地减少转换错误?

在使用 (La)TeX 和 PSTricks 时我们应该使用什么单位来最大限度地减少转换错误?

我希望在使用 PSTricks 和 (La)TeX 时尽量减少转换错误。转换错误确实会影响边界框的准确性、LaTeX 的粗细\fbox以及 PSTricks 笔划的粗细。

当我指定长度时

  1. 页面布局尺寸:\paperwidth,,,,,,\paperheight\voffset\hoffset\topskip\parindent
  2. TeX框尺寸:\fboxrule,,,等\fboxsep\arrayrulewidth
  3. PSTricks 对象维度:\unit,,\linewidth等等

我们应该使用哪个单位来最小化转换?我们应该在整个文档中使用单个单位吗?


由于现有的答案没有解释如何最小化转换错误,因此我将强调并重新表述上述问题。根据现有的答案,我的理解如下。

TeX 自然可以在 中工作sp,PostScript 自然可以在 中工作bp。如果我想避免在 TeX 块中进行转换,请在 中提供长度sp。但如果我在 PSTricks 块中工作,我必须在 中提供长度bp

不过,我有一个问题:

如果我在 中定义一个\pspicture维度bp,PSTricks 如何要求 TeX 保留空间而不发生从bp到 的转换错误sp

答案1

(La)TeX 本身仅适用于pt(TeX Points,1pt = 1/72.27 英寸)。这些是定点数并在内部存储为整数,即乘以 65536。这些表示称为缩放点并具有单位sp,因此 65536sp = 1pt (因为 TeX 使用 16 位表示 的小数部分pt,2^16 = 65536)。换句话说,TeX 精度为 1/65536 pt = 1sp。任何导致小数值的维度或计算sp都会四舍五入/截断为整数值。所以 0.01pt = 0.01 * 65536 = 655.36 => 655sp(= 0.009994507pt)。请注意,您可以sp使用 显示 TeX 维度的表示形式\number,例如\number\textwidth将为您提供该值sp但不附带单位。

如果您将任何维度分配给 LaTeX 长度或 TeX 维度(由\newlength\newskip或定义\newdimen),即使您使用其他单位(如、或),它也会在sp内部转换为(但向用户显示为) 。这回答了您的第 1 点和第 2 点:这实际上并不重要,因为它无论如何都会转换。如果您想将其保留在例如中,则需要将此值作为字符串内容存储在宏中。(实际上就是这样;它还会剥离单位)ptcmbpinbpgraphics/xbp

Postscript 将点四舍五入为更简单的分数:1 PS pt = 1/72 英寸。TeX 称其为大点因为它们比 TeX 点稍大,并且提供了bp为其提供了单位。如果直接向 PostScript 代码提供长度,则需要使用bpnot来执行此操作pt有时还需要另外剥离单元(例如BoundingBox标题)。

我认为更高级别的接口应该自己pstricks处理pt/ 。但是,调用和直接的 postscript 代码需要您自己处理。我会保留所有单位以避免 TeX 的舍入错误,并且如果可能的话只在最后进行转换。bp\specialpt

答案2

PostScript 不知道任何单位,一切都以 bp 为单位。PSTricks 可以处理有或无单位的值。如果缺少单位,则考虑当前单位。PStricks 以 pt 为单位执行所有操作,TeX 本身也是如此。在将所有值传递给 PS 之前,PostScript 用户坐标系会缩放到 pt。

相关内容