1

The following question stinks a bit of crazed micro-optimization. But I had written it, and I was a bit curious, so I thought I might as well post it.

The following loop iterates over inserting some files:

\foreach \n in {1,...,3}
{\includefile{\n}}

But I'd like to insert some blank pages in between those files. So, something like this:

\includefile{1}
\includefile{2}
\addblankpage
\includefile{3}

The question is - can this be done while still preserving a loop structure? Something involving a double loop like in Parallel loop [python-like zip] in Tikz might work, but a graceful way of doing so it not obvious.

See a complete MWE below.

\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}
2
  • Is there a pattern which the insertion of blank pages adheres to?
    – TeXnician
    Mar 29, 2019 at 10:41
  • @TeXnician No, in general, no pattern. The idea is that I may occasionally want to add a blank page. Mar 29, 2019 at 11:18

1 Answer 1

1

It seems that adding an array containing \addblankpage's, and then looping over that simultaneously, works. Like this:

\readlist*\Blankfiles{
  ,
  \addblankpage,
}
And then changing the loop to

\foreach \n in {1,...,3}
{\includefile{\n}\Blankfiles[\n]}

A corresponding MWE follows. Comments welcome.

\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}

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .