让我们来看看这个字符串:
\boxed{\includegraphics[width=0.4\textwidth]{FIGURE.pdf}}
生成以下图形:
现在假设我需要裁剪图形的空白边距并保持图形的大小。
我虽然可以用类似以下的方法来实现:
\boxed{\includegraphics[trim = L B R T, clip, scale=x]{FIGURE.pdf}}
其中L
,B
、R
、 和T
分别为左、下、右和上的修剪值,x
为缩放值。
下面的例子可以更好地解释我的问题:
\boxed{\includegraphics[width=0.4\textwidth]{FIGURE.pdf}}\quad %
\boxed{\includegraphics[scale=0.238]{FIGURE.pdf}}\\
\boxed{\includegraphics[trim = 65 20 150 20, clip, width=0.4\textwidth]{FIGURE.pdf}}\quad %
\boxed{\includegraphics[trim = 65 20 150 20, clip, scale=0.238]{FIGURE.pdf}}
上述代码生成以下布局:
正如您所看到的,使用scale
值而不是width
允许我裁剪图形以保持其大小。
我的问题是:如何才能在不经过反复试验的情况下获得比例参数的精确(或多或少)值?(我的想法是编写一些Emacs Lisp
代码来相应地更改LaTeX
代码。)
我愿意接受任何想法或建议。
笔记。在大多数情况下,我使用外部软件来裁剪我的图像(pdfcrop
等briss
),但有时,就像在这种情况下,它们不起作用,所以我需要手动修剪。
答案1
所有图形都以比例因子写入 PDF。当您指定尺寸时,软件包会将其转换为适当的比例因子。您可以让软件包\Gscale@box
为您记住该比例因子(来源)。您可以\thelastscalefactor
根据需要多次使用相同的方法:
\documentclass{article}
\usepackage{graphicx}
\makeatletter
\let\ORG@Gscale@box\Gscale@box
\long\def\Gscale@box#1{%
\xdef\thelastscalefactor{#1}%
\ORG@Gscale@box{#1}}
\makeatother
\begin{document}
% Measuring the image without actually using it
\sbox0{\includegraphics[width=0.4\textwidth]{example-image}}\quad
\noindent % Using with the scale only
\fbox{\includegraphics[width=0.4\textwidth]{example-image}}\quad
\fbox{\includegraphics[scale=\thelastscalefactor]{example-image}}
\noindent
\fbox{%
\makebox[0.4\textwidth][l]{% <-- trick to align without a tabular
\includegraphics[trim = 65 20 150 20, clip, scale=\thelastscalefactor]{example-image}%
}%
}\quad
\fbox{\includegraphics[trim = 65 20 150 20, clip, scale=\thelastscalefactor]{example-image}}
\end{document}
输出:
答案2
您可以width=
分别保留图形和修剪/剪辑,以免影响缩放,请参见此处的最后一个例子:
\documentclass{article}
\usepackage{graphicx,adjustbox}
\begin{document}
\includegraphics[width=.4\textwidth]{example-image}
\bigskip
\includegraphics[clip,trim=1cm .5cm .7cm .1cm, width=.4\textwidth]{example-image}
\bigskip
\adjustbox{clip,trim=1cm .5cm .7cm .1cm}{\includegraphics[width=.4\textwidth]{example-image}}
\end{document}
答案3
我从来不喜欢同时缩放和裁剪的想法,因为不知道哪个先来(关键字顺序毫无意义)。此解决方案先裁剪,然后使用\savebox
和缩放\adjustbox
。
\documentclass{article}
\usepackage{graphicx}
\usepackage{adjustbox}
\newsavebox{\tempbox}
\begin{document}
\noindent
\savebox{\tempbox}{\includegraphics[trim = 65 20 150 20, clip]{example-image}}%
\fbox{\adjustbox{width=0.4\textwidth}{\usebox\tempbox}}
\end{document}
答案4
我不太确定这是您要找的,但这里有一种方法可以计算,例如,将所需比例因子乘以 1000,四舍五入到最接近的整数:
\documentclass{article}
\usepackage{graphicx}
\newcount\myscale
\begin{document}
\setbox0=\hbox{\includegraphics{example-image}}%
\myscale=\numexpr 400*\textwidth / \wd0 \relax % 400 = 0.4×1000
\showthe\myscale % displays 430 on the terminal
\includegraphics[width=0.4\textwidth]{example-image}
\includegraphics[scale=0.43]{example-image} % same width as above
\end{document}