按照 \includepdf 命令顺序标记最后一页

按照 \includepdf 命令顺序标记最后一页

我的情况很棘手。我使用 NewEnviron 来分隔文档的几个主要部分。每个部分都有自己的编号方案和几个特定于环境的命令和设置。对于我的问题来说,重要的是,所有编号方案都遵循以下原则page_current of page_total

但是,如果我现在使用 插入 pdf 文档,则会在文档的最后一页执行breaks if\includepdf标签。page_total\includepdf

这里有一个 mwe,可能可以更好地解释这一点。

\documentclass[fontsize=10pt]{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{mwe}

\usepackage{pdfpages}
\usepackage{environ}
\usepackage{scrlayer-scrpage}

\NewEnviron{myenvi}{%
    \clearscrheadfoot%
    \cfoot{\normalfont\thepage\ / \pageref{lastpage}}%
    \clearpage%
    \BODY%
    \label{lastpage}%
}

\newcommand{\myincludepdf}[1]{\includepdf[scale=0.5, frame, pagecommand={}]{#1}}
%\newcommand{\myincludepdf}[1]{\includepdf[scale=0.5, frame, pagecommand={\label{lastpage}}]{#1}}

\begin{document}

    \begin{myenvi}
        \lipsum[1-15]
        \myincludepdf{example-image-a4}
    \end{myenvi}

\end{document}

我还尝试将我的标签添加到 includepdf 的邮政编码中。但这没有帮助。

我找到了两种方法来实现它。但都不令人满意。第一种方法是简单地向文档添加另一页。因为这样就\label{lastpage}可以再次执行。此外,还可以将添加\label{lastpage}到 \includepdf 的 pagecommand 选项中。但随后我收到很多“lastpage 多次定义”警告。

有谁知道如何解决这个问题吗?我考虑过使用计数器或 gdef 之类的东西。但我认为,如果没有 sidecar 文件的帮助,解决这个问题是不可能的。

是否有一个选项可以直接操作辅助文件,以便我不再产生多个标签,而只\label{lastpage}保留最后一次调用?

答案1

好的,找到了解决方案。可能也不是最优雅的,但它有效。我使用最后一页-package 检查内部\includepdf当前页面是否是文档的最后一页。如果是,则执行\label{endenvi},因此只定义一次。如果页面位于所有页面之后,则\includepdf执行我的环境定义中的标签命令。

这里是代码:

\documentclass{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{mwe}

\usepackage{pdfpages}
\usepackage{environ}
\usepackage{lastpage}
\usepackage{xifthen}
\usepackage{scrlayer-scrpage}


\NewEnviron{myenvi}{%
    \clearscrheadfoot%
    \cfoot{\normalfont\thepage\ / \pageref{endenvi}}%
    \clearpage%
    \BODY%
    \label{endenvi}
}


\newcommand{\myincludepdf}[1]{\includepdf[scale=0.5, frame, pagecommand={%
        \ifthenelse{\equal{\pageref{LastPage}}{\thepage}}{\label{endenvi}}{}}]{#1}}

\begin{document}

    \begin{myenvi}
        \lipsum[1-15]
        \myincludepdf{example-image-a4}
        \myincludepdf{example-image-a4}
    \end{myenvi}

\end{document}

相关内容