投影仪讲义的多种输出

投影仪讲义的多种输出

我目前正在为beamer我课程的学生制作一些演示文稿。有些人喜欢打印材料,所以我制作了一份讲义。有些学生喜欢每张 A4 纸有 2、3、4、6 等页。我该如何自动化以下代码,以便它以 1x2、1x3、2x2、2x3 格式输出 4 个不同的文件?

我想避免每次针对不同的格式都重新进行编译。

\documentclass[a4paper]{article}
\usepackage{pdfpages}

\begin{document}
\includepdf[pages=1-last,nup=1x2,landscape=false,frame=true,
            noautoscale=false,scale=1,delta=0mm 5mm]{Pres7Chap13-Handout.pdf}
\end{document}

答案1

使用pdflatex选项 编译--shell-escape

\documentclass[a4paper]{article}
\usepackage{pdfpages}
\usepackage{filecontents}
%
\begin{filecontents*}{1x2.tex}
\documentclass[a4paper]{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=1-last,nup=1x2,landscape=false,frame=true,
            noautoscale=false,scale=1,delta=0mm 5mm]{template.pdf}
\end{document}
\end{filecontents*}
%
\begin{filecontents*}{1x3.tex}
\documentclass[a4paper]{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=1-last,nup=1x3,landscape=false,frame=true,
            noautoscale=false,scale=1,delta=0mm 5mm]{template.pdf}
\end{document}
\end{filecontents*}
%
\begin{filecontents*}{2x2.tex}
\documentclass[a4paper]{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=1-last,nup=2x2,landscape=false,frame=true,
            noautoscale=false,scale=1,delta=0mm 5mm]{template.pdf}
\end{document}
\end{filecontents*}
%
\immediate\write18{pdflatex 1x2}
\immediate\write18{pdflatex 1x3}
\immediate\write18{pdflatex 2x2}
%
\begin{document}
\includepdf[pages=1-last,nup=2x3,landscape=false,frame=true,
            noautoscale=false,scale=1,delta=0mm 5mm]{template.pdf}
\end{document}

您将在同一文件夹中获得 3 个新.tex文件 - 1x2.tex1x3.tex和4 个 pdf 文件(3 + 1)。2x2.tex

答案2

假设这mathusalem-handout.pdf是您想要以 N-up 格式多次打印的文件。

准备一个mathusalem-print-handouts.tex包含以下内容的文件

\documentclass{article}
\usepackage{pdfpages}
\begin{document}

\begingroup\edef\x{\endgroup
  \noexpand\includepdf[pages=-,nup=\handoutformat,landscape=false,frame=true,
    noautoscale=false,scale=1,delta=0mm 5mm]{mathusalem-handout.pdf}}\x

\end{document}

以及mathusalem-produce-handouts.tex包含

\def\ahandout#1{\immediate\write18{pdflatex -jobname=mathusalem-handout-#1 %
  "\def\noexpand\handoutformat{#1}\noexpand\input{mathusalem-print-handouts}"}}

\ahandout{1x2}
\ahandout{1x3}
\ahandout{2x2}
\ahandout{2x3}
\stop

编辑行以添加或删除格式。然后在pdflatex启用 shell escape 的情况下运行最后一个文件:

pdflatex -shell-escape mathusalem-produce-handouts

你将获得四个 PDF 文件

mathusalem-handout-1x2.pdf
mathusalem-handout-1x3.pdf
mathusalem-handout-2x2.pdf
mathusalem-handout-2x3.pdf

相关内容