我截取了一张图,裁剪后插入到我的文档中。现在,在生成的 PDF 文件中,图像周围出现了不需要的边框,如下所示。
我的代码:
\begin{figure}[ht]
\centering
\includegraphics[width = 6in, height = 8cm, keepaspectratio]{bilder/relatedMatter/TreeGNG.png}
\caption{gestaucht}
\label{Image:TreeGNG}
\end{figure}
带有不必要边框的图像:
原始裁剪图像:
答案1
这图像是不是已正确裁剪。边缘仍然存在,只是变得透明了。
位图图像
如果原始图像是位图图像,则使用更好的图像编辑器(gimp
,...)来真正从图像中删除边距。使用以下netpbm
工具的示例:
pngtopnm -background white -mix <ruJ761V.png | pnmcrop | pnmtopng >TreeGNG-cropped.png
该选项-background white -mix
将图像中的透明像素设置为白色。然后使用 将它们与图像的剩余边缘一起移除pnmcrop
。
如果页面颜色不同,可以使图像的白色背景变得透明,例如使用gimp
其功能“菜单 → 颜色 → 颜色到 Alpha”:
矢量图像
如果原始图像是基于矢量的格式(PDF、EPS),则转换为位图图像会降低质量。那么像 这样的工具pdfcrop
会更好。此外,还可以使用 中的选项viewport
或trim
来clip
在 TeX 级别裁剪图像\includegraphics
。
在这种情况下,可以找到原始 PDF 文件这里。图像位于第 3 页的图 3 中。
值有很多种方式viewport
。它们指定左下角和右上角的坐标:
viewport=<llx> <lly> <urx> <ury>
未指定单位时,默认单位为 bp。TeX 单位也可以明确指定。原点是左下角。
有很多方法可以获取这些值:
以自然尺寸打印并用尺子测量。
例如,在程序中测量时,
gv
以 bp 为单位的坐标显示光标位置。用网格覆盖图像(TikZ、包
pagegrid
,...)。
单独的文档有助于实验。\fbox
显示图像的新边界框:
\documentclass{article}
\usepackage[margin=0pt]{geometry}
\usepackage{graphicx}
\pagestyle{empty}
\begin{document}
\setlength{\fboxsep}{0pt}
\setlength{\fboxrule}{0.1pt}
\fbox{%
\includegraphics[
page=3,
viewport=80.5 524 299 684,
clip,
]{901763.pdf}%
}
\end{document}
替代方案pdfpages
:
\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[
fitpaper,
pages=3,
viewport=80.5 524 299 684,
]{901763.pdf}
\end{document}
可以手动优化这些值,或者当删除页面上的其他元素时,\fbox
可以运行没有这些值的测试文档pdfcrop
。
viewport
然后可以直接使用结果或调整值。
精炼值,例如:
viewport=80.65 524.4 298.55 683.7
文档中使用的选项为:
\includegraphics[page=3, viewport=80.65 524.4 298.55 683.7, clip]{901763.pdf}
在 TikZ 中使用网格进行测量
如果找不到能够很好地显示位置的程序,则可以在图像上放置一个网格:
\documentclass[tikz]{standalone}
\newcommand\ImageName{901763.pdf}
\newcommand\ImagePage{3}
\begin{document}
\begin{tikzpicture}[
inner sep=0pt, outer sep=0pt,
x=1bp, y=1bp, % units
]
\node[inner sep=0pt, above right] (image)
{\includegraphics[page=\ImagePage]{\ImageName}};
\draw[ultra thin, cyan] (0, 0) grid[step=10] (image.north east);
\draw[very thin, red] (0, 0) grid[step=100] (image.north east);
\end{tikzpicture}
\end{document}
原点位于左下角。青色线相距 10 bp,红线相距 100 bp:
通过计算线条数量,粗略的边界框可以是:
left: 80 bp
bottom: 520 bp
right: 300 bp
top: 690 bp
此值可用于剪辑图像并将线条的分辨率提高到 1 bp 和 10 bp:
\documentclass[tikz]{standalone}
\newcommand\ImageName{901763.pdf}
\newcommand\ImagePage{3}
\begin{document}
\begin{tikzpicture}[
inner sep=0pt, outer sep=0pt,
x=1bp, y=1bp, % units
]
\node[inner sep=0pt, above right] (image)
{\includegraphics[page=\ImagePage]{\ImageName}};
\draw[line width=.05pt, cyan] (0, 0) grid[step=1] (image.north east);
\draw[ultra thin, blue] (0, 0) grid[step=10] (image.north east);
\pgfresetboundingbox
\useasboundingbox (80, 520) (300, 690);
\end{tikzpicture}
\end{document}
现在,左下方的原点位于 (80 bp, 520 bp),青色线间隔 1 bp,蓝线间隔 10 bp。
然后新的边界框(所需区域外的线)是:
left: 81 bp
bottom: 524 bp
right: 299 bp
top: 684 bp
重新检查值发现左边组件有点太大,因此最终的边界框可能是:
viewport=80 524 299 684