编辑

编辑

我正在尝试制作一些邀请卡,并将八份副本放在一张 A4 纸上进行打印。邀请函是在一张 A5 尺寸的页面上创建的(因为我也想要一些 A5 副本),我尝试使用 pgfpages 将八张 A5 纸缩小并将它们合并到一张 A4 纸上。

问题是,当我编译代码时,八个子页面上的文本明显没有居中(尽管在单独编译页面时,页面会居中,并且八页之间留有间距(我想如果我要制作演示文稿的讲义,我会想要这样的间距,但在当前情况下不是这样)。请参阅以下 MWE:

\documentclass[a5paper, landscape]{article}

\usepackage{pgfpages}
\usepackage{pgffor}
\pgfpagesuselayout{8 on 1}[a4paper]
\pagestyle{empty}

\newcommand{\Invite}{\begin{centering}
Please come to my party
\end{centering}}

\begin{document}
\Invite
\foreach \n in {1, ..., 7}{\newpage \Invite}
\end{document}

我想要的是原始邀请函的八份复印件,缩小到原来的一半大小并紧密地并排放置,这样打印后,我可以简单地将页面剪成八等份,得到同一张卡片的相同复印件。

我将非常感激任何关于如何实现这一目标的建议!

稍后添加:

感谢您对我使用 的评论和回答centering\par按照建议添加可修复 MWE 中的问题。但是,当我返回到我的真实代码时,仍然存在问题。我认为问题与边距有关。在各个页面上,我调整了边距,以便可以容纳大文本,但当我使用 pgfpages 时,这似乎会弄乱一切。以下代码说明了该问题:

\documentclass[a5paper, landscape]{article}

\usepackage{pgffor}
\usepackage{pgfpages}
\pgfpagesuselayout{8 on 1}[a4paper]

\addtolength{\textwidth}{5cm}
\addtolength{\hoffset}{-2.5cm}
\addtolength{\textheight}{6cm}
\addtolength{\voffset}{-2.6cm}
\pagestyle{empty}

\newcommand{\Invite}{\centering
\vspace*{100pt}
\Huge Invitation
\par}

\begin{document}
\Invite
\foreach \n in {1, ..., 7}{\newpage \Invite}
\end{document}

注释掉此8 on 1行会给出八个单独的页面,其中包含位置合适的文本,但是当将此行放回并将八个页面合并时,文本不再正确放置在每个子页面上。

我尝试将\addtolength行移到行之前8 on 1,但这没有帮助。有办法解决这个问题吗?

答案1

pgfpages工作做得很好:

8 起

没有一页的文本居中,因为\centering在段落结束时应用,但您\newpage在没有结束段落的情况下发出。

\centering
First way
\par

\begin{center}
Second way
\end{center}

第二种方法增加了垂直间距,而第一种方法则没有。

例如:

8 居中

代码:

\documentclass[a5paper, landscape]{article}
% \usepackage{showframe}
\usepackage{pgfpages}
\usepackage{pgffor}
\pgfpagesuselayout{8 on 1}[a4paper]
\pagestyle{empty}

\newcommand{\Invite}{%
  \begin{center}
    Please come to my party
  \end{center}}

\begin{document}
\Invite
\foreach \n in {1, ..., 7}{\newpage \Invite}
\end{document}

编辑

在问题更新部分发布的代码中,我们可以通过添加以下内容来直观地了解问题\usepackage{showframe}

问题关于问题的更新部分

这种偏离中心的情况是由于\hoffset和造成\voffset的。我不确定这些到底是用来做什么的,但问题出在原始 A5 文档中:

问题显示

处理这个问题的最佳方法不是直接处理,而是使用一个可以为你完成必要计算的包。例如

\usepackage{geometry}
\geometry{textwidth=50mm,textheight=60mm}

它还将从类选项中挑选出a5paper任何内容并确保它被正确考虑。(LaTeX 本身并不能做到这一点。)

然后单个页面如下所示:

调整页面

8 页内容如下:

8 页合一,已调整

这可能就是你想要的。除了只是为了演示布局的框架:

最终 8 页,已调整,无框架

完整代码:

\documentclass[a5paper, landscape]{article}
\usepackage{pgffor}
\usepackage{pgfpages}
\pgfpagesuselayout{8 on 1}[a4paper]
\pagestyle{empty}
%\usepackage[showframe]{geometry}
\usepackage{geometry}
\geometry{textwidth=50mm,textheight=60mm}

\newcommand{\Invite}{%
  \centering
  \vspace*{100pt}
  \Huge Invitation
  \par
}

\begin{document}
\Invite
\foreach \n in {1, ..., 7}{%
  \newpage
  \Invite
}
\end{document}

相关内容