在主文档中包含多个 pdf 页面的解决方案https://tex.stackexchange.com/a/125212/41856对我来说是可行的,但是,那里列出的代码和下面列出的代码不会将 test.pdf 作为正文中的图 (1) 引用,而是引用图 (22),或者引用 test.pdf 中的许多页面
\getpdfpages{test.pdf}
\foreach \x in {1,...,\value{pdfpages}} {
% your code for page \x of t.pdf goes here
\begin{table}[htpb] \caption{Figure 1} \label{fig:Figure 1}
\centering
\includegraphics[page=\x,width=1\textwidth]{test.pdf}
\end{table} }
\clearpage
(\ref{fig:Figure 1})
\ref
当我希望图 (1) 时,前面的命令会在主文档中产生图 (22),或者 test.pdf 中有多少页。
如何修改上述代码,使\ref
文档中的每一页都增加 1,而不是 test.pdf 中的页数增加 1?
当您在正文中包含更多文档(例如 test1.pdf、test2.pdf 等)时,这一点就更为重要。
答案1
这对我有用:
\documentclass{article}
\usepackage{graphicx}
\usepackage{pgffor}
\newcounter{pdfpages}
\newcommand*{\getpdfpages}[1]{%
\begingroup
\sbox0{%
\includegraphics{#1}%
\setcounter{pdfpages}{\pdflastximagepages}%
}%
\endgroup
}
\begin{document}
\getpdfpages{gptest.pdf}
\foreach \x in {1,...,\value{pdfpages}} {
\begin{figure}[htpb]
\caption{Figure \x}\label{fig:Figure \x}
\centering
\includegraphics[page=\x,width=1\textwidth]{gptest.pdf}
\end{figure}
}
\clearpage
\ref{fig:Figure 2}
\end{document}
\getpdfpages
在其他命令中第一次使用该文件之前发出该命令非常重要\includegraphics
,否则它将不起作用。一个好的位置可能是文档序言中。(感谢 Stephan Lemke 的注意。)
答案2
一种轻量级方法。作为#1
,\numexpr
它的前缀是 ,\the
必须打印其值。
\documentclass{article}
%\usepackage{graphicx}% not needed here
\usepackage{xinttools}% in TeX installations updated 2013/11/22 or later
\begin{document}
\xintFor #1 in \xintintegers \do {% #1 is a \numexpr <digits>\relax
\begin{figure}[htpb]
\caption{Figure \the#1}\label{fig:Figure \the#1}
\centering
\mbox {\pdfximage width .2\textwidth page #1 {testgraph.pdf}%
\pdfrefximage\pdflastximage }%
% or with graphicx
% \includegraphics [page=#1,width=.2\textwidth]{testgraph.pdf}
\end{figure}
\ifnum\pdflastximagepages=#1\expandafter\xintBreakFor\fi
}
\end{document}
testgraph.pdf
生成3页pdf文件的代码:
\documentclass[multi=test,crop,border=1pt]{standalone}
\begin{document}
\begin{test}%
A%
\end{test}
\begin{test}%
B%
\end{test}
\begin{test}%
C%
\end{test}
\end{document}
答案3
我原来的问题涉及如何使用命令(\ref{fig:Figure 1})将多页 pdf(例如 test.pdf,即 22(或任意数量)页长)包含在文档末尾。
“技巧”是在 \foreach 循环之外标记 test1.pdf,以便对 test1.pdf 的引用不会因循环而增加,如下面的代码所示,该代码在文档末尾包含三个不同长度的 pdf 文件:
\section{Exhibit \ref{figure:Exhibit 1}} \label{figure:Exhibit 1}
\getpdfpages{test1.pdf}
%test1.pdf is 22 pages long
\foreach \x in {1,...,\value{pdfpages}} {
% your code for page \x of t.pdf goes here
\begin{figure}[H] \caption{Exhibit \ref{figure:Exhibit 1}}
\centering
\includegraphics[page=\x,width=1.1\textwidth]{test1.pdf}
\end{figure}}
\clearpage
\section{Exhibit \ref{figure:Exhibit 2}} \label{figure:Exhibit 2}
\getpdfpages{test2.pdf}
%test2.pdf is 17 pages long
\foreach \x in {1,...,\value{pdfpages}} {
% your code for page \x of t.pdf goes here
\begin{figure}[H] \caption{Exhibit \ref{figure:Exhibit 2}}
\centering
\includegraphics[page=\x,width=1.1\textwidth]{test2.pdf}
\end{figure}}
\clearpage
\section{Exhibit \ref{figure:Exhibit 3}} \label{figure:Exhibit 3}
\getpdfpages{test3.pdf}
%test3.pdf is 37 pages long
\foreach \x in {1,...,\value{pdfpages}} {
% your code for page \x of t.pdf goes here
\begin{figure}[H] \caption{Exhibit \ref{figure:Exhibit 3}}
\centering
\includegraphics[page=\x,width=1.1\textwidth]{test3.pdf}
\end{figure}}
\clearpage
现在我们可以在 LaTeX 文档中引用(实际上这些是作为部分引用)任何这些“图形”,并且我们可以轻松地随意添加更多具有任意页数的图形,因为它们现在正确地增加了 1(单位)。可能还有其他方法可以做到这一点……诀窍是在循环外标记“图形”,而不是在循环内!