![使用相对于页面大小的 \put 命令](https://linux22.com/image/262370/%E4%BD%BF%E7%94%A8%E7%9B%B8%E5%AF%B9%E4%BA%8E%E9%A1%B5%E9%9D%A2%E5%A4%A7%E5%B0%8F%E7%9A%84%20%5Cput%20%E5%91%BD%E4%BB%A4.png)
我想在包含的 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