我经常使用 pdfpages 包来将单页或多页包含到我的文档中(测量图、几页外部文档等)。我不想将它们作为图片包含进去\includegraphics{}
,因为这样会将它们的大小调整太多。无论如何,包含的页面通常都具有已打印的格式。
\documentclass{scrartcl}
\usepackage{pdfpages}
\begin{document}
% Include a single PDF page
\includepdf[
frame,
scale=0.90
]{pdfdocument.pdf}
% Include a pdf-document with several pages
\includepdf[
pages=-,
nup=1x2,
frame,
landscape,
delta=5mm 5mm,
scale=0.95,
]{pdfdocument.pdf}
\end{document}
关于如何在所包含的文档的上方或下方设置描述、标题或类似内容,您有什么想法吗?
请参阅此草图以获取解释。
答案1
该答案尝试通过以下步骤完成您的要求:
- 用于
geometry
设置页边距以适应您想要的标题和页码。 - 使用
caption
包\captionof
及其\captionof*
命令来设置标题。 - 在环境中使用
pdflscape
和包装横向页面,landscape
以正确的方向设置标题。 - 该示例假设每个包含的文档都有一个标题。为此,
pdfpages
已进行修补以提供一个pagecommand*
选项,允许在包含的页面的第一页上执行不同的命令。我编写的方式pagecommand*
是在第一页执行,pagecommand
在第二页和后续页面上执行(尽管如果需要,这可以相对容易地更改)。如果您希望为不同的页面使用不同的标题,最好一次包含 2 页文档(在这种情况下,补丁不是必需的)。
示例输出:
给出的输出提供了所有页面的页码(纵向布局,适合打印)。
代码
此代码已被注释,以便了解哪里进行了更改。
\documentclass{scrartcl}
\usepackage{caption} % Use for \captionof(*) command
% Set the page margins to accomodate space for captions and page numbers
\usepackage[left=0.9cm,right=0.9cm,bottom=1cm,footskip=1em,includefoot]{geometry}
% Use for 'landscape' environment to position landscape captions properly
\usepackage{pdflscape}
% Setup the new 'pagecommand*' option key-value
\usepackage{etoolbox}
\usepackage{pdfpages}
\makeatletter
\newcommand*{\AM@pagecommandstar}{}
\define@key{pdfpages}{pagecommand*}{\def\AM@pagecommandstar{#1}}
\patchcmd{\AM@output}{\begingroup\AM@pagecommand\endgroup}
{\ifthenelse{\boolean{AM@firstpage}}{\begingroup\AM@pagecommandstar\endgroup}{\begingroup\AM@pagecommand\endgroup}}{}{} % Patch to use new option
\patchcmd{\AM@split@optionsii}{\equal{pagecommand}{\AM@temp}\or}
{\equal{pagecommand}{\AM@temp}\or\equal{pagecommand*}{\AM@temp}\or}{}{}
\makeatother
\begin{document}
% Include a single PDF page
\includepdf[
frame,
scale=0.90,
% Use new 'pagecommand*' to set caption on the first page, include page #
pagecommand*={\thispagestyle{plain}\null\vfill\captionof{figure}{This is the FIRST caption}}
]{pdfdocument.pdf}
% Include a pdf-document with several pages
\begin{landscape} % Be sure to wrap in 'landscape' environment
\includepdf[
pages=-,
nup=1x2,
frame,
landscape,
delta=5mm 5mm,
scale=0.90,
% Set the caption on the first page of output
pagecommand*={\thispagestyle{plain}\null\vfill\captionof{figure}{This is the SECOND caption}},
% Set the [continued] caption on second and subsequent pages
% Use '\captionof*{...} to avoid duplicate entries in listoffigures
pagecommand={\thispagestyle{plain}\null\vfill\captionof*{figure}{\figurename~\thefigure: This is the SECOND caption (Continued)}}
]{pdfdocument.pdf}
\end{landscape}
\end{document}
答案2
另一种解决方案是使用\addtolist
pdfpages 的功能,并使用 更改布局geometry
。
\documentclass{scrartcl}
\usepackage{pdfpages}
\usepackage{lipsum}
\usepackage{geometry}
\geometry{a4paper}
\usepackage[]{scrlayer-scrpage}
% Fußzeile
\ofoot[\pagemark]{\pagemark}
\cfoot[]{Section}
\ifoot[]{Document number}
\pagestyle{scrheadings}
\newcommand{\pdfportrait}[2]{
\newgeometry{bottom=0.5cm,includefoot}
\cfoot[#1]{}
\includepdf[
frame,
scale=0.90,
addtolist={1,figure,#1,#1},
pagecommand={\thispagestyle{plain}}
]{#2}
\restoregeometry
}
\newcommand{\pdfbooklet}[2]{
\newgeometry{bottom=0.5cm,includefoot}
\cfoot[#1]{}
\includepdf[
pages=-,
nup=1x2,
frame,
landscape,
delta=5mm 5mm,
scale=0.90,
addtolist={1,figure,#1,#1},
pagecommand={\thispagestyle{plain}}
]{#2}
\restoregeometry
}
\begin{document}
\listoffigures
\lipsum
% Include a single PDF page
\pdfportrait{Single page portrait oriented}{pdfdocument.pdf}
\lipsum
% Include a pdf-document with several pages
\pdfbooklet{Multiple pages - 2 per page}{pdfdocument.pdf}
\lipsum
\end{document}