diff options
author | Karl Berry <karl@freefriends.org> | 2016-06-11 23:06:44 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-06-11 23:06:44 +0000 |
commit | 876b86d0b964599f049d2ae7d670b73308961d4a (patch) | |
tree | b0fd38e2e0f32c2797b76e3e26fbab924adcc712 /Master/texmf-dist/tex/latex | |
parent | a880c715c123c4ecf8da826a5283895cec739b42 (diff) |
xassoccnt (11jun16)
git-svn-id: svn://tug.org/texlive/trunk@41371 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r-- | Master/texmf-dist/tex/latex/xassoccnt/xassoccnt.sty | 118 |
1 files changed, 94 insertions, 24 deletions
diff --git a/Master/texmf-dist/tex/latex/xassoccnt/xassoccnt.sty b/Master/texmf-dist/tex/latex/xassoccnt/xassoccnt.sty index dae0afc37ab..38410d2c686 100644 --- a/Master/texmf-dist/tex/latex/xassoccnt/xassoccnt.sty +++ b/Master/texmf-dist/tex/latex/xassoccnt/xassoccnt.sty @@ -1,4 +1,4 @@ -%% LaTeX package xassoccnt - version 0.7 (2016/05/10 -- 00/41/54) +%% LaTeX package xassoccnt - version 0.8 (2016/06/10 -- 23/28/27) %% Source file for xassoccnt.sty %% %% @@ -19,10 +19,10 @@ %% %% -\def\xassoccntpackageversion{0.7} -\NeedsTeXFormat{LaTeX2e} +\def\xassoccntpackageversion{0.8} +\NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{xassoccnt}[2016/05/10 - v\xassoccntpackageversion] +\ProvidesPackage{xassoccnt}[2016/06/10 - v\xassoccntpackageversion] \RequirePackage{xcolor} \RequirePackage{xparse} @@ -52,6 +52,8 @@ \bool_new:N \l__xassoccnt_autodefine_allcounters \bool_new:N \l__xassoccnt_autodefine_associatedcounter +\bool_new:N \l__xassoccnt_cascade_suspension_bool + \bool_new:N \l__xassoccnt_countertype_general \bool_new:N \l__xassoccnt_countertype_driver \bool_new:N \l__xassoccnt_countertype_associated @@ -127,6 +129,7 @@ \clist_set:Nn \l__xassoccnt_onlycounters_clist {#1} }, exclude .clist_set:N=\l__xassoccnt_exclude_clist, + cascade .bool_set:N={\l__xassoccnt_cascade_suspension_bool}, %% For later purposes countertype .choice:, @@ -251,6 +254,10 @@ \endgroup } +\cs_new:Nn \xassoccnt_report_resetlist:n {% + \__xassoccnt_getresetlist:n {#1} + \seq_show:N \l__xassoccnt_counterreset_seq% +} \cs_set_eq:NN \xassoccnt_standardstepcounter \stepcounter @@ -277,6 +284,7 @@ }{} \AtEndOfPackage{ + \PackageInfo{xassoccnt}{2016/06/10 - v\xassoccntpackageversion -- stepping counters simultaneously and other features} \@ifpackageloaded{calc}{% \msg_warning:nnn{xassoccnt}{incompatiblepackagenonfatal}{calc}% Warning \bool_set_true:N \l__xassoccnt_calcpackage_loaded @@ -334,6 +342,7 @@ \cs_new_nopar:Nn \__xassoccnt_container_removeduplicates:n { \seq_gremove_duplicates:c{\__xassoccnt_generate_countercontainername:n{#1}}} \cs_new_nopar:Nn \__xassoccnt_container_removecounter:nn { \seq_gremove_all:cn{\__xassoccnt_generate_countercontainername:n{#1}}{#2} } \cs_new_nopar:Nn \__xassoccnt_container_putright:nn { \seq_put_right:cn{\__xassoccnt_generate_countercontainername:n{#1}}{#2} } +\cs_new_nopar:Nn \__xassoccnt_container_gputright:nn { \seq_gput_right:cn{\__xassoccnt_generate_countercontainername:n{#1}}{#2} } \cs_new_nopar:Nn \__xassoccnt_container_removeassociated:nn { \seq_gremove_all:cn{\__xassoccnt_drivercontainer:n{#1}}{#2}} \cs_new_nopar:Nn \__xassoccnt_container_gclear:n {\seq_gclear:N #1 } \cs_new_nopar:Nn \__xassoccnt_container_clear:n {\seq_clear:N #1 } @@ -540,9 +549,9 @@ } } -\cs_generate_variant:Nn \__xassoccnt_container_if_in:NnTF { cnTF } -\cs_generate_variant:Nn \__xassoccnt_container_if_in:NnT { cnT } -\cs_generate_variant:Nn \__xassoccnt_container_if_in:NnF { cnF } +\cs_generate_variant:Nn \__xassoccnt_container_if_in:NnTF { nxTF, cnTF,cxTF } +\cs_generate_variant:Nn \__xassoccnt_container_if_in:NnT { nxT,cnT,cxT } +\cs_generate_variant:Nn \__xassoccnt_container_if_in:NnF { nxF,cnF,cxF } \prg_new_conditional:Nnn \xassoccnt_is_associatedcounter:n {T,F,TF} { @@ -555,7 +564,7 @@ \prg_new_conditional:Nnn \xassoccnt_is_suspendedcounter:n {TF,T,F} {% - \__xassoccnt_container_if_in:cnTF{\__xassoccnt_generate_countercontainername:n{\c_xassoccnt_suspendedname_str}}{#1}{% + \__xassoccnt_container_if_in:cxTF{\__xassoccnt_generate_countercontainername:n{\c_xassoccnt_suspendedname_str}}{#1}{% \prg_return_true: }{% \prg_return_false: @@ -602,14 +611,65 @@ \NewDocumentCommand{\SuspendCounters}{O{}m}{% \keys_set:nn { xassoccnt }{#1}% - \__xassoccnt_container_putright:nn{\c_xassoccnt_suspendedname_str}{#2} + \clist_set:Nx \l_tmpa_clist {#2}% + \clist_map_inline:Nn \l_tmpa_clist { + \__xassoccnt_container_gputright:nn{\c_xassoccnt_suspendedname_str}{##1} + } + % Code for removal of duplicates + \__xassoccnt_container_removeduplicates:n{\c_xassoccnt_suspendedname_str} +} + +\cs_new_protected:Nn \xassoccnt_cascade_suspendcounters:nn {% + \keys_set:nn { xassoccnt }{#1}% + \clist_set:Nx \l_tmpa_clist {#2}% + % Loop through the several counters! + \clist_map_inline:Nn \l_tmpa_clist {% + % Cascading requires knowledge of the counter reset list, so get this! + \xassoccnt_countersinresetlist:n {##1} + \int_compare:nNnT {\l_xassoccnt_resetlist_counter} > {0} {% + \__xassoccnt_getresetlist:n {##1}% + \seq_map_inline:Nn \l__xassoccnt_counterreset_seq {% + \__xassoccnt_container_gputright:nn{\c_xassoccnt_suspendedname_str}{####1} + % Recursively suspend all other counters that are on the reset list of #2 and hunt down their reset lists as well. + \xassoccnt_cascade_suspendcounters:nn{#1}{####1}% + }% + }% End \int_compare: + % Now add ##1 + \__xassoccnt_container_gputright:nn{\c_xassoccnt_suspendedname_str}{##1} + }% End \clist_map_inline: + % Remove duplicates + \__xassoccnt_container_removeduplicates:n{\c_xassoccnt_suspendedname_str} + \bool_set_false:N \l__xassoccnt_cascade_suspension_bool } + +\NewDocumentCommand{\CascadeSuspendCounters}{O{}m}{% + \xassoccnt_cascade_suspendcounters:nn {#1}{#2}% +} + +\NewDocumentCommand{\ShowSuspendedCounters}{}{% + \seq_use:cn { \__xassoccnt_generate_countercontainername:n{\c_xassoccnt_suspendedname_str}} {\par} +} + \NewDocumentCommand{\ResumeSuspendedCounters}{O{}m}{% - \__xassoccnt_container_removecounter:nn{\c_xassoccnt_suspendedname_str}{#2}% + \clist_set:Nx \l_tmpa_clist {#2}% + \clist_map_inline:Nn \l_tmpa_clist { + \__xassoccnt_container_removecounter:nn{\c_xassoccnt_suspendedname_str}{##1}% + } } +\NewDocumentCommand{\ResumeAllSuspendedCounters}{O{}}{% + \seq_if_exist:cTF{\__xassoccnt_generate_countercontainername:n{\c_xassoccnt_suspendedname_str}} {% + \seq_gclear:c {\__xassoccnt_generate_countercontainername:n{\c_xassoccnt_suspendedname_str}}% + }{% + % A warning message later on here! + \typeout{Container\space\__xassoccnt_generate_countercontainername:n{\c_xassoccnt_suspendedname_str}\space does\space not\space exist}% + }% +} + + +%%%% Associated counters section \NewDocumentCommand{\DeclareAssociatedCounters}{omm}{% \IfValueTF{#1}{% @@ -759,11 +819,10 @@ \cs_new:Nn \__xassoccnt_step_associatedcounters:n {% \seq_if_exist:cT { \__xassoccnt_drivercontainer:n{#1} } { \seq_map_inline:cn {\__xassoccnt_drivercontainer:n{#1} } - { -% \typeout{Stepping~the~associated~counter(#1):##1}% + {% \xassoccnt_addtocounter{##1}{\c_one} - } - } + }% + }% % End of \seq_if_exist } @@ -1412,12 +1471,16 @@ } + \RenewDocumentCommand{\refstepcounter}{m}{% - \cs_gset_nopar:Nn \__xassoccnt_lastrefsteppedcounter: {#1} - \xassoccnt_standardrefstepcounter{#1}% - \int_gset:Nn \g__xassoccnt_lastcountervalue_int {\number\value{#1}}% + \seq_if_in:NxF \g_xassoccnt_suspendedcnt_seq {#1} {% + \cs_gset_nopar:Nn \__xassoccnt_lastrefsteppedcounter: {#1} + \xassoccnt_standardrefstepcounter{#1}% + \int_gset:Nn \g__xassoccnt_lastcountervalue_int {\number\value{#1}}% + } } + %%%% Now some expandable wrapper macros for information on the last counter changed \newcommand{\LastSteppedCounter}{% @@ -1596,7 +1659,6 @@ % \seq_use:Nn \g__xassoccnt_totalcounter_container {\par}% \tl_set:Nx \l_tmpa_tl {\__xassoccnt_expand_totalcountername:n{#1}} \tl_set:Nx \l_tmpb_tl {#1}% - \typeout{Foo} \seq_if_in:NnTF \g__xassoccnt_supertotalcounter_container {\l_tmpb_tl }{% \tl_set:Nx \l_tmpa_tl {\__xassoccnt_expand_totalcountername:n{#1}} }{% @@ -1607,11 +1669,6 @@ \number\value{\tl_use:N \l_tmpa_tl}% } -\newcommand{\TotalValueOld}[1]{% - %\tl_set:Nx \l_tmpa_tl {\__xassoccnt_expand_totalcountername:n{#1}} - %\tl_set:Nx \l_tmpb_tl {#1}% - \number\value{\__xassoccnt_expand_totalcountername:n{#1}}% -} \cs_new:Nn \__xassoccnt_writetotalcounters:nn {% @@ -1770,7 +1827,6 @@ \msg_error:nnn{xassoccnt}{nameisnocounter}{##1}% }% }% -% \seq_use:Nn \l__xassoccnt_countervaluesbackup_seq {\par} } @@ -1930,6 +1986,17 @@ %%%%%%%%%%%%%%%%%%%% +%% Reporting Macros + +\NewDocumentCommand{\ShowResetList}{m}{% + \xassoccnt_report_resetlist:n{#1}% +} + +\NewDocumentCommand{\DisplayResetList}{O{,}m}{% + \__xassoccnt_getresetlist:n {#2} + \seq_use:Nn \l__xassoccnt_counterreset_seq {#1} +} + %%%%%%%%%%%%%%%%%%%% @@ -1984,6 +2051,9 @@ \newcommand{\TotalCounterInfoColor}{violet} + + + \AddFeature[sublists=true]{coupledcounters} % New style, not fully implemented so far |