答案1
trim
是传递给 的一个选项\includegraphics
。您可以用空格分隔四个值,这些值是要从右侧、底部、左侧和顶部删除的数量,顺序如下(经验法则:从右侧开始,然后顺时针继续)。
默认情况下,它使用“postscript 单位”,这与网格默认使用的单位相同,因此您可以直接在网格中读取所需的值。在您的网格中,每个框的尺寸为 10x10,因此要从左侧和右侧移除 2 个“框”,并从底部移除一个框,您必须使用trim=20 10 20 0
。
这将适当调整 tex 为该图形保留的空间大小,但图形仍将完整显示,即“溢出”保留空间。在您的例子中,它将向左溢出 20 个单位,向右溢出 20 个单位,向下溢出 10 个单位。如果您希望不显示修剪后的部分,则必须使用该clip
选项。
以下 MWE 显示了您的原始图片、未剪辑的修剪结果以及最终的修剪和剪辑结果(我在线之间插入了 1cm 以避免由于第二张图的“溢出”而造成重叠):
\documentclass{article}
\usepackage[abs]{overpic}
\begin{document}
\begin{overpic}[grid,tics=10]{elephant}
\end{overpic}
\vskip 1cm
\begin{overpic}[grid,tics=10,trim=20 10 20 0]{elephant}
\end{overpic}
\vskip 1cm
\begin{overpic}[grid,tics=10,trim=20 10 20 0,clip]{elephant}
\end{overpic}
\end{document}
结果:
答案2
用户定义数据
\def\M{5}% columns
\def\N{5}% rows
\def\MainScale{1}% scale
\def\filename{animal}% filename
\def\ChildScale{1}% cropped scale
\def\CenterX{2.5}
\def\CenterY{2.65}
\def\SemiWidth{1.5}
\def\SemiHeight{1.95}
将以下内容用 TeX 处理xelatex
。
\documentclass{article}
% User defined data
\def\M{5}% columns
\def\N{5}% rows
\def\MainScale{1}% scale
\def\filename{animal}% filename
\def\ChildScale{1}% cropped scale
\def\CenterX{2.5}
\def\CenterY{2.65}
\def\SemiWidth{1.5}
\def\SemiHeight{1.95}
% Internal used data
\usepackage{graphicx}
\newsavebox\IBox
\savebox\IBox{\includegraphics[scale=\MainScale]{\filename}}
\usepackage{pstricks-add}
\usepackage[tightpage,active]{preview}
\PreviewBorder=12pt
\PreviewEnvironment{pspicture}
\newpsstyle{gridstyle}
{
gridcolor=gray,
subgridcolor=cyan!50,
gridlabels=5pt,
}
\psset
{
xunit=\dimexpr\wd\IBox/\M\relax,
yunit=\dimexpr\ht\IBox/\N\relax,
style=gridstyle,
}
\newlength\xL
\newlength\xR
\newlength\yL
\newlength\yR
\usepackage{pgf}
\def\Zoom(#1,#2,#3)(#4,#5)(#6,#7){%
\psframe[linecolor=#2,linewidth=2pt,dimen=inner](!#4 #6 sub #5 #7 sub)(!#4 #6 add #5 #7 add)
\expandafter\gdef\csname#1\endcsname{%
\begingroup
\pgfmathsetlength{\xL}{\psxunit/\MainScale*(#4-#6)}
\pgfmathsetlength{\yL}{\psyunit/\MainScale*(#5-#7)}
\pgfmathsetlength{\xR}{\psxunit/\MainScale*(#4+#6)}
\pgfmathsetlength{\yR}{\psyunit/\MainScale*(#5+#7)}
\includegraphics[scale=#3,viewport={\xL} {\yL} {\xR} {\yR},clip]{\filename}
\endgroup}}
\begin{document}
\begin{pspicture}[showgrid=top](\M,\N)
\rput[bl](0,0){\usebox\IBox}
\Zoom(One,red,\ChildScale)(\CenterX,\CenterY)(\SemiWidth,\SemiHeight)
\end{pspicture}
\begin{preview}
\One
\end{preview}
\end{document}