我想知道重复使用\sbox
'es 是否只会减少.tex
代码量,还是也会减少其最终输出量(无论是 DVI/PDF/...),即 TeX 在写入 DVI 或 PDF 时会扩展它们,还是查看器会这样做?例如,不要对绘图相对两侧的相同刻度标记gnuplot
使用'es。\sbox
答案1
不会,使用\sbox
及其同类工具创建的保存框不会减小最终文件大小。每次在文档中使用时,内容都会写入输出文件。
我实际上编写了一个 LaTeX 包storebox
,它提供了“存储框”,其工作方式与保存框类似,但只在 PDF 中存储一次内容。但是,这仅适用于pdflatex
PDF 模式,不适用于 DVI,因为它使用了 PDF 格式的功能。
答案2
正如马丁所说,标准 LaTeX 保存盒\sbox
和环境在\savebox
每个lrbox
上重复 DVI、PS 和 PDF 代码\usebox
。
包裹xsavebox
提供\xsbox
、\xsavebox
和,除了框命名之外,它们的使用方式与标准 LaTeX 命令相同,但仅将框内容作为 PDF XObject 插入一次。重复使用会插入对对象的引用。这适用于所有常见工作流程,xlrbox
包括\xusebox
\xusebox
dvips
+ps2pdf
。
例如\xsbox{My Box 1}{Hello world!}
...\xusebox{My Box 1}
或者 \xsbox{MyBoxOne}{Hello world!}
...\theMyBoxOne
当然,对于内容很少的框(如示例中所示)来说,这没有意义,因为会引入一些开销。但它可能会减少重复的 TikZ 图形(例如用作水印等)的 PDF 文件大小。