将参数传递给 includegraphics

将参数传递给 includegraphics

我有一个多页 PDF 文档,需要将其“剪切”并分散到各个页面。为此,我希望定义一个命令,例如

\newcommand{\flub}[2]{\includegraphics[page=#1,trim=#2]{foo}}

稍后将其放入 for 循环中,这样如果我提出修剪

\def\marl{1in,1in,1in,1in}

我可以简单地

\flub{1,\marl}

裁剪并放置第一页以符合您的口味。当然,由于 keyval 包的一些奇怪之处,这不会起作用。有人可能会认为,

\newcommand{\flub}[4]{\includegraphics[page=1,trim=#1 #2 #3 #4]{foo}}

可以解决这个问题,但是仍然无法解析(奇怪的是,如果我修复三个边距,这个方法就可以起作用)。

由于只有几个修剪设置,一种可能性是创建一系列调用\setkeys来更改trim选项的命令,但我的问题似乎很自然,我想知道我提出的命令是否\flub会在经过一些非常小的更改后起作用。

答案1

的参数trim不能包含逗号,因为它会干扰键值列表的工作方式(它们以逗号分隔)。此外,必须确保参数已展开。以下定义可能就足够了:

\documentclass{article}

\usepackage{graphicx}

\newcommand{\flub}[2]{%
  \begingroup
  \edef\x{\endgroup\noexpand\includegraphics[page=#1,trim=#2,clip]{foo}}%
  \x
}

\def\marl{1in 1in 1in 1in}

\begin{document}

\flub{1}{\marl}

\end{document}

注意如何\marl定义(没有您可以使用逗号来提取元素。如果您确实想使用逗号,则可以编写一个解析器来提取元素。

不要循环插入页面,请考虑使用pdfpages其专门用于此类多页文档插入。

相关内容