我有一个由多个图形拼接而成的图形。为了便于说明和清晰起见,我希望将此图形拆分成各个部分。我已经使用subfloat
和trim
和完成了此clip
操作。但是,有时大小不是四舍五入的值。例如,我想将图像拆分成 6 个subfloats
,因此trim
参数需要在 0 到 0.1666 之间修剪图像的宽度。我按如下方式执行此操作:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage[export]{adjustbox}
\begin{document}
\begin{figure}
\centering
\captionsetup[subfigure]{labelformat=empty,justification=centering}
\subfloat[]{%
\centering
\begingroup
\sbox0{\includegraphics{example-image-a.png}}%
\includegraphics[trim=0 0 {.833333\wd0} 0,width=0.16\columnwidth,valign=c,clip]{exp_lsqr_diff.png}%
\endgroup
}%
\hspace{1em}
\subfloat[]{%
\centering
\begingroup
\sbox0{\includegraphics{exp_lsqr_diff.png}}%
\includegraphics[trim={.1666666\wd0} 0 {.6666666\wd0} 0,width=0.16\columnwidth,valign=c,clip]{exp_lsqr_diff.png}%
\endgroup
\captionsetup{justification=centering}%
}%
\hspace{1em}
\subfloat[]{%
\centering
\begingroup
\sbox0{\includegraphics{exp_lsqr_diff.png}}%
\includegraphics[trim={.3333333\wd0} 0 {.5\wd0} 0,width=0.16\columnwidth,valign=c,clip]{exp_lsqr_diff.png}%
\endgroup
}%
\hspace{1em}
\subfloat[]{%
\centering
\begingroup
\sbox0{\includegraphics{exp_lsqr_diff.png}}%
\includegraphics[trim={.5\wd0} 0 {.3333333\wd0} 0,width=0.16\columnwidth,valign=c,clip]{exp_lsqr_diff.png}%
\endgroup
}%
\hspace{1em}
\subfloat[]{%
\centering
\begingroup
\sbox0{\includegraphics{exp_lsqr_diff.png}}%
\includegraphics[trim={.6666666\wd0} 0 {.1666666\wd0} 0,width=0.16\columnwidth,valign=c,clip]{exp_lsqr_diff.png}%
\endgroup
}%
\hspace{1em}
\subfloat[]{%
\centering
\begingroup
\sbox0{\includegraphics{exp_lsqr_diff.png}}%
\includegraphics[trim={.8333\wd0} 0 {.0\wd0} 0,width=0.16\columnwidth,valign=c,clip]{exp_lsqr_diff.png}%
\endgroup
}%
\end{figure}
\end{document}
这可行,但会导致无穷小(但可见)的错误,例如(非常放大):
我知道它们看起来很小,但我尝试过的大多数渲染器(Chrome、Adobe Reader、overleaf)确实在从缩小的图像中查看时增强了这一点,在大多数缩放条件下都非常明显。我该如何解决这个问题?显然我没有足够的空间来容纳我需要的所有精确的小数,它们可能需要(一些)拿着打字机的猴子。
PD:请注意,这个example_image_a.png
效果不太明显。我的图像是 64x(64x6),因此效果更明显。使用分辨率更高的图像,这个效果虽然很明显,但如果你仔细观察就会发现,不太明显。
答案1
首先,您需要将原始位图的分辨率更改为每英寸 72 像素。这可以通过 ImageMagick 的convert
命令行工具来完成。
convert -density 72 -units PixelsPerInch exp_lsqr_diff.png exp_lsqr_diff_72dpi.png
完成此操作后,您可以使用graphicx
' 数字参数trim
和相关键(不带单位)。单位默认为1bp
1/72 英寸。正确设置图像分辨率后,1bp
相当于 1 个像素,并且可以精确修剪位图。
转换后的位图exp_lsqr_diff_72dpi.png
:
带有修剪位图的示例输入:
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\noindent\frame{\includegraphics[
trim=0 0 320 0, %clip
width=\linewidth]{exp_lsqr_diff_72dpi.png}}
\end{document}