我正在单个 Beamer 框架内处理多个动画,并且希望在 内仅包含多页 PDF 页面的最后一页\only<n>{\includegraphics[opt]{args}}
。问题是这些框架分隔的多页 PDF 的总页数都不同:
我试过
\includegraphics[page=-1]{multipage.pdf}
并且有点进展顺利,但出现编译错误:
PDF inclusion: required page does not exist <16>
==> Fatal error occurred, no output PDF file produced!
很奇怪,因为这<16>
是我的文件的最后一页multipage.pdf
。如果我尝试使用 进行编译page=16
,它会编译。我考虑过使用pdfpages
包,但是我不再有好的\textwidth
和\textheight
来控制图形大小输出。
有任何想法吗?
答案1
一些更经典的 pdflatex (仅限):
\documentclass{beamer}
\begin{document}
\begin{frame}{test with pdflatex}
\centering
\pdfximage{example-image-a4-numbered.pdf}
\includegraphics[height=.8\textheight,page=\pdflastximagepages]{example-image-a4-numbered.pdf}\par
This PDF has \the\pdflastximagepages\ pages
\end{frame}
\end{document}
对于 R 用户,另一种选择是让 R 计算页数并将此信息传递给\includegraphics
,这样 LaTeX 引擎就无关紧要了。您可以latex-engine
在 Rmarkdown 中挑选出此 MWE 中的元数据来测试它:
---
latex-engine: xelatex # or lualatex, or pdflatex
output: beamer_presentation
---
```{r, include=FALSE}
library(rmarkdown)
library(knitr)
library(pdftools)
```
### test using `r metadata$"latex-engine"`
```{r, include=FALSE}
file <- "/usr/local/texlive/2021/texmf-dist/tex/latex/mwe/example-image-a4-numbered.pdf" # change to some
pages <- pdf_info(file)$pages
```
```{r, echo=F, out.extra=paste("page=",pages,sep=""), out.height="5cm", fig.cap=paste("This PDF has",pages,"pages")}
include_graphics(file)
```
答案2
有非常新的 l3kernel/l3experimental (今天在 texlive 2022 中) 你可以这样做:
\documentclass{article}
\usepackage{l3graphics,graphicx}
\begin{document}
\ExplSyntaxOn
\graphics_get_pagecount:nN{example-image-a4-numbered.pdf}\mypagecount
\ExplSyntaxOff
\includegraphics[scale=0.5,page=\mypagecount]{example-image-a4-numbered.pdf}
\end{document}
答案3
还有一种可能性(pdflatex
,lualatex
):
\documentclass{article}
\usepackage{graphicx,luatex85}
\begin{document}
\savebox{0}{\includegraphics{example-image-a4-numbered.pdf}}%
\includegraphics[scale=0.5,page=\pdflastximagepages]{example-image-a4-numbered.pdf}
\end{document}