下面的问题有点疯狂的微优化的味道。但是我已经写了,而且我有点好奇,所以我想我还是把它贴出来吧。
以下循环迭代插入一些文件:
\foreach \n in {1,...,3}
{\includefile{\n}}
但我想在这些文件之间插入一些空白页。因此,像这样:
\includefile{1}
\includefile{2}
\addblankpage
\includefile{3}
问题是 - 是否可以在保留循环结构的情况下做到这一点? 涉及双循环的东西,例如Tikz 中的并行循环 [python-like zip]可能会有效,但实现这一目的的优雅方式并不明显。
请参阅下面完整的 MWE。
\documentclass[12pt]{article}
\usepackage{filecontents}
\usepackage{shellesc}
\usepackage{tikz}
\usepackage{pdfpages}
\usepackage{listofitems}
\newcommand{\addblankpage}{\clearpage \phantom{} \clearpage}
\begin{document}
\begin{filecontents*}{foo/bar.tex}
\documentclass[12pt]{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture} % This will be output to foo/bar
\node [font=\bfseries\Large, align=center] at (10, -10){TEST};(10,10);
\end{tikzpicture}
\end{document}
\end{filecontents*}
\ShellEscape{cd foo; pdflatex -shell-escape bar.tex}
\readlist*\Filenames{
foo/bar.pdf,
foo/bar.pdf,
foo/bar.pdf
}
\newcommand{\includefile}[1]{
\includepdf[pagecommand=
{\begin{tikzpicture}[remember picture, overlay]
\node [font=\bfseries\Large, align=center] at (5, -5){WRITE ON TOP};
\end{tikzpicture}}
,pages=1-]{\Filenames[#1]}
}
% Can this be done
\includefile{1}
\includefile{2}
\addblankpage
\includefile{3}
% using a loop?
\foreach \n in {1,...,3}
{\includefile{\n}}
\end{document}
答案1
似乎添加一个包含 \addblankpage 的数组,然后同时循环该数组,就可以了。如下所示:
\readlist*\Blankfiles{
,
\addblankpage,
}
And then changing the loop to
\foreach \n in {1,...,3}
{\includefile{\n}\Blankfiles[\n]}
相应的 MWE 如下。欢迎评论。
\documentclass[12pt]{article}
\usepackage{filecontents}
\usepackage{shellesc}
\usepackage{tikz}
\usepackage{pdfpages}
\usepackage{listofitems}
\newcommand{\addblankpage}{\clearpage \phantom{} \clearpage}
\begin{document}
\begin{filecontents*}{foo/bar.tex}
\documentclass[12pt]{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture} % This will be output to foo/bar
\node [font=\bfseries\Large, align=center] at (10, -10){TEST};
\end{tikzpicture}
\end{document}
\end{filecontents*}
\ShellEscape{cd foo; pdflatex -shell-escape bar.tex}
\readlist*\Filenames{
foo/bar.pdf,
foo/bar.pdf,
foo/bar.pdf
}
\readlist*\Blankfile{
,
\addblankpage,
}
\newcommand{\includefile}[1]{
\includepdf[pagecommand=
{\begin{tikzpicture}[remember picture, overlay]
\node [font=\bfseries\Large, align=center] at (5, -5){WRITE ON TOP};
\end{tikzpicture}}
,pages=1-]{\Filenames[#1]}
}
\includefile{1}
\includefile{2}
\addblankpage
\includefile{3}
\foreach \n in {1,...,3}
{\includefile{\n}\Blankfile[\n]}
\end{document}