%% %% This is file `l3quark.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% l3quark.dtx (with options: `package') %% %% EXPERIMENTAL CODE %% %% Do not distribute this file without also distributing the %% source files specified above. %% %% Do not distribute a modified version of this file. %% %% File: l3quark.dtx Copyright (C) 1990-2012 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this %% license or (at your option) any later version. The latest version %% of this license is in the file %% %% http://www.latex-project.org/lppl.txt %% %% This file is part of the "l3kernel bundle" (The Work in LPPL) %% and all files in that bundle must be distributed together. %% %% The released version of this bundle is available from CTAN. %% %% ----------------------------------------------------------------------- %% %% The development version of the bundle can be found at %% %% http://www.latex-project.org/svnroot/experimental/trunk/ %% %% for those people who are interested. %% %%%%%%%%%%% %% NOTE: %% %%%%%%%%%%% %% %% Snapshots taken from the repository represent work in progress and may %% not work or may contain conflicting material! We therefore ask %% people _not_ to put them into distributions, archives, etc. without %% prior consultation with the LaTeX3 Project. %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} \GetIdInfo$Id: l3quark.dtx 4623 2013-12-14 13:53:40Z bruno $ {L3 Quarks} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} \__expl_package_check: \cs_new_protected:Npn \quark_new:N #1 { \tl_const:Nn #1 {#1} } \quark_new:N \q_nil \quark_new:N \q_mark \quark_new:N \q_no_value \quark_new:N \q_stop \quark_new:N \q_recursion_tail \quark_new:N \q_recursion_stop \cs_new:Npn \quark_if_recursion_tail_stop:N #1 { \if_meaning:w \q_recursion_tail #1 \exp_after:wN \use_none_delimit_by_q_recursion_stop:w \fi: } \cs_new:Npn \quark_if_recursion_tail_stop_do:Nn #1 { \if_meaning:w \q_recursion_tail #1 \exp_after:wN \use_i_delimit_by_q_recursion_stop:nw \else: \exp_after:wN \use_none:n \fi: } \cs_new:Npn \quark_if_recursion_tail_stop:n #1 { \if_int_compare:w \pdftex_strcmp:D { \exp_not:N \q_recursion_tail } { \exp_not:n {#1} } = \c_zero \exp_after:wN \use_none_delimit_by_q_recursion_stop:w \fi: } \cs_new:Npn \quark_if_recursion_tail_stop_do:nn #1 { \if_int_compare:w \pdftex_strcmp:D { \exp_not:N \q_recursion_tail } { \exp_not:n {#1} } = \c_zero \exp_after:wN \use_i_delimit_by_q_recursion_stop:nw \else: \exp_after:wN \use_none:n \fi: } \cs_generate_variant:Nn \quark_if_recursion_tail_stop:n { o } \cs_generate_variant:Nn \quark_if_recursion_tail_stop_do:nn { o } \cs_new:Npn \__quark_if_recursion_tail_break:NN #1#2 { \if_meaning:w \q_recursion_tail #1 \exp_after:wN #2 \fi: } \cs_new:Npn \__quark_if_recursion_tail_break:nN #1#2 { \if_int_compare:w \pdftex_strcmp:D { \exp_not:N \q_recursion_tail } { \exp_not:n {#1} } = \c_zero \exp_after:wN #2 \fi: } \prg_new_conditional:Nnn \quark_if_nil:N { p, T , F , TF } { \if_meaning:w \q_nil #1 \prg_return_true: \else: \prg_return_false: \fi: } \prg_new_conditional:Nnn \quark_if_no_value:N { p, T , F , TF } { \if_meaning:w \q_no_value #1 \prg_return_true: \else: \prg_return_false: \fi: } \cs_generate_variant:Nn \quark_if_no_value_p:N { c } \cs_generate_variant:Nn \quark_if_no_value:NT { c } \cs_generate_variant:Nn \quark_if_no_value:NF { c } \cs_generate_variant:Nn \quark_if_no_value:NTF { c } \prg_new_conditional:Nnn \quark_if_nil:n { p, T , F , TF } { \if_int_compare:w \pdftex_strcmp:D { \exp_not:N \q_nil } { \exp_not:n {#1} } = \c_zero \prg_return_true: \else: \prg_return_false: \fi: } \prg_new_conditional:Nnn \quark_if_no_value:n { p, T , F , TF } { \if_int_compare:w \pdftex_strcmp:D { \exp_not:N \q_no_value } { \exp_not:n {#1} } = \c_zero \prg_return_true: \else: \prg_return_false: \fi: } \cs_generate_variant:Nn \quark_if_nil_p:n { V , o } \cs_generate_variant:Nn \quark_if_nil:nTF { V , o } \cs_generate_variant:Nn \quark_if_nil:nT { V , o } \cs_generate_variant:Nn \quark_if_nil:nF { V , o } \quark_new:N \q__tl_act_mark \quark_new:N \q__tl_act_stop \tl_new:N \g__scan_marks_tl \cs_new_protected:Npn \__scan_new:N #1 { \tl_if_in:NnTF \g__scan_marks_tl { #1 } { \__msg_kernel_error:nnx { kernel } { scanmark-already-defined } { \token_to_str:N #1 } } { \tl_gput_right:Nn \g__scan_marks_tl {#1} \cs_new_eq:NN #1 \scan_stop: } } \__scan_new:N \s__stop \cs_new:Npn \__use_none_delimit_by_s__stop:w #1 \s__stop { } \__scan_new:N \s__seq \cs_new:Npn \quark_if_recursion_tail_break:N #1 { \__quark_if_recursion_tail_break:NN #1 \prg_break: } \cs_new:Npn \quark_if_recursion_tail_break:n #1 { \__quark_if_recursion_tail_break:nN {#1} \prg_break: } %% %% %% End of file `l3quark.sty'.