如何将下一页的分段信息拉到这一页?

如何将下一页的分段信息拉到这一页?

我在 MWE 的第 5 页上发现了一些我还无法解释的行为:它似乎抓住了第 6 页开始的部分的面包屑。为什么会发生这种情况?我该如何防止它发生?

请参阅 GitHub 页面以了解lt3wstack我为一般问题编写的 expl3 模块的简要概述。

平均能量损失

% arara: pdflatex
% wget https://raw.githubusercontent.com/vermiculus/lt3wstack/32040abbe15faf6995e2120eca1b9b5f0617ae3b/lt3wstack.{tex,sty}
\begin{filecontents}{brdcrmbs.sty}
\RequirePackage{expl3,xpatch,xparse,lt3wstack}
\ExplSyntaxOn
\wstack_new:N \breadcrumbs_nav_wstack
\xapptocmd \@sect {
  \exp_args:NNx \wstack_push:Nnn \l__breadcrumbs_nav_wstack
    { \int_eval:n { 0 - #1 } } {#2} } {}{}
\cs_new:Npn \breadcrumbs_display:
  { \wstack_use:Nn \breadcrumbs_nav_wstack { ~$\to$~ } }
\NewDocumentCommand \ShowBreadcrumbs {} { \breadcrumbs_display: }
\ExplSyntaxOff
\endinput
\end{filecontents}
\documentclass[letter]{article}

\usepackage{brdcrmbs,fancyhdr}

\pagestyle{fancy}
\fancyhf{}
\renewcommand\headrulewidth{0pt}
\renewcommand\footrulewidth{0pt}
\chead{\ShowBreadcrumbs}
\cfoot{\thepage}

\usepackage{mwe}
\begin{document}
\Blinddocument
\end{document}

撰写本文时,lt3wstack

% \input expl3-generic \relax \ExplSyntaxOn

\tl_new:N  \l__wstack_tmp_tl
\seq_new:N \l__wstack_tmpa_seq
\seq_new:N \l__wstack_tmpb_seq

\cs_gset_eq:NN \wstack_new:N    \seq_new:N
\cs_gset_eq:NN \wstack_show:N   \seq_show:N
\cs_gset_eq:NN \wstack_clear:N  \seq_clear:N
\cs_gset_eq:NN \wstack_gclear:N \seq_gclear:N

% Push #3 (weight #2) onto #1 t[O(n)]
\cs_new:Npn \wstack_gpush:Nnn #1 #2 #3 {
  \wstack_push:Nnn #1 {#2} {#3}
  \seq_gset_eq:NN #1 #1
}
\cs_new:Npn \wstack_push:Nnn #1 #2 #3 {
  \wstack_pop_to:Nn #1 {#2}
  \seq_clear:N \l__wstack_tmp_seq
  \seq_push:Nn \l__wstack_tmp_seq {#3}
  \seq_push:Nn \l__wstack_tmp_seq {#2}
  \seq_push:NV #1 \l__wstack_tmp_seq
}

% Pop #1 until weight #2 could be placed t[O(n)]
\cs_new:Npn \wstack_gpop_to:Nn #1 #2 {
  \wstack_pop_to:Nn #1 {#2}
  \seq_gset_eq:NN #1 #1
}
\cs_new:Npn \wstack_pop_to:Nn #1 #2 {
  \seq_get:NN #1 \l__wstack_tmp_seq
  \seq_get:NN \l__wstack_tmp_seq \l__wstack_tmp_tl
  \bool_until_do:nn {
    \quark_if_no_value_p:N \l__wstack_tmp_tl ||
    \int_compare_p:nNn {#2} < \l__wstack_tmp_tl
  }
  {
    \seq_pop:NN #1 \l__wstack_tmp_seq
    \seq_get:NN #1 \l__wstack_tmp_seq
    \seq_get:NN \l__wstack_tmp_seq \l__wstack_tmp_tl
  }
}

% Retrieve data from #1 and put into #2 t[O(n)]
% If the stack was stored internally as 4321, the output is 1234
\cs_new:Npn \wstack_get_data:NN #1 #2 {
  \seq_clear:N #2
  \seq_map_inline:Nn #1 {
    \tl_set:Nn \l__wstack_tmpa_seq { ##1 }
    \tl_set:Nf \l__wstack_tmp_tl { \seq_item:Nn \l__wstack_tmpa_seq {2} }
    \seq_push:NV #2 \l__wstack_tmp_tl
  }
}

\cs_new:Npn \wstack_use:Nn #1 #2 {
  \wstack_get_data:NN #1 \l__wstack_tmpb_seq
  \seq_use:Nn \l__wstack_tmpb_seq {#2}
}
\cs_new:Npn \wstack_use:Nnnn #1 #2 #3 #4 {
  \wstack_get_data:NN #1 \l__wstack_tmpb_seq
  \seq_use:Nnnn \l__wstack_tmpb_seq {#2} {#3} {#4}
}

相关内容