将图片大小设置为给定框的大小

将图片大小设置为给定框的大小

我想使用 Latex 中的图片模式,但需要将绘图区域的大小设置为其他框的大小。我通常会这样做

\begin{picture}(max_hor, max_ver)(ll_hor, ll_ver)  
...  
\end{picture}  

并且我想要根据给定盒子的尺寸计算max_hor,max_ver。

答案1

\ht\mybox您可以分别使用、\dp\mybox和来访问 (La)TeX 框寄存器的高度、深度和宽度\dp\mybox,其中\mybox是使用 定义的框\newsavebox{\mybox}。如果您需要将这些尺寸作为文本,您可以通过\the在其前面放置 来转换它们。

但是,在picture环境中,您需要将尺寸声明为的倍数\unitlength,因此您需要将此值除以该数量,这并不容易,因为 TeX 不提供将长度除以长度的直接方法。但您可以使用所使用的内部缩放宏graphicx

\documentclass{article}

\newsavebox{\mybox}
\usepackage{graphicx}
\usepackage{calc}

\makeatletter
\newcommand{\scaletoul}[2]{%
    \setlength\@tempdima{#2}%
    \Gscale@div{#1}{\@tempdima}{\unitlength}%
}
\makeatother

\begin{document}

\sbox{\mybox}{come content}

\setlength{\unitlength}{1pt}

\scaletoul{\mywidth}{\wd\mybox}
\scaletoul{\mytotalheight}{\ht\mybox+\dp\mybox}
\frame{% just to see the dimensions
\begin{picture}(\mywidth, \mytotalheight)(0,0)
    \put (0,0) {\raisebox{\dp\mybox}{\usebox{\mybox}}}
\end{picture}%
}

\end{document}

请注意,该picture环境可能已过时。对于新图表,建议使用 TikZ 或 PSTricks。在那里,您不必自己定义尺寸,也可以直接提供所有尺寸,而无需将它们缩放到\unitlength。参见例如使用 TikZ 在图像上绘图举个例子。

答案2

picture包允许在图片相关宏的参数中使用显式尺寸。下面是一个例子,使用与 Martin 的答案相同的代码,但大大简化了,如您所见:

\documentclass{article}
\usepackage{picture}

\newsavebox{\mybox}


\begin{document}

\sbox{\mybox}{some content}

\frame{% just to see the dimensions
\begin{picture}(\wd\mybox,\dimexpr\ht\mybox+\dp\mybox\relax)(0,0)
    \put (0,0) {\raisebox{\dp\mybox}{\usebox{\mybox}}}
\end{picture}%
}

\end{document}

相关内容