重复使用 \sbox-ed cmds 是否会减小 DVI/PDF 尺寸?

重复使用 \sbox-ed cmds 是否会减小 DVI/PDF 尺寸?

我想知道重复使用\sbox'es 是否只会减少.tex代码量,还是也会减少其最终输出量(无论是 DVI/PDF/...),即 TeX 在写入 DVI 或 PDF 时会扩展它们,还是查看器会这样做?例如,不要对绘图相对两侧的相同刻度标记gnuplot使用'es。\sbox

答案1

不会,使用\sbox及其同类工具创建的保存框不会减小最终文件大小。每次在文档中使用时,内容都会写入输出文件。

我实际上编写了一个 LaTeX 包storebox,它提供了“存储框”,其工作方式与保存框类似,但只在 PDF 中存储一次内容。但是,这仅适用于pdflatexPDF 模式,不适用于 DVI,因为它使用了 PDF 格式的功能。

答案2

正如马丁所说,标准 LaTeX 保存盒\sbox和环境在\savebox每个lrbox上重复 DVI、PS 和 PDF 代码\usebox

包裹xsavebox提供\xsbox\xsavebox和,除了框命名之外,它们的使用方式与标准 LaTeX 命令相同,但仅将框内容作为 PDF XObject 插入一次。重复使用会插入对对象的引用。这适用于所有常见工作流程,xlrbox包括\xusebox\xuseboxdvips+ps2pdf

例如\xsbox{My Box 1}{Hello world!}...\xusebox{My Box 1}

或者 \xsbox{MyBoxOne}{Hello world!}...\theMyBoxOne

当然,对于内容很少的框(如示例中所示)来说,这没有意义,因为会引入一些开销。但它可能会减少重复的 TikZ 图形(例如用作水印等)的 PDF 文件大小。

相关内容