this repo has no description
at main 61 lines 1.3 kB view raw
1\RequirePackage{xparse} 2\RequirePackage{xspace} 3 4\ExplSyntaxOn 5 6 7\tl_new:N \l__forester_current_counter 8\clist_new:N \l__forester_counters 9\clist_set:Nn \l__forester_counters {section,subsection,subsubsection,paragraph,subparagraph} 10 11\keys_define:nn { forester } { 12 treeCommands .clist_set:N = \l__forester_counters, 13} 14 15\keys_define:nn { forester_tree } { 16 title .tl_set:N = \l__forester_tree_title, 17 label .tl_set:N = \l__forester_tree_slug, 18} 19 20\cs_new:Npn \forester_format_section: { 21 \use:c{\l__forester_current_counter}{ 22 \l__forester_tree_title 23 } 24} 25 26\NewDocumentEnvironment{tree}{m}{ 27 \group_begin: 28 \keys_set:nn { forester_tree } {#1} 29 \clist_pop:NN \l__forester_counters \l__forester_current_counter 30 \forester_format_section: 31 \bool_if_exist:cTF {g__forester_slug_defined_\l__forester_tree_slug} {} { 32 \label{\l__forester_tree_slug} 33 \bool_gset_true:c {g__forester_slug_defined_\l__forester_tree_slug} 34 } 35 \ignorespaces 36}{ 37 \group_end: 38} 39 40\NewDocumentCommand\ForesterSetup{+m}{ 41 \keys_set:nn { forester } { #1 } 42} 43 44\ExplSyntaxOff 45 46 47\NewDocumentEnvironment{xsect}{om}{ 48\IfValueTF{#1}{ 49 \begin{tree}{title = {#2}, label = #1} 50}{ 51 \begin{tree}{title = {#2}} 52 } 53 }{ 54 \end{tree} 55} 56 57\NewDocumentEnvironment{xnode}{omm}{ 58 \begin{#2}[#3]\IfValueT{#1}{\label{#1}} 59}{ 60 \end{#2} 61}