这里有两种情况。第一种情况,我想将纸张尺寸设置为 的大小$\displaystyle E=mc^2$
;第二种情况,我想将其设置为 的大小\fbox{$\displaystyle E=mc^2$}
。
不幸的是,在这两种情况下,我的输出的顶部和底部都被裁剪了。
笔记:下面截图中的灰色框不是我画的,而是 Adobe Reader X 的背景颜色。
情况 1:不使用\fbox
\documentclass[cmyk]{minimal}
\usepackage{pstricks}
\newsavebox\IBox
\savebox\IBox{$\displaystyle E=mc^2$}
\newdimen\mywidth
\newdimen\myheight
\mywidth=\wd\IBox
\myheight=\ht\IBox
\paperwidth=\mywidth
\paperheight=\myheight
\voffset=-1in
\hoffset=-1in
\topskip=0bp
\special{papersize=\the\mywidth,\the\myheight}
\parindent=0cm
\pagecolor{cyan}
\begin{document}
\begin{pspicture}(\mywidth,\myheight)
\psframe[linecolor=red](\mywidth,\myheight)
\rput[lb](0,0){\usebox{\IBox}}
\end{pspicture}
\end{document}
笔记:顶部和底部被裁剪。
案例 2:使用\fbox
\documentclass[cmyk]{minimal}
\usepackage{pstricks}
\newsavebox\IBox
\savebox\IBox{\fbox{$\displaystyle E=mc^2$}}
\newdimen\mywidth
\newdimen\myheight
\mywidth=\wd\IBox
\myheight=\ht\IBox
\paperwidth=\mywidth
\paperheight=\myheight
\voffset=-1in
\hoffset=-1in
\topskip=0bp
\special{papersize=\the\mywidth,\the\myheight}
\parindent=0cm
\pagecolor{cyan}
\begin{document}
\begin{pspicture}(\mywidth,\myheight)
%\psframe[linecolor=red](\mywidth,\myheight)
\rput(0.5\mywidth,0.5\myheight){\usebox{\IBox}}
\end{pspicture}
\end{document}
笔记:顶部和底部被裁剪。
问题:
如何提高的准确性\newsavebox
?可能吗?
答案1
保存框尺寸尽可能准确。此问题是由于您仅使用高度不是总高度(= 高度 + 深度)框。任何框都有宽度、高度和深度(低于基线的量)。您只将页面大小设置为其高度,因此裁剪掉的量等于深度。因为您将框居中,所以裁剪会影响顶部和底部的垂直和水平方向。
您可以通过添加(这可能需要调整垂直居中,因为它可能是特定于基线的)或简单地确保没有深度来解决这个问题\dp\IBox
,\myheight
例如\raisebox
:
第二种情况:
对于第二种情况,只需执行以下操作:
\savebox\IBox{\raisebox{\depth}{\fbox{$\displaystyle E=mc^2$}}}
将深度推向高度的更低级别的方法是:
\savebox\IBox{...}
\sbox\IBox{\raise\dp\IBox\box\IBox}
这样做的好处是,您可以使用环境,lrbox
而不是\savebox
允许逐字或其他不允许宏包裹的特殊材料。
第一种情况:
对于第一种情况,您仍然需要规划规则宽度和间隔(正如\fbox
所做的那样),这些应该添加到\mywidth
和中\myheight
。然后,您应该将框垂直和水平居中。
或者手动添加额外的高度和宽度:
\documentclass[cmyk]{minimal}
\usepackage{pstricks}
\newsavebox\IBox
\newlength\mymargin
\setlength\mymargin{2pt}
\savebox\IBox{%
\raisebox{\dimexpr\depth+\mymargin\relax}
[\dimexpr\totalheight+2\mymargin\relax]{\hspace\mymargin$\displaystyle E=mc^2$\hspace\mymargin}}
\newdimen\mywidth
\newdimen\myheight
\mywidth=\wd\IBox
\myheight=\ht\IBox
\paperwidth=\mywidth
\paperheight=\myheight
\voffset=-1in
\hoffset=-1in
\topskip=0bp
\special{papersize=\the\mywidth,\the\myheight}
\parindent=0cm
\pagecolor{cyan}
\begin{document}
\begin{pspicture}(\mywidth,\myheight)
\psframe[linecolor=red](\mywidth,\myheight)
\rput[lb](0,0){\usebox{\IBox}}
\end{pspicture}
\end{document}