我目前正在为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.tex
、1x3.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