我有一个多页 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
其专门用于此类多页文档插入。