diff options
author | Karl Berry <karl@freefriends.org> | 2023-08-15 20:35:20 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-08-15 20:35:20 +0000 |
commit | d676ca362b27cf4aaab8bf7061e0269cff11e3b7 (patch) | |
tree | 0682f9aecb88bae8aa3b377e5a6451cfae53097f /Master/texmf-dist/tex/latex/zref-check | |
parent | 3f8de867f34702ea4ac10dc0baf0126c09918f98 (diff) |
zref-check (14aug23)
git-svn-id: svn://tug.org/texlive/trunk@67939 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/zref-check')
-rw-r--r-- | Master/texmf-dist/tex/latex/zref-check/zref-check.sty | 973 |
1 files changed, 485 insertions, 488 deletions
diff --git a/Master/texmf-dist/tex/latex/zref-check/zref-check.sty b/Master/texmf-dist/tex/latex/zref-check/zref-check.sty index fd41bec44c1..277887b7938 100644 --- a/Master/texmf-dist/tex/latex/zref-check/zref-check.sty +++ b/Master/texmf-dist/tex/latex/zref-check/zref-check.sty @@ -42,19 +42,18 @@ %% %% ----------------------------------------------------------------------- %% -\NeedsTeXFormat{LaTeX2e} +\def\zrefcheck@required@kernel{2021-06-01} +\NeedsTeXFormat{LaTeX2e}[\zrefcheck@required@kernel] \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} -\IfFormatAtLeastTF{2021-06-01} +\IfFormatAtLeastTF{\zrefcheck@required@kernel} {} {% \PackageError{zref-check}{LaTeX kernel too old} {% - 'zref-check' requires a LaTeX kernel newer than 2021-06-01.% - \MessageBreak Loading will abort!% + 'zref-check' requires a LaTeX kernel \zrefcheck@required@kernel\space or newer.% }% - \endinput }% -\ProvidesExplPackage {zref-check} {2023-06-14} {0.3.3} +\ProvidesExplPackage {zref-check} {2023-08-13} {0.3.4} {Flexible cross-references with contextual checks based on zref} \RequirePackage { zref-user } \RequirePackage { zref-abspage } @@ -106,6 +105,13 @@ Same~page~check~\msg_line_context:.~ Double-check~'#1'~for~label~'#2'~on~page~#3. } +\msg_new:nnn { zref-check } { empty-label } + { + Check~failed~\msg_line_context:.~ + Failed~check~'#1'~for~empty~label. + } +\msg_new:nnn { zref-check } { no-checks } + { No~checks~for~'\iow_char:N\\zcheck'~\msg_line_context:. } \msg_new:nnn { zref-check } { check-missing } { Check~'#1'~not~defined~\msg_line_context:. } \msg_new:nnn { zref-check } { property-undefined } @@ -121,9 +127,9 @@ } \msg_new:nnn { zref-check } { missing-hyperref } { Missing~'hyperref'~package. \iow_newline: Setting~'hyperref=false'. } -\msg_new:nnn { zref-check } { ignore-document-only } +\msg_new:nnn { zref-check } { ignore-ok-document-only } { - Option~'ignore'~only~available~in~the~document. \iow_newline: + Option~'#1'~only~available~in~the~document. \iow_newline: Use~option~'msglevel'~instead. } \msg_new:nnn { zref-check } { option-preamble-only } @@ -230,28 +236,22 @@ { \tl_set:Nn \l__zrefcheck_msglevel_tl { warning } } { \tl_set:Nn \l__zrefcheck_msglevel_tl { info } } } , - msglevel / obeydraft .code:n = - { - % NOTE Option value deprecated in 2021-12-07 for v0.2.2. - \msg_warning:nnnn { zref-check }{ option-deprecated-with-alternative } - { msglevel=obeydraft } { msglevel=infoifdraft } - } , - msglevel / obeyfinal .code:n = - { - % NOTE Option value deprecated in 2021-12-07 for v0.2.2. - \msg_warning:nnnn { zref-check }{ option-deprecated-with-alternative } - { msglevel=obeyfinal } { msglevel=warniffinal } - } , msglevel .value_required:n = true , msglevel .initial:n = warn , ignore .code:n = - { \msg_warning:nn { zref-check } { ignore-document-only } } , - ignore .value_forbidden:n = true + { \msg_warning:nnn { zref-check } { ignore-ok-document-only } { ignore } } , + ignore .value_forbidden:n = true , + ok .code:n = + { \msg_warning:nnn { zref-check } { ignore-ok-document-only } { ok } } , + ok .value_forbidden:n = true , } \AddToHook { begindocument } { \keys_define:nn { zref-check } - { ignore .meta:n = { msglevel = none } } + { + ignore .meta:n = { msglevel = none } , + ok .meta:n = { msglevel = none } , + } } \bool_new:N \l__zrefcheck_msgonpage_bool \keys_define:nn { zref-check } @@ -277,18 +277,6 @@ { \bool_set_true:N \l__zrefcheck_msgonpage_bool } { \bool_set_false:N \l__zrefcheck_msgonpage_bool } } , - onpage / obeydraft .code:n = - { - % NOTE Option value deprecated in 2021-12-07 for v0.2.2. - \msg_warning:nnnn { zref-check }{ option-deprecated-with-alternative } - { onpage=obeydraft } { onpage=labelseqifdraft } - } , - onpage / obeyfinal .code:n = - { - % NOTE Option value deprecated in 2021-12-07 for v0.2.2. - \msg_warning:nnnn { zref-check }{ option-deprecated-with-alternative } - { onpage=obeyfinal } { onpage=msgiffinal } - } , onpage .value_required:n = true , onpage .initial:n = labelseq } @@ -307,15 +295,6 @@ closerange .value_required:n = true , closerange .initial:n = 5 } -\keys_define:nn { zref-check } - { - labelcmd .code:n = - { - % NOTE Option value deprecated in 2022-02-08 for v0.2.4. - \msg_warning:nnn { zref-check }{ option-deprecated } - { labelcmd } - } , - } \bool_lazy_and:nnT { \tl_if_exist_p:c { opt@ zref-check.sty } } { ! \tl_if_empty_p:c { opt@ zref-check.sty } } @@ -328,32 +307,32 @@ { \ior_open:Nn \g_tmpa_ior { \g_tmpa_tl } \group_begin: - \int_zero:N \l_tmpa_int - \tl_clear:N \l_tmpa_tl - \tl_clear:N \l_tmpb_tl - \bool_set_false:N \l_tmpa_bool - \ior_map_variable:NNn \g_tmpa_ior \l_tmpa_tl - { - \tl_map_variable:NNn \l_tmpa_tl \l_tmpb_tl - { - \tl_if_eq:NnTF \l_tmpb_tl { \zref@newlabel } - { - \bool_set_true:N \l_tmpa_bool - } - { - \bool_if:NTF \l_tmpa_bool - { - \bool_set_false:N \l_tmpa_bool - \int_incr:N \l_tmpa_int - \prop_gput:Nxx \g__zrefcheck_auxfile_lblseq_prop - { \l_tmpb_tl } { \int_use:N \l_tmpa_int } - } - { - \tl_map_break: - } - } - } - } + \int_zero:N \l_tmpa_int + \tl_clear:N \l_tmpa_tl + \tl_clear:N \l_tmpb_tl + \bool_set_false:N \l_tmpa_bool + \ior_map_variable:NNn \g_tmpa_ior \l_tmpa_tl + { + \tl_map_variable:NNn \l_tmpa_tl \l_tmpb_tl + { + \tl_if_eq:NnTF \l_tmpb_tl { \zref@newlabel } + { + \bool_set_true:N \l_tmpa_bool + } + { + \bool_if:NTF \l_tmpa_bool + { + \bool_set_false:N \l_tmpa_bool + \int_incr:N \l_tmpa_int + \prop_gput:Nxx \g__zrefcheck_auxfile_lblseq_prop + { \l_tmpb_tl } { \int_use:N \l_tmpa_int } + } + { + \tl_map_break: + } + } + } + } \group_end: \ior_close:N \g_tmpa_ior } @@ -425,39 +404,40 @@ \cs_new_protected:Npn \__zrefcheck_zcheck:nnnn #1#2#3#4 { \group_begin: - \keys_set:nn { zref-check / zcheck } {#3} - \seq_set_from_clist:Nn \l__zrefcheck_zcheck_labels_seq {#1} - \int_gincr:N \g__zrefcheck_id_int - \tl_set:Nx \l__zrefcheck_checkbeg_tl - { \__zrefcheck_check_lblfmt:n { \g__zrefcheck_id_int } } - \zref@labelbylist { \l__zrefcheck_checkbeg_tl } { zrefcheck-check } - \seq_get:NN \l__zrefcheck_zcheck_labels_seq \l__zrefcheck_link_label_tl - \bool_set:Nn \l__zrefcheck_link_star_bool {#2} - \zref@ifrefundefined { \l__zrefcheck_link_label_tl } - {#4} - { - \bool_if:nTF - { - \l__zrefcheck_use_hyperref_bool && - ! \l__zrefcheck_link_star_bool - } - { - \exp_args:Nx \zrefcheck_get_astl:nnn - { \l__zrefcheck_link_label_tl } - { anchor } { \l__zrefcheck_link_anchor_tl } - \hyperlink { \l__zrefcheck_link_anchor_tl } {#4} - } - {#4} - } - \bool_if:NT \l__zrefcheck_zcheck_end_label_bool - { - \zref@labelbylist - { \__zrefcheck_end_lblfmt:n { \l__zrefcheck_checkbeg_tl } } - { zrefcheck-end } - } - \seq_map_function:NN \l__zrefcheck_zcheck_labels_seq \zref@refused - \__zrefcheck_run_checks:nnx { \l__zrefcheck_zcheck_checks_seq } - { \l__zrefcheck_zcheck_labels_seq } { \l__zrefcheck_checkbeg_tl } + \keys_set:nn { zref-check / zcheck } {#3} + \seq_set_split:Nnn \l__zrefcheck_zcheck_labels_seq { , } {#1} + \int_gincr:N \g__zrefcheck_id_int + \tl_set:Nx \l__zrefcheck_checkbeg_tl + { \__zrefcheck_check_lblfmt:n { \g__zrefcheck_id_int } } + \zref@labelbylist { \l__zrefcheck_checkbeg_tl } { zrefcheck-check } + \seq_get:NN \l__zrefcheck_zcheck_labels_seq \l__zrefcheck_link_label_tl + \bool_set:Nn \l__zrefcheck_link_star_bool {#2} + \zref@ifrefundefined { \l__zrefcheck_link_label_tl } + {#4} + { + \bool_if:nTF + { + \l__zrefcheck_use_hyperref_bool && + ! \l__zrefcheck_link_star_bool + } + { + \exp_args:Nx \zrefcheck_get_astl:nnn + { \l__zrefcheck_link_label_tl } + { anchor } { \l__zrefcheck_link_anchor_tl } + \hyperlink { \l__zrefcheck_link_anchor_tl } {#4} + } + {#4} + } + \bool_if:NT \l__zrefcheck_zcheck_end_label_bool + { + \zref@labelbylist + { \__zrefcheck_end_lblfmt:n { \l__zrefcheck_checkbeg_tl } } + { zrefcheck-end } + } + \seq_map_inline:Nn \l__zrefcheck_zcheck_labels_seq + { \tl_if_empty:nF {##1} { \zref@refused {##1} } } + \__zrefcheck_run_checks:nnx { \l__zrefcheck_zcheck_checks_seq } + { \l__zrefcheck_zcheck_labels_seq } { \l__zrefcheck_checkbeg_tl } \group_end: } \NewDocumentCommand \zctarget { m +m } @@ -494,6 +474,7 @@ nextsec , secsbefore , secsafter , + manual , } \seq_new:N \l__zrefcheck_zcheck_checks_seq \bool_new:N \l__zrefcheck_zcheck_end_label_bool @@ -526,6 +507,7 @@ secsafter , close , far , + manual , } { \keys_define:nn { zref-check / zcheck } @@ -542,123 +524,136 @@ \cs_new_protected:Npn \__zrefcheck_run_checks:nnn #1#2#3 { \group_begin: - \seq_map_inline:Nn #2 - { - \seq_map_inline:Nn #1 - { \__zrefcheck_do_check:nnn {####1} {##1} {#3} } - } + \seq_map_inline:Nn #2 + { + \seq_if_empty:NTF #1 + { \__zrefcheck_message:nnnn { no-checks } { } { } { } } + { + \seq_map_inline:Nn #1 + { \__zrefcheck_do_check:nnn {####1} {##1} {#3} } + } + } \group_end: } \cs_generate_variant:Nn \__zrefcheck_run_checks:nnn { nnx } \bool_new:N \l__zrefcheck_passedcheck_bool \bool_new:N \l__zrefcheck_onpage_bool +\bool_new:N \l__zrefcheck_empty_label_bool \seq_const_from_clist:Nn \c__zrefcheck_onpage_checks_seq { above , below , before , after } \cs_generate_variant:Nn \exp_args:Nnno { Nnoo } \cs_new_protected:Npn \__zrefcheck_do_check:nnn #1#2#3 { \group_begin: - \zref@ifrefundefined {#2} - {} - { - \tl_if_empty:nF {#1} - { - \bool_set_true:N \l__zrefcheck_passedcheck_bool - \bool_set_false:N \l__zrefcheck_onpage_bool - \cs_if_exist:cTF { __zrefcheck_check_ #1 :nnF } - { - % ``label beg'' vs ``reference beg''. - \use:c { __zrefcheck_check_ #1 :nnF } - {#2} {#3} - { \bool_set_false:N \l__zrefcheck_passedcheck_bool } - % ``reference end'' \emph{may} exist or not depending on the - % checks. - \zref@ifrefundefined { \__zrefcheck_end_lblfmt:n {#3} } - { - % ``label end'' \emph{may} have been created by the - % target commands. - \zref@ifrefundefined { \__zrefcheck_end_lblfmt:n {#2} } - {} - { - % ``label end'' vs ``reference beg''. - \exp_args:Nno \use:c { __zrefcheck_check_ #1 :nnF } - { \__zrefcheck_end_lblfmt:n {#2} } {#3} - { \bool_set_false:N \l__zrefcheck_passedcheck_bool } - } - } - { - % ``label beg'' vs ``reference end''. - \exp_args:Nnno \use:c { __zrefcheck_check_ #1 :nnF } - {#2} { \__zrefcheck_end_lblfmt:n {#3} } - { \bool_set_false:N \l__zrefcheck_passedcheck_bool } - % ``label end'' \emph{may} have been created by the - % target commands. - \zref@ifrefundefined { \__zrefcheck_end_lblfmt:n {#2} } - {} - { - % ``label end'' vs ``reference beg''. - \exp_args:Nno \use:c { __zrefcheck_check_ #1 :nnF } - { \__zrefcheck_end_lblfmt:n {#2} } {#3} - { \bool_set_false:N \l__zrefcheck_passedcheck_bool } - % ``label end'' vs ``reference end''. - \exp_args:Nnoo \use:c { __zrefcheck_check_ #1 :nnF } - { \__zrefcheck_end_lblfmt:n {#2} } - { \__zrefcheck_end_lblfmt:n {#3} } - { \bool_set_false:N \l__zrefcheck_passedcheck_bool } - } - } - \seq_if_in:NnT \c__zrefcheck_onpage_checks_seq {#1} - { - \__zrefcheck_check_thispage:nnT - {#2} {#3} - { \bool_set_true:N \l__zrefcheck_onpage_bool } - \zref@ifrefundefined { \__zrefcheck_end_lblfmt:n {#3} } - { - \zref@ifrefundefined { \__zrefcheck_end_lblfmt:n {#2} } - {} - { - \__zrefcheck_check_thispage:nnT - { \__zrefcheck_end_lblfmt:n {#2} } {#3} - { \bool_set_true:N \l__zrefcheck_onpage_bool } - } - } - { - \__zrefcheck_check_thispage:nnT - {#2} { \__zrefcheck_end_lblfmt:n {#3} } - { \bool_set_true:N \l__zrefcheck_onpage_bool } - \zref@ifrefundefined { \__zrefcheck_end_lblfmt:n {#2} } - {} - { - \__zrefcheck_check_thispage:nnT - { \__zrefcheck_end_lblfmt:n {#2} } {#3} - { \bool_set_true:N \l__zrefcheck_onpage_bool } - \__zrefcheck_check_thispage:nnT - { \__zrefcheck_end_lblfmt:n {#2} } - { \__zrefcheck_end_lblfmt:n {#3} } - { \bool_set_true:N \l__zrefcheck_onpage_bool } - } - } - } - \bool_if:NTF \l__zrefcheck_passedcheck_bool - { - \bool_if:nT - { - \l__zrefcheck_msgonpage_bool && - \l__zrefcheck_onpage_bool - } - { - \__zrefcheck_message:nnnx { double-check } {#1} {#2} - { \zref@extractdefault {#3} {page} {'unknown'} } - } - } - { - \__zrefcheck_message:nnnx { check-failed } {#1} {#2} - { \zref@extractdefault {#3} {page} {'unknown'} } - } - } - { \msg_warning:nnn { zref-check } { check-missing } {#1} } - } - } + \bool_set_true:N \l__zrefcheck_passedcheck_bool + \bool_set_false:N \l__zrefcheck_onpage_bool + \bool_set_false:N \l__zrefcheck_empty_label_bool + \cs_if_exist:cTF { __zrefcheck_check_ #1 :nnF } + { + \zref@ifrefundefined {#2} + { + \tl_if_empty:nT {#2} + { + \bool_set_false:N \l__zrefcheck_passedcheck_bool + \bool_set_true:N \l__zrefcheck_empty_label_bool + } + } + { + % ``label beg'' vs ``reference beg''. + \use:c { __zrefcheck_check_ #1 :nnF } + {#2} {#3} + { \bool_set_false:N \l__zrefcheck_passedcheck_bool } + % ``reference end'' \emph{may} exist or not depending on the + % checks. + \zref@ifrefundefined { \__zrefcheck_end_lblfmt:n {#3} } + { + % ``label end'' \emph{may} have been created by the + % target commands. + \zref@ifrefundefined { \__zrefcheck_end_lblfmt:n {#2} } + {} + { + % ``label end'' vs ``reference beg''. + \exp_args:Nno \use:c { __zrefcheck_check_ #1 :nnF } + { \__zrefcheck_end_lblfmt:n {#2} } {#3} + { \bool_set_false:N \l__zrefcheck_passedcheck_bool } + } + } + { + % ``label beg'' vs ``reference end''. + \exp_args:Nnno \use:c { __zrefcheck_check_ #1 :nnF } + {#2} { \__zrefcheck_end_lblfmt:n {#3} } + { \bool_set_false:N \l__zrefcheck_passedcheck_bool } + % ``label end'' \emph{may} have been created by the + % target commands. + \zref@ifrefundefined { \__zrefcheck_end_lblfmt:n {#2} } + {} + { + % ``label end'' vs ``reference beg''. + \exp_args:Nno \use:c { __zrefcheck_check_ #1 :nnF } + { \__zrefcheck_end_lblfmt:n {#2} } {#3} + { \bool_set_false:N \l__zrefcheck_passedcheck_bool } + % ``label end'' vs ``reference end''. + \exp_args:Nnoo \use:c { __zrefcheck_check_ #1 :nnF } + { \__zrefcheck_end_lblfmt:n {#2} } + { \__zrefcheck_end_lblfmt:n {#3} } + { \bool_set_false:N \l__zrefcheck_passedcheck_bool } + } + } + \seq_if_in:NnT \c__zrefcheck_onpage_checks_seq {#1} + { + \__zrefcheck_check_thispage:nnT + {#2} {#3} + { \bool_set_true:N \l__zrefcheck_onpage_bool } + \zref@ifrefundefined { \__zrefcheck_end_lblfmt:n {#3} } + { + \zref@ifrefundefined { \__zrefcheck_end_lblfmt:n {#2} } + {} + { + \__zrefcheck_check_thispage:nnT + { \__zrefcheck_end_lblfmt:n {#2} } {#3} + { \bool_set_true:N \l__zrefcheck_onpage_bool } + } + } + { + \__zrefcheck_check_thispage:nnT + {#2} { \__zrefcheck_end_lblfmt:n {#3} } + { \bool_set_true:N \l__zrefcheck_onpage_bool } + \zref@ifrefundefined { \__zrefcheck_end_lblfmt:n {#2} } + {} + { + \__zrefcheck_check_thispage:nnT + { \__zrefcheck_end_lblfmt:n {#2} } {#3} + { \bool_set_true:N \l__zrefcheck_onpage_bool } + \__zrefcheck_check_thispage:nnT + { \__zrefcheck_end_lblfmt:n {#2} } + { \__zrefcheck_end_lblfmt:n {#3} } + { \bool_set_true:N \l__zrefcheck_onpage_bool } + } + } + } + } + } + { \msg_warning:nnn { zref-check } { check-missing } {#1} } + \bool_if:NTF \l__zrefcheck_passedcheck_bool + { + \bool_if:nT + { + \l__zrefcheck_msgonpage_bool && + \l__zrefcheck_onpage_bool + } + { + \__zrefcheck_message:nnnx { double-check } {#1} {#2} + { \zref@extractdefault {#3} {page} {'unknown'} } + } + } + { + \bool_if:NTF \l__zrefcheck_empty_label_bool + { \__zrefcheck_message:nnnn { empty-label } {#1} { } { } } + { + \__zrefcheck_message:nnnx { check-failed } {#1} {#2} + { \zref@extractdefault {#3} {page} {'unknown'} } + } + } \group_end: } \cs_generate_variant:Nn \__zrefcheck_do_check:nnn { nnV } @@ -669,19 +664,19 @@ \prg_new_protected_conditional:Npnn \__zrefcheck_check_thispage:nn #1#2 { T , F , TF } { \group_begin: - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { abspage } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { abspage } { \l__zrefcheck_ref_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \int_compare_p:nNn - { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int } && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && - ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { abspage } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { abspage } { \l__zrefcheck_ref_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \int_compare_p:nNn + { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int } && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && + ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } \group_end: } \prg_new_protected_conditional:Npnn \__zrefcheck_check_otherpage:nn #1#2 { T , F , TF } @@ -693,23 +688,23 @@ \prg_new_protected_conditional:Npnn \__zrefcheck_check_above:nn #1#2 { F , TF } { \group_begin: - \__zrefcheck_check_thispage:nnTF {#1} {#2} - { - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { lblseq } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { lblseq } { \l__zrefcheck_ref_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \int_compare_p:nNn - { \l__zrefcheck_lbl_int } < { \l__zrefcheck_ref_int } && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && - ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } - } - { \group_insert_after:N \prg_return_false: } + \__zrefcheck_check_thispage:nnTF {#1} {#2} + { + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { lblseq } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { lblseq } { \l__zrefcheck_ref_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \int_compare_p:nNn + { \l__zrefcheck_lbl_int } < { \l__zrefcheck_ref_int } && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && + ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } + } + { \group_insert_after:N \prg_return_false: } \group_end: } \prg_new_protected_conditional:Npnn \__zrefcheck_check_below:nn #1#2 { F , TF } @@ -745,142 +740,142 @@ \prg_new_protected_conditional:Npnn \__zrefcheck_check_nextpage:nn #1#2 { F } { \group_begin: - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { abspage } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { abspage } { \l__zrefcheck_ref_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \int_compare_p:nNn - { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int + 1 } && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && - ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { abspage } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { abspage } { \l__zrefcheck_ref_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \int_compare_p:nNn + { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int + 1 } && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && + ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } \group_end: } \prg_new_protected_conditional:Npnn \__zrefcheck_check_prevpage:nn #1#2 { F } { \group_begin: - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { abspage } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { abspage } { \l__zrefcheck_ref_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \int_compare_p:nNn - { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int - 1 } && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && - ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { abspage } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { abspage } { \l__zrefcheck_ref_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \int_compare_p:nNn + { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int - 1 } && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && + ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } \group_end: } \prg_new_protected_conditional:Npnn \__zrefcheck_check_pagesbefore:nn #1#2 { F , TF } { \group_begin: - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { abspage } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { abspage } { \l__zrefcheck_ref_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \int_compare_p:nNn - { \l__zrefcheck_lbl_int } < { \l__zrefcheck_ref_int } && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && - ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { abspage } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { abspage } { \l__zrefcheck_ref_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \int_compare_p:nNn + { \l__zrefcheck_lbl_int } < { \l__zrefcheck_ref_int } && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && + ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } \group_end: } \cs_new_eq:NN \__zrefcheck_check_ppbefore:nnF \__zrefcheck_check_pagesbefore:nnF \prg_new_protected_conditional:Npnn \__zrefcheck_check_pagesafter:nn #1#2 { F , TF } { \group_begin: - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { abspage } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { abspage } { \l__zrefcheck_ref_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \int_compare_p:nNn - { \l__zrefcheck_lbl_int } > { \l__zrefcheck_ref_int } && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && - ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { abspage } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { abspage } { \l__zrefcheck_ref_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \int_compare_p:nNn + { \l__zrefcheck_lbl_int } > { \l__zrefcheck_ref_int } && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && + ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } \group_end: } \cs_new_eq:NN \__zrefcheck_check_ppafter:nnF \__zrefcheck_check_pagesafter:nnF \prg_new_protected_conditional:Npnn \__zrefcheck_check_pagegap:nn #1#2 { F } { \group_begin: - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { abspage } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { abspage } { \l__zrefcheck_ref_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \int_compare_p:nNn - { \int_abs:n { \l__zrefcheck_lbl_int - \l__zrefcheck_ref_int } } > { 1 } && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && - ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { abspage } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { abspage } { \l__zrefcheck_ref_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \int_compare_p:nNn + { \int_abs:n { \l__zrefcheck_lbl_int - \l__zrefcheck_ref_int } } > { 1 } && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && + ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } \group_end: } \prg_new_protected_conditional:Npnn \__zrefcheck_check_facing:nn #1#2 { F } { \group_begin: - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { abspage } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { abspage } { \l__zrefcheck_ref_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \legacy_if_p:n { @twoside } && + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { abspage } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { abspage } { \l__zrefcheck_ref_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \legacy_if_p:n { @twoside } && + ( + ( + \int_if_odd_p:n { \l__zrefcheck_ref_int } && + \int_compare_p:nNn + { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int - 1 } + ) || ( - ( - \int_if_odd_p:n { \l__zrefcheck_ref_int } && - \int_compare_p:nNn - { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int - 1 } - ) || - ( - \int_if_even_p:n { \l__zrefcheck_ref_int } && - \int_compare_p:nNn - { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int + 1 } - ) - ) && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && - ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } + \int_if_even_p:n { \l__zrefcheck_ref_int } && + \int_compare_p:nNn + { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int + 1 } + ) + ) && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && + ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } \group_end: } \prg_new_protected_conditional:Npnn \__zrefcheck_check_close:nn #1#2 { F , TF } { \group_begin: - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { abspage } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { abspage } { \l__zrefcheck_ref_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \int_compare_p:nNn - { \int_abs:n { \l__zrefcheck_lbl_int - \l__zrefcheck_ref_int } } - < - { \l__zrefcheck_close_range_int + 1 } && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && - ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { abspage } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { abspage } { \l__zrefcheck_ref_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \int_compare_p:nNn + { \int_abs:n { \l__zrefcheck_lbl_int - \l__zrefcheck_ref_int } } + < + { \l__zrefcheck_close_range_int + 1 } && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && + ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } \group_end: } \prg_new_protected_conditional:Npnn \__zrefcheck_check_far:nn #1#2 { F } @@ -892,199 +887,201 @@ \prg_new_protected_conditional:Npnn \__zrefcheck_check_thischap:nn #1#2 { F } { \group_begin: - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \int_compare_p:nNn - { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int } && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && - ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \int_compare_p:nNn + { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int } && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && + ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } \group_end: } \prg_new_protected_conditional:Npnn \__zrefcheck_check_nextchap:nn #1#2 { F } { \group_begin: - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \int_compare_p:nNn - { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int + 1 } && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \int_compare_p:nNn + { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int + 1 } && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } \group_end: } \prg_new_protected_conditional:Npnn \__zrefcheck_check_prevchap:nn #1#2 { F } { \group_begin: - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \int_compare_p:nNn - { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int - 1 } && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && - ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \int_compare_p:nNn + { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int - 1 } && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && + ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } \group_end: } \prg_new_protected_conditional:Npnn \__zrefcheck_check_chapsafter:nn #1#2 { F } { \group_begin: - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \int_compare_p:nNn - { \l__zrefcheck_lbl_int } > { \l__zrefcheck_ref_int } && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \int_compare_p:nNn + { \l__zrefcheck_lbl_int } > { \l__zrefcheck_ref_int } && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } \group_end: } \prg_new_protected_conditional:Npnn \__zrefcheck_check_chapsbefore:nn #1#2 { F } { \group_begin: - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \int_compare_p:nNn - { \l__zrefcheck_lbl_int } < { \l__zrefcheck_ref_int } && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && - ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \int_compare_p:nNn + { \l__zrefcheck_lbl_int } < { \l__zrefcheck_ref_int } && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && + ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } \group_end: } \prg_new_protected_conditional:Npnn \__zrefcheck_check_thissec:nn #1#2 { F } { \group_begin: - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { zc@abssec } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { zc@abssec } { \l__zrefcheck_ref_int } - \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_b_int } - \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_b_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \int_compare_p:nNn - { \l__zrefcheck_lbl_b_int } = { \l__zrefcheck_ref_b_int } && - \int_compare_p:nNn - { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int } && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && - ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { zc@abssec } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { zc@abssec } { \l__zrefcheck_ref_int } + \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_b_int } + \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_b_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \int_compare_p:nNn + { \l__zrefcheck_lbl_b_int } = { \l__zrefcheck_ref_b_int } && + \int_compare_p:nNn + { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int } && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && + ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } \group_end: } \prg_new_protected_conditional:Npnn \__zrefcheck_check_nextsec:nn #1#2 { F } { \group_begin: - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { zc@abssec } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { zc@abssec } { \l__zrefcheck_ref_int } - \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_b_int } - \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_b_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \int_compare_p:nNn - { \l__zrefcheck_lbl_b_int } = { \l__zrefcheck_ref_b_int } && - \int_compare_p:nNn - { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int + 1 } && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { zc@abssec } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { zc@abssec } { \l__zrefcheck_ref_int } + \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_b_int } + \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_b_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \int_compare_p:nNn + { \l__zrefcheck_lbl_b_int } = { \l__zrefcheck_ref_b_int } && + \int_compare_p:nNn + { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int + 1 } && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } \group_end: } \prg_new_protected_conditional:Npnn \__zrefcheck_check_prevsec:nn #1#2 { F } { \group_begin: - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { zc@abssec } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { zc@abssec } { \l__zrefcheck_ref_int } - \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_b_int } - \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_b_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \int_compare_p:nNn - { \l__zrefcheck_lbl_b_int } = { \l__zrefcheck_ref_b_int } && - \int_compare_p:nNn - { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int - 1 } && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && - ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { zc@abssec } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { zc@abssec } { \l__zrefcheck_ref_int } + \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_b_int } + \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_b_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \int_compare_p:nNn + { \l__zrefcheck_lbl_b_int } = { \l__zrefcheck_ref_b_int } && + \int_compare_p:nNn + { \l__zrefcheck_lbl_int } = { \l__zrefcheck_ref_int - 1 } && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && + ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } \group_end: } \prg_new_protected_conditional:Npnn \__zrefcheck_check_secsafter:nn #1#2 { F } { \group_begin: - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { zc@abssec } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { zc@abssec } { \l__zrefcheck_ref_int } - \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_b_int } - \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_b_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \int_compare_p:nNn - { \l__zrefcheck_lbl_b_int } = { \l__zrefcheck_ref_b_int } && - \int_compare_p:nNn - { \l__zrefcheck_lbl_int } > { \l__zrefcheck_ref_int } && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { zc@abssec } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { zc@abssec } { \l__zrefcheck_ref_int } + \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_b_int } + \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_b_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \int_compare_p:nNn + { \l__zrefcheck_lbl_b_int } = { \l__zrefcheck_ref_b_int } && + \int_compare_p:nNn + { \l__zrefcheck_lbl_int } > { \l__zrefcheck_ref_int } && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } \group_end: } \prg_new_protected_conditional:Npnn \__zrefcheck_check_secsbefore:nn #1#2 { F } { \group_begin: - \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { zc@abssec } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { zc@abssec } { \l__zrefcheck_ref_int } - \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_b_int } - \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_b_int } - \bool_lazy_and:nnTF - { \l__zrefcheck_integer_bool } - { - \int_compare_p:nNn - { \l__zrefcheck_lbl_b_int } = { \l__zrefcheck_ref_b_int } && - \int_compare_p:nNn - { \l__zrefcheck_lbl_int } < { \l__zrefcheck_ref_int } && - ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && - ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } - } - { \group_insert_after:N \prg_return_true: } - { \group_insert_after:N \prg_return_false: } + \bool_set_true:N \l__zrefcheck_integer_bool + \zrefcheck_get_asint:nnn {#1} { zc@abssec } { \l__zrefcheck_lbl_int } + \zrefcheck_get_asint:nnn {#2} { zc@abssec } { \l__zrefcheck_ref_int } + \zrefcheck_get_asint:nnn {#1} { zc@abschap } { \l__zrefcheck_lbl_b_int } + \zrefcheck_get_asint:nnn {#2} { zc@abschap } { \l__zrefcheck_ref_b_int } + \bool_lazy_and:nnTF + { \l__zrefcheck_integer_bool } + { + \int_compare_p:nNn + { \l__zrefcheck_lbl_b_int } = { \l__zrefcheck_ref_b_int } && + \int_compare_p:nNn + { \l__zrefcheck_lbl_int } < { \l__zrefcheck_ref_int } && + ! \int_compare_p:nNn { \l__zrefcheck_lbl_int } = { 0 } && + ! \int_compare_p:nNn { \l__zrefcheck_ref_int } = { 0 } + } + { \group_insert_after:N \prg_return_true: } + { \group_insert_after:N \prg_return_false: } \group_end: } +\prg_new_protected_conditional:Npnn \__zrefcheck_check_manual:nn #1#2 { F } + { \prg_return_false: } \cs_new_protected:Npn \zrefcheck_zcref_beg_label: { \int_gincr:N \g__zrefcheck_id_int |