summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/xassoccnt
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-06-11 23:06:44 +0000
committerKarl Berry <karl@freefriends.org>2016-06-11 23:06:44 +0000
commit876b86d0b964599f049d2ae7d670b73308961d4a (patch)
treeb0fd38e2e0f32c2797b76e3e26fbab924adcc712 /Master/texmf-dist/tex/latex/xassoccnt
parenta880c715c123c4ecf8da826a5283895cec739b42 (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/xassoccnt')
-rw-r--r--Master/texmf-dist/tex/latex/xassoccnt/xassoccnt.sty118
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