atbegshi 警告作为输出的一部分打印

atbegshi 警告作为输出的一部分打印

请考虑以下示例:

\documentclass{article}
\usepackage{lipsum,atbegshi}
\usepackage[2-]{pagesel}% Ignore first page
\begin{document}
\lipsum[1-50]
\end{document}

输出包括来自atbegshi

在此处输入图片描述

我该如何避免这种情况?

答案1

每次丢弃页面后都会发生这种情况。

pagesel根据您指定的纳入标准丢弃页面。当页面被排除时,发货框将作废,这会让人感到困惑atbegshi

为了避免这种情况,请切换加载顺序,加载atbegshi pagesel

在此处输入图片描述

\documentclass{article}
\usepackage[2-]{pagesel}
\usepackage{lipsum,atbegshi}
\begin{document}
\lipsum[1-50]
\end{document}

答案2

沃纳的补充回答

此外,软件包还atbegshi具有“页面丢弃”功能。例如,可以通过以下方式忽略第一页:

\documentclass{article}
\usepackage{lipsum,atbegshi}
% \usepackage[2-]{pagesel}% Ignore first page
\AtBeginShipoutNext{\AtBeginShipoutDiscard}
\begin{document}
\lipsum[1-50]
\end{document}

或者忽略所有偶数页:

\documentclass{article}
\usepackage{lipsum,atbegshi}
\AtBeginShipout{%
  \ifodd\value{page}%
  \else
    \AtBeginShipoutDiscard
  \fi
}
\begin{document}
\lipsum[1-50]
\end{document}

当然,语法不如使用 package 那么舒服pagesel,因此 Werner 的解决方案(使用pageselbefore)atbegshi是最简单的方法。

尽管如此,通过忽略atbegshi可以实现更有趣的事情,例如忽略用引用标记的页面:

% \nofiles % for the final run
\documentclass{article}
\usepackage{lipsum,atbegshi, refcount}
\AtBeginShipout{%
  \ifnum\getrefbykeydefault{IgnoreThisPage}{page}{-\maxdimen}=\value{page}%
    \AtBeginShipoutDiscard
  \fi
}
\begin{document}
\lipsum[1-25]
\section{This page is ignored}
\label{IgnoreThisPage}
\lipsum[26-50]
\end{document}

在第一次运行中,引用被写入文件.aux。在第二次运行中,带有引用的页面被丢弃。由于页面未输出,引用不会写入文件.aux,第三次运行再次写入引用,但包含页面。因此,排除文件的运行应该调用\nofiles以防止对辅助文件的更改。

相关内容