diff options
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/zref-check/zref-check.sty | 210 |
1 files changed, 157 insertions, 53 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 72e8a2f8784..ea26b0766bc 100644 --- a/Master/texmf-dist/tex/latex/zref-check/zref-check.sty +++ b/Master/texmf-dist/tex/latex/zref-check/zref-check.sty @@ -55,7 +55,7 @@ }% \endinput }% -\ProvidesExplPackage {zref-check} {2021-08-04} {0.1.0} +\ProvidesExplPackage {zref-check} {2021-08-17} {0.2.0} {Flexible cross-references with contextual checks based on zref} \RequirePackage { zref-user } \RequirePackage { zref-abspage } @@ -67,19 +67,19 @@ \int_gincr:N \g__zrefcheck_abschap_int \int_zero:N \g__zrefcheck_abssec_int } -\zref@newprop { abschap } [0] { \int_use:N \g__zrefcheck_abschap_int } -\zref@addprop \ZREF@mainlist { abschap } +\zref@newprop { zc@abschap } [0] { \int_use:N \g__zrefcheck_abschap_int } +\zref@addprop \ZREF@mainlist { zc@abschap } \AddToHook { cmd / section / before } { \int_gincr:N \g__zrefcheck_abssec_int } -\zref@newprop { abssec } [0] { \int_use:N \g__zrefcheck_abssec_int } -\zref@addprop \ZREF@mainlist { abssec } +\zref@newprop { zc@abssec } [0] { \int_use:N \g__zrefcheck_abssec_int } +\zref@addprop \ZREF@mainlist { zc@abssec } \zref@newlist { zrefcheck } \zref@addprops { zrefcheck } { + page , abspage , - abschap , - abssec , - page + zc@abschap , + zc@abssec } \cs_new:Npn \__zrefcheck_message:nnnn #1#2#3#4 { @@ -175,7 +175,7 @@ hyperref .initial:n = auto , hyperref .default:n = auto } -\AtBeginDocument +\AddToHook { begindocument } { \@ifpackageloaded { hyperref } { @@ -224,7 +224,7 @@ { \msg_warning:nn { zref-check } { ignore-document-only } } , ignore .value_forbidden:n = true } -\AtBeginDocument +\AddToHook { begindocument } { \keys_define:nn { zref-check } { ignore .meta:n = { msglevel = none } } @@ -284,7 +284,7 @@ } \cs_new:Npn \__zrefcheck_target_label:n #1 { \zref@labelbylist {#1} { zrefcheck } } -\AtBeginDocument +\AddToHook { begindocument } { \bool_if:NT \l__zrefcheck_target_label_bool { @@ -410,17 +410,18 @@ } } \NewDocumentCommand \zcheck - { s O { } > { \SplitList { , } } m > { \SplitList { , } } O { } m } - { \zref@wrapper@babel \__zrefcheck_zcheck:nnnnn {#3} {#1} {#2} {#4} {#5} } + { s O { } > { \SplitList { , } } m m } + { \zref@wrapper@babel \__zrefcheck_zcheck:nnnn {#3} {#1} {#2} {#4} } \int_new:N \g__zrefcheck_id_int \tl_new:N \l__zrefcheck_checkbeg_tl \tl_new:N \l__zrefcheck_checkend_tl \tl_new:N \l__zrefcheck_link_label_tl \tl_new:N \l__zrefcheck_link_anchor_tl -\bool_new:N \l__zrefcheck_link_star_tl -\cs_new:Npn \__zrefcheck_zcheck:nnnnn #1#2#3#4#5 +\bool_new:N \l__zrefcheck_link_star_bool +\cs_new:Npn \__zrefcheck_zcheck:nnnn #1#2#3#4 { \group_begin: + \__zrefcheck_set_checks_keys: \keys_set:nn { zref-check } {#3} \int_gincr:N \g__zrefcheck_id_int \tl_set:Nx \l__zrefcheck_checkbeg_tl @@ -429,26 +430,27 @@ { \__zrefcheck_end_lblfmt:n { \l__zrefcheck_checkbeg_tl } } \zref@labelbylist { \l__zrefcheck_checkbeg_tl } { zrefcheck } \tl_set:Nn \l__zrefcheck_link_label_tl { \tl_head:n {#1} } - \bool_set:Nn \l__zrefcheck_link_star_tl {#2} + \bool_set:Nn \l__zrefcheck_link_star_bool {#2} \zref@ifrefundefined { \l__zrefcheck_link_label_tl } - {#5} + {#4} { \bool_if:nTF { \l__zrefcheck_use_hyperref_bool && - ! \l__zrefcheck_link_star_tl + ! \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 } {#5} + \hyperlink { \l__zrefcheck_link_anchor_tl } {#4} } - {#5} + {#4} } \zref@labelbylist { \l__zrefcheck_checkend_tl } { zrefcheck } \tl_map_function:nN {#1} \zref@refused - \__zrefcheck_run_checks:nnV {#4} {#1} { \l__zrefcheck_checkbeg_tl } + \__zrefcheck_run_checks:nnv + { \l__zrefcheck_zcheck_checks_seq } {#1} { l__zrefcheck_checkbeg_tl } \group_end: } \NewDocumentCommand \zctarget { m +m } @@ -470,17 +472,119 @@ \zref@wrapper@babel \zref@labelbylist { \__zrefcheck_end_lblfmt:n {#1} } { zrefcheck } } +\seq_new:N \l__zrefcheck_zcheck_checks_seq +\cs_new:Npn \__zrefcheck_set_checks_keys: + { + \keys_define:nn { zref-check } + { + thispage .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { thispage } } , + thispage .value_forbidden:n = true , + + prevpage .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { prevpage } } , + prevpage .value_forbidden:n = true , + + nextpage .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { nextpage } } , + nextpage .value_forbidden:n = true , + + facing .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { facing } } , + facing .value_forbidden:n = true , + + above .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { above } } , + above .value_forbidden:n = true , + + below .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { below } } , + below .value_forbidden:n = true , + + pagesbefore .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { pagesbefore } } , + pagesbefore .value_forbidden:n = true , + + ppbefore .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { ppbefore } } , + ppbefore .value_forbidden:n = true , + + pagesafter .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { pagesafter } } , + pagesafter .value_forbidden:n = true , + + ppafter .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { ppafter } } , + ppafter .value_forbidden:n = true , + + before .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { before } } , + before .value_forbidden:n = true , + + after .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { after } } , + after .value_forbidden:n = true , + + thischap .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { thischap } } , + thischap .value_forbidden:n = true , + + prevchap .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { prevchap } } , + prevchap .value_forbidden:n = true , + + nextchap .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { nextchap } } , + nextchap .value_forbidden:n = true , + + chapsbefore .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { chapsbefore } } , + chapsbefore .value_forbidden:n = true , + + chapsafter .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { chapsafter } } , + chapsafter .value_forbidden:n = true , + + thissec .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { thissec } } , + thissec .value_forbidden:n = true , + + prevsec .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { prevsec } } , + prevsec .value_forbidden:n = true , + + nextsec .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { nextsec } } , + nextsec .value_forbidden:n = true , + + secsbefore .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { secsbefore } } , + secsbefore .value_forbidden:n = true , + + secsafter .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { secsafter } } , + secsafter .value_forbidden:n = true , + + close .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { close } } , + close .value_forbidden:n = true , + + far .code:n = + { \seq_put_right:Nn \l__zrefcheck_zcheck_checks_seq { far } } , + far .value_forbidden:n = true , + } + } \cs_new:Npn \__zrefcheck_run_checks:nnn #1#2#3 { \group_begin: \tl_map_inline:nn {#2} { - \tl_map_inline:nn {#1} + \seq_map_inline:Nn #1 { \__zrefcheck_do_check:nnn {####1} {##1} {#3} } } \group_end: } -\cs_generate_variant:Nn \__zrefcheck_run_checks:nnn { nnV } +\cs_generate_variant:Nn \__zrefcheck_run_checks:nnn { nnv } \bool_new:N \l__zrefcheck_passedcheck_bool \bool_new:N \l__zrefcheck_onpage_bool \seq_new:N \c__zrefcheck_onpage_checks_seq @@ -765,8 +869,8 @@ { \group_begin: \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { abschap } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { abschap } { \l__zrefcheck_ref_int } + \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 } { @@ -783,8 +887,8 @@ { \group_begin: \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { abschap } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { abschap } { \l__zrefcheck_ref_int } + \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 } { @@ -800,8 +904,8 @@ { \group_begin: \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { abschap } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { abschap } { \l__zrefcheck_ref_int } + \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 } { @@ -818,8 +922,8 @@ { \group_begin: \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { abschap } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { abschap } { \l__zrefcheck_ref_int } + \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 } { @@ -835,8 +939,8 @@ { \group_begin: \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { abschap } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { abschap } { \l__zrefcheck_ref_int } + \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 } { @@ -853,10 +957,10 @@ { \group_begin: \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { abssec } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { abssec } { \l__zrefcheck_ref_int } - \zrefcheck_get_asint:nnn {#1} { abschap } { \l__zrefcheck_lbl_b_int } - \zrefcheck_get_asint:nnn {#2} { abschap } { \l__zrefcheck_ref_b_int } + \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 } { @@ -875,10 +979,10 @@ { \group_begin: \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { abssec } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { abssec } { \l__zrefcheck_ref_int } - \zrefcheck_get_asint:nnn {#1} { abschap } { \l__zrefcheck_lbl_b_int } - \zrefcheck_get_asint:nnn {#2} { abschap } { \l__zrefcheck_ref_b_int } + \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 } { @@ -896,10 +1000,10 @@ { \group_begin: \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { abssec } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { abssec } { \l__zrefcheck_ref_int } - \zrefcheck_get_asint:nnn {#1} { abschap } { \l__zrefcheck_lbl_b_int } - \zrefcheck_get_asint:nnn {#2} { abschap } { \l__zrefcheck_ref_b_int } + \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 } { @@ -918,10 +1022,10 @@ { \group_begin: \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { abssec } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { abssec } { \l__zrefcheck_ref_int } - \zrefcheck_get_asint:nnn {#1} { abschap } { \l__zrefcheck_lbl_b_int } - \zrefcheck_get_asint:nnn {#2} { abschap } { \l__zrefcheck_ref_b_int } + \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 } { @@ -939,10 +1043,10 @@ { \group_begin: \bool_set_true:N \l__zrefcheck_integer_bool - \zrefcheck_get_asint:nnn {#1} { abssec } { \l__zrefcheck_lbl_int } - \zrefcheck_get_asint:nnn {#2} { abssec } { \l__zrefcheck_ref_int } - \zrefcheck_get_asint:nnn {#1} { abschap } { \l__zrefcheck_lbl_b_int } - \zrefcheck_get_asint:nnn {#2} { abschap } { \l__zrefcheck_ref_b_int } + \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 } { |