我正在用回忆录来写我的博士论文。在我的大学里,我们必须将已提交、已接受和已准备好的相关论文草稿作为附录。
这些论文都是之前使用 LaTeX(使用 elsarticle 类)创建的。我将它们保存为 PDF,并使用 Adobe Acrobat 去掉了白色边框/边距。因此它们的大小不同。
我的问题是关于 pdfpages 的。如何确保 pdf 页面正确插入到完整文档页面(无章节标题)中。
我使用以下类选项和预定义布局:
\documentclass[a4paper,12pt,twoside,onecolumn,openright,final,showtrims]{memoir}
\semiisopage[12]
\checkandfixthelayout
我的问题是 pdfpages 似乎将 pdf 页面本身置于整个库存的中心(如果我们使用回忆录术语的话)。我希望页面居中/适合由诸如\textwidth
和之类的长度分隔的区域\textheight
(在回忆录手册 memman.pdf 的第 10 页和第 11 页中定义)。
我使用以下选项\includepdf
:
\includepdf[
pages={-},
frame=false, % so I can adjust this if I need it
noautoscale=true, % I should scale it myself, right?
scale=1.0, % is this 1.0 by default?
pagecommand={\thispagestyle{plain}}, % I guess this is necessary?
%templatesize={\textwidth}{\textheight}, % not sure this work?
offset={0mm 0mm} % my guess is, that I need to adjust this one?
]{<paper_pdf_filename>}
正如我上面提到的,我可能需要进行调整offset
,以便页面放置/适合回忆录手册中第 10-11 页称为“正文”的区域中。
进一步阐述:
我希望每篇论文的页面都是周围文档的一部分。整篇论文在插入论文后仍会有内容。它将继续包含一个全局参考部分,甚至可能包含一个简短的索引。每篇论文的插入页面应该像它们本身一样存在 - 插入 - 而不是单独的页面。这就是我使用页面样式plain
来包含论文页码的原因。
如果你看一下梅曼.pdf在第 10-11 页上,您将看到回忆录类的不同页边距。我需要每个插入页面的逻辑框都有一个偏移量,以便与这些页边距相符。
我已尝试以下操作(使用 calc 包):
\newcommand{\pdfxoffset}{\marginparsep + \marginparwidth + \trimedge}
\newcommand{\pdfyoffset}{\uppermargin + \trimtop}
使用这些选项\includepdf
:
pagecommand={\thispagestyle{plain}},
width=\textwidth,
height=\textheight,
offset={\pdfxoffset mm \pdfyoffset mm}
但它并不完全符合我的要求(但差不多)。我也不太清楚我在这里做什么。我可以像这样将长度相加吗?我甚至不确定我是否掌握了 TeX/LaTeX 中的编程语言结构。
答案1
我不懂memoir
行话,但如果我理解正确的话,你想插入一个在空白页面上延伸到正常位置的 PDF 。这可以通过定义自定义页面样式(除非重新定义,否则将包含页码)并使用由 传递的选项和\textwidth
来实现。plain
\includegraphics
width
height
pdfpages
正如@egreg 所指出的,无需进行memoir
页面样式自定义,而\thispagestyle{empty}
应该使用。此外,graphicx
提供了一个参数keepaspectratio
,确保如果指定了 PDF 的宽度和高度,则对其进行缩放,以保持纵横比,并且不会超出宽度和高度。
\documentclass{article}
\usepackage{pdfpages}
\usepackage{fancyhdr}
\fancypagestyle{mystyle}{%
\fancyhf{}% %clear headers, footers
\renewcommand{\headrulewidth}{0pt}% %and remove header rule
}
\begin{document}
\includepdf[pages=1,
pagecommand={\thispagestyle{empty}}, %is default, only mentioned to show alternative usage of customized mystyle
width=\textwidth,
height=\textheight,
keepaspectratio,
frame]{yourfile.pdf}
\end{document}
答案2
另一个答案*:根据我的假设在 memoir typeblock 中正确对齐 pdfpages 导入,对于布局,需要选择和之间twoside
的差异作为水平偏移。要找到的值,请取消注释命令(打印当前参数值),并使用选项编译一次,然后使用选定的再次编译。记下值并计算差异。如果在文档内切换布局选项是可行的,那么可能有一种方法可以自动执行此操作;我使用了计算器。由于尚不清楚的原因(参见链接的问题),计算值需要稍微调整;我减去了。\spinemargin
oneside
twoside
\spinemargin
\the
oneside
twoside
1pt
如果您希望 PDF 在类型块内垂直居中,请将垂直偏移量设置为零。如果它应该与顶部或底部对齐,则需要计算类型区域高度和缩放的导入 PDF 的高度之间的差值。如果导入的 PDF 是 A4 格式,则高宽比是二的平方根。由于 PDF 被缩放以致其宽度等于\textwidth
,因此将 与 sqrt(2) 相乘\textwidth
可得出导入 PDF 的缩放高度。类型区域的高度由 给出\textheight
。所需的偏移量是两个高度差的一半,对于顶部或底部对齐,可以是正值或负值。同样,这个值需要稍微调整;我减去了1.68pt
。
\documentclass[a4paper,12pt,twoside,onecolumn,openright,final,showtrims]{memoir}%
\usepackage{pdfpages}
\usepackage{showframe} %show page geometry
\begin{document}
% \the\spinemargin \quad %compute xoffset = \spinemargin(twoside) - \spinemargine(oneside) = -21pt
% \the\textwidth \quad
% \the\textheight %compute yoffset = .5 (\textheight - scaled-a4paper-height) = 25.18pt, with scaled-a4paper-height = \textwidth * (height(a4paper) / width(a4paper)) = \textwidth * sqrt(2)
\includepdf[pages=1-2,
pagecommand={\thispagestyle{plain}},
width=\textwidth,
height=\textheight,
keepaspectratio,
offset=-22pt 23.5pt %for vertically centered alignment, set yoffset=0pt
]{a4red.pdf}
\end{document}
*虽然我的第一个答案与导入参数有关,但这个答案是关于找到正确的offset
值。有人可能会说这个问题应该分开;无论如何,合并答案似乎没有意义。