将纸张大小调整为 mbox

将纸张大小调整为 mbox

是否可以定义一个函数,将页面大小调整为 mbox 的精确尺寸?例如,我想执行如下操作:

\documentclass{report}
\thispagestyle{empty}
\begin{document}
\mbox{\Huge buffer}
\end{document}

输出为 PDF,其尺寸恰好是单词“buffer”周围的边界框的大小。目前,我正在使用该程序pdfcrop修剪生成的图像,但这是一种 hack。我想知道是否有办法在 TeX 中原生执行此操作。

答案1

我使用类似的东西:

\newbox\mybox
\setbox\mybox=\hbox{stuff goes here}
\pdfhorigin=0pt
\pdfvorigin=0pt
\pdfpagewidth=\wd\mybox
\pdfpageheight=\ht\mybox
\advance\pdfpageheight by \dp\mybox
\shipout\box\mybox

但它仅适用于 PDFTeX/LuaTeX。

答案2

对于你似乎正在做的事情,也许你还想看看预览包。\mbox 不是必需的,它为您提供了一种在一次运行中制作一系列正确修剪的图像的方法。

答案3

您可以将standalone类与previewcrop选项一起使用。第一个是 v0.x 的默认选项,使用preview包。第二个是 v1.0 的新选项,也是 v1.x 的默认选项。它将内容装箱并调整页面大小以适合它。这与 Khaled Hosny 的答案类似,但适用于多种风格的 LaTeX:latex(DVI 模式)pdflatexxelatexlualatex

\documentclass[border=0pt]{standalone}% Add maybe `crop` or `preview` manually
\begin{document}
\mbox{\Huge buffer}
\end{document}

答案4

下面是一个使用 eplain 的版本,我认为这种形式\special只适用于 XeTeX:

\input eplain
\hoffset=-1in
\voffset=-1in
\hruledefaultheight=0pt
\hruledefaultdepth=0pt
\vruledefaultwidth=0pt
\boxitspace=1pt % amount of whitespace on all sides
\setbox0\boxit{\hbox{This content right here will be the whole page.}}
\special{papersize=\the\wd0,\the\ht0}
\box0
\bye

相关内容