Изменить порядок страниц при использовании pdfpages

Изменить порядок страниц при использовании pdfpages

Рассмотрим следующий пример.

Файл:B.tex

\documentclass[
  12pt,
  landscape
]{article}

\usepackage[
  a6paper
]{geometry}
\usepackage{multido}


\newenvironment{navn}{%
  \setlength{\topskip}{0pt}%
  \centering
  \vspace*{\fill}%
  \nointerlineskip
  \Huge
  % \sbox0{Front}%
  % \showthe\ht0
}{%
  \par
  \vspace*{\fill}%
  % \setlength{\showboxdepth}{\maxdimen}%
  % \setlength{\showboxbreadth}{\maxdimen}%
  % \tracingonline=1 %
  % \showlists
}

\pagestyle{empty}


\begin{document}

\multido{\i = 1+1}{16}{%
\begin{navn}
  Front
\end{navn}
\newpage}

\end{document}

Файл:C.tex

\documentclass[
  12pt,
  landscape
]{article}

\usepackage[
  a6paper
]{geometry}
\usepackage{multido}


\newenvironment{navn}{%
  \setlength{\topskip}{0pt}%
  \centering
  \vspace*{\fill}%
  \nointerlineskip
  \Huge
  % \sbox0{XYZ}%
  % \showthe\ht0
}{%
  \par
  \vspace{\fill}%
  % \setlength{\showboxdepth}{\maxdimen}%
  % \setlength{\showboxbreadth}{\maxdimen}%
  % \tracingonline=1 %
  % \showlists
}

\pagestyle{empty}


\begin{document}

\multido{\i = 1+1}{16}{%
\begin{navn}
  \thepage
\end{navn}
\newpage}

\end{document}

Файл:A.tex

\documentclass[
  a4paper
]{article}

\usepackage{pdfpages}

\begin{document}

\includepdf[
  nup = 2x4,
  pages = -,
  frame = true
]{B}

\includepdf[
  nup = 2x4,
  pages = -
]{C}

\end{document}

(В действительности документы B.texгораздо C.texбольше.)

Вопрос

ОБНОВЛЕНО

Как изменить порядок страниц A.pdfв

Бп1, Бп2, ..., Бпн, Кп1, Кп2, ..., Кпн

к

Bp1, ..., Bp8, Cp1, ..., Cp8, [...], Bp(n-8), ..., Bpn, Cp(n-8), Cpn

для произвольного n?

То есть A.pdfя хочу, B.pdfчтобы на первой странице были только страницы с , а C.pdfна второй — только страницы с , и так далее.

решение1

Я удалил предыдущий код, поэтому этот ответ соответствует последней редакции вашего вопроса.

Приведенный ниже код делает то, что вам нужно (и проверяет, имеют ли C.pdfи B.pdfодинаковое количество страниц, если нет, он печатает до последней страницы того, у которого меньше страниц (в дуплексном режиме с Bодной и Cдругой страницей), а после этого печатает оставшуюся часть того, у которого больше страниц). Он принимает необязательный аргумент, который может задавать фиксированное максимальное количество страниц вместо всех страниц обоих PDF-файлов (хотя при фиксированном максимальном количестве страниц не проверяется, имеют ли оба PDF-файла одинаковое количество страниц).

\documentclass[
  a4paper
]{article}

\usepackage{pdfpages}

\newcount\maxpages
\newcount\curpage
\newcount\untilpage
\makeatletter
\newif\if@pdfdingsunbalance
\newcount\@testmaxpages
\newcommand{\@incpdfdings}[3]{\includepdf[nup=2x4,pages={#1-#2},frame=true]{#3}}
\newcommand{\incpdfdings}[3][]{%
    \ifx\relax#1\relax%
        \pdfximage{#2}%
        \maxpages=\pdflastximagepages%
        \pdfximage{#3}%
        \@testmaxpages=\pdflastximagepages%
        \ifnum\maxpages<\@testmaxpages%
            \@pdfdingsunbalancetrue%
            \def\@pdfdingsmore{#3}%
        \else\ifnum\@testmaxpages<\maxpages%
            \@pdfdingsunbalancetrue%
            \def\@pdfdingsmore{#2}%
            \maxpages=\@testmaxpages%
        \fi\fi%
    \else%
        \maxpages=#1%
    \fi%
    \curpage=0%
    \loop\ifnum\maxpages>\curpage%
        \advance\curpage by 1%
        \untilpage=\numexpr\curpage+7\relax%
        \ifnum\maxpages>\untilpage\else%
            \untilpage=\maxpages%
        \fi%
        \@incpdfdings{\the\curpage}{\the\untilpage}{#2}%
        \@incpdfdings{\the\curpage}{\the\untilpage}{#3}%
        \advance\curpage by 7%
    \repeat%
    \if@pdfdingsunbalance%
        \advance\maxpages by 1%
        \@incpdfdings{\the\maxpages}{}{\@pdfdingsmore}%
    \fi%
}
\makeatother

\begin{document}
\incpdfdings{B.pdf}{C.pdf}
\end{document}

EDIT: Я все равно опубликую обнаруженную ошибку (она выдает предупреждение):

\documentclass[
  a4paper
]{article}

\usepackage{pdfpages}

\newcount\maxpages
\newcount\curpage
\newcount\untilpage
\makeatletter
\newif\if@pdfdingsunbalance
\newcount\@testmaxpages
\newcommand{\@incpdfdings}[3]{\includepdf[nup=2x4,pages={#1-#2},frame=true]{#3}}
\newcommand{\incpdfdings}[3][]{%
    \ifx\relax#1\relax%
        \pdfximage{#2}%
        \maxpages=\pdflastximagepages%
        \pdfximage{#3}%
        \@testmaxpages=\pdflastximagepages%
        \ifnum\maxpages<\@testmaxpages%
            \@pdfdingsunbalancetrue%
            \def\@pdfdingsmore{#3}%
        \else\ifnum\@testmaxpages<\maxpages%
            \@pdfdingsunbalancetrue%
            \def\@pdfdingsmore{#2}%
            \maxpages=\@testmaxpages%
        \fi\fi%
    \else%
        \maxpages=#1%
        \pdfximage{#2}%
        \@testmaxpages=\pdflastximagepages%
        \ifnum\maxpages>\@testmaxpages%
            \@latex@warning{The file #2 you wanted to be printed with
                incpdfdings doesn't have enough pages to match your request in
                the optional argument}%
            \maxpages=\@testmaxpages%
        \fi%
        \pdfximage{#3}%
        \@testmaxpages=\pdflastximagepages%
        \ifnum#1>\@testmaxpages%
            \@latex@warning{The file #3 you wanted to be printed with
                incpdfdings doesn't have enough pages to match your request in
                the optional argument}%
            \ifnum\maxpages>\@testmaxpages%
                \maxpages=\@testmaxpages%
        \fi\fi%
    \fi%
    \curpage=0%
    \loop\ifnum\maxpages>\curpage%
        \advance\curpage by 1%
        \untilpage=\numexpr\curpage+7\relax%
        \ifnum\maxpages>\untilpage\else%
            \untilpage=\maxpages%
        \fi%
        \@incpdfdings{\the\curpage}{\the\untilpage}{#2}%
        \@incpdfdings{\the\curpage}{\the\untilpage}{#3}%
        \advance\curpage by 7%
    \repeat%
    \if@pdfdingsunbalance%
        \advance\maxpages by 1%
        \@incpdfdings{\the\maxpages}{}{\@pdfdingsmore}%
    \fi%
}
\makeatother

\begin{document}
\incpdfdings[60]{B.pdf}{C.pdf}
\end{document}

решение2

было бы эффективнее объединить два PDF-файла в один, а затем во второй раз добавить его в документ C. Эта ссылка может быть полезна, если вы привыкли к JavaScript:http://www.planetpdf.com/developer/article.asp?ContentID=collating_pdfs_using_javascrip&rh%20s_fa

или этот онлайн-сервис https://www.sejda.com/en/alternate-mix-pdf

Связанный контент