我正在插入一张简单的图像:
\includegraphics[height=5cm]{filename.png}
这样会生成一张保持纵横比的图像,因此宽度大约为 6 厘米。但我只想要图像的左侧,并希望将其裁剪为 50% 的宽度。可以这样做吗?
如果可能的话,我想以一种可移植的方式来做到这一点(即,本文档的其他作者不必安装软件包,并且可以与相当旧的版本一起使用pdflatex
- 我们工作中的计算机急需升级)。
答案1
您可以使用 裁剪图像graphicx
。
\documentclass{article}
\usepackage{graphicx}
\begin{document}
% Answer: [trim={left bottom right top},clip]
% Ex. 1: trim from left edge
\includegraphics[trim={5cm 0 0 0},clip]{example-image-a}
% Ex. 2: trim from right edge
\includegraphics[trim={0 0 5cm 0},clip]{example-image-a}
\end{document}
使用该trim
选项,它采用四个空格分隔的值。
trim={<left> <lower> <right> <upper>}
如果您不指定单位,则包会假定bp
大点为单位。设置这些值后,您必须使用clip=true
或 来激活裁剪clip
。
如果您结合trim
使用height
或类似的东西,图像将被裁剪然后调整大小。这意味着裁剪值必须适合原始大小。如果找不到解决方案,则裁剪为 50% 宽度。
更新
正如马丁在评论中所说,你可以使用adjustbox
将图像精确地裁剪 50%。请注意,必须\includegraphics
用替换\adjincludegraphics
才能访问\width
。
\documentclass{article}
\usepackage[export]{adjustbox}
\begin{document}
\adjincludegraphics[height=5cm,trim={0 0 {.5\width} 0},clip]{example-image-a}
\end{document}
adjustbox
还提供\height
,\depth
和\totalheight
。
答案2
剪掉图片右侧的 50%没有使用额外的包,你可以使用保存箱首先测量图像的自然大小。这只需要graphicx
作为 LaTeX 本身的一部分且始终安装的包。请注意,所有缩放/调整大小均已应用后修剪。如果您希望将原始图像缩放到 5 厘米宽,然后裁剪 50%,只需将裁剪后的一半调整为 2.5 厘米宽即可:
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begingroup
\sbox0{\includegraphics{example-image}}%
\includegraphics[clip,trim=0 0 {.5\wd0} 0,width=2.5cm]{example-image}
\endgroup
\end{document}
还可以使用内部宏来graphics/x
计算将原始图像缩放为 5 厘米宽度的比例因子,然后在剪切图像上也使用此比例因子:
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics[width=5cm]{example-image} %<---- for comparison
\begingroup
\sbox0{\includegraphics{example-image}}%
\makeatletter
\Gscale@div\myscale{5cm}{\wd0}
\includegraphics[clip,trim=0 0 {.5\wd0} 0,scale=\myscale]{example-image}
\endgroup
\end{document}
答案3
viewport
的键也graphicx
可用于模拟修剪或裁剪。viewport
有 4 个空格分隔的长度参数:左下右上。其余代码应该是不言自明的。
\documentclass{article}
\def\FirstScale{0.5}% scale for loading
\def\SecondScale{1}% scale for final
\def\FileName{example-image-a}% file name
\usepackage{graphicx}
\newsavebox\IBox
\savebox\IBox{\includegraphics[scale=\FirstScale]{\FileName}}
\usepackage{pgf}
\newlength\xL
\newlength\yL
\newlength\xR
\newlength\yR
\pgfmathsetlength{\xL}{0*\wd\IBox/\FirstScale}% please adjust
\pgfmathsetlength{\yL}{0*\ht\IBox/\FirstScale}% please adjust
\pgfmathsetlength{\xR}{0.5*\wd\IBox/\FirstScale}% please adjust
\pgfmathsetlength{\yR}{1.0*\ht\IBox/\FirstScale}% please adjust
\usepackage[tightpage,active,graphics]{preview}
\PreviewBorder=0pt
\begin{document}
\includegraphics[viewport={\xL} {\yL} {\xR} {\yR},clip,scale=\SecondScale]{\FileName}
\end{document}
请注意,导入图像后文件的大小也不会减小trim
。viewport
答案4
如果可以裁剪源(在我的情况下,当我搜索使用 \includegraphics 进行裁剪的选项时),则以下用于裁剪 PDF 的在线裁剪工具可以很好地完成这项工作:https://pdfresizer.com/crop