使用相对于页面大小的 \put 命令

使用相对于页面大小的 \put 命令

我想在包含的 pdf 页面中包含徽标比默

我尝试编写宏并取得了很大进展。

\documentclass[fleqn,xcolor=dvipsnames]{beamer}

\newlength{\logosize}
\setlength{\logosize}{7.50mm}

\newlength{\logoXinpdf}
\newlength{\logoYinpdf}
\setlength{\logoXinpdf}{0.9\textwidth}
\setlength{\logoYinpdf}{0.8\textheight}


\usepackage{pdfpages}

\def\getpdfpages#1#2{\begingroup
  \setbeamercolor{background canvas}{bg=}
  \includepdf[pages={#1},picturecommand={\put(\logoXinpdf,\logoYinpdf){\pgfimage[width=\logosize]{mylogo}}}]{#2}
  \endgroup}


\begin{document}


\getpdfpages{{9,12}}{mypdf.pdf}


\end{document}

但是,当我运行 pdfLaTeX 时,出现以下错误:

! A <box> was supposed to be here.
<to be read again> 
                   \unitlength 
l.23 \getpdfpages{{9,12}}{mypdf.pdf}

我明白问题出在\put命令上。如果我\logoXinpdf,\logoYinpdf用绝对数字替换长度,一切正常。

有什么方法可以通过\put命令使用这些定义的长度吗?

答案1

实际上只需在本地禁用就足够了\unitlength (假设这是一个内部的图片模式命令)。

\def\getpdfpages#1#2{\begingroup
  \setbeamercolor{background canvas}{bg=}
  \includepdf[pages={#1},picturecommand={{\def\unitlength{}\put(\logoXinpdf,\logoYinpdf){\pgfimage[width=\logosize]{mylogo}}}}]{#2}
  \endgroup}

\put期望乘数,并且本质上

\setlength\something{#1\unitlength}
\setlength\somethingelse{#2\unitlength}

因此,如果\unitlength为空,则可以将长度传递给 put。Heiko 的picture包对此进行了进一步的改进,并添加了一些条件逻辑,以便您可以使用长度或乘数,因此这基本上成为默认单位。因此,只需加载而不更改代码\unitlength就足够了。picture

相关内容