%% %% This is file `styledcmd.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% styledcmd.dtx (with options: `package') %% %% This is a generated file. %% %% Styledcmd Handle multiple versions for user-defined macros in LaTeX %% Copyright (C) 2021-2024 Paolo De Donato %% %% Styledcmd is free software: you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation, either version 3 of the License, or %% (at your option) any later version. %% %% Styledcmd is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with Styledcmd. If not, see . %% \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3}[2022-04-10] \ProvidesExplPackage{styledcmd}{2024/03/07}{2.0.1}{Command with different styles} \RequirePackage{lt3rawobjects}[2023-03-17] \RequirePackage{xparse} \str_const:Nx \c__stycmd_cmdproxy_str { \object_address:nn { stycmd }{ proxy } } \proxy_create:nn { stycmd }{ proxy } \proxy_push_member:Vnn \c__stycmd_cmdproxy_str { default }{ tl } \cs_new:Nn \__stycmd_cmd:n { \object_address:nn{ stycmd }{ entity - #1 } } \cs_new_protected:Nn \__stycmd_setdef_aux:nN { \object_member_set:nnn { \__stycmd_cmd:n{ #1 } } { default } { #2 } } \cs_generate_variant:Nn \__stycmd_setdef_aux:nN { nc } \cs_new_protected:Nn \__stycmd_setdef_style:nn { \__stycmd_setdef_aux:nc{ #1 } { \object_macro_adr:nn { \__stycmd_cmd:n{ #1 } } { style - #2 } } } \cs_generate_variant:Nn \__stycmd_setdef_style:nn { ff } \cs_new_protected:Nn \__stycmd_setdef_strip:Nn { \__stycmd_setdef_style:ff{ \cs_to_str:N #1 } { \tl_trim_spaces:n{ #2 } } } \cs_new_protected:Nn \__stycmd_cmd_define_aux_aux:NN { #1 { #2 } } \cs_generate_variant:Nn \__stycmd_cmd_define_aux_aux:NN { Nc } \cs_new_protected:Nn \__stycmd_cmd_define_aux:Nnn { \__stycmd_cmd_define_aux_aux:Nc #1 { \object_macro_adr:nn { \__stycmd_cmd:n{ #2 } } { style - #3 } } } \cs_generate_variant:Nn \__stycmd_cmd_define_aux:Nnn { Nff } \cs_new_protected:Nn \__stycmd_cmd_define_strip:NNn { \__stycmd_cmd_define_aux:Nff #1 { \cs_to_str:N #2 }{ \tl_trim_spaces:n { #3 } } } \cs_new:Nn \__stycmd_cmd_usedef_aux:n { \object_member_use:nn { \__stycmd_cmd:n{ #1 } } { default } } \cs_generate_variant:Nn \__stycmd_cmd_usedef_aux:n { f } \cs_new:Nn \__stycmd_cmd_usedef:N { \__stycmd_cmd_usedef_aux:f{ \cs_to_str:N #1 } } \cs_new:Nn \__stycmd_cmd_usesty_aux:nn { \object_macro_use:nn { \__stycmd_cmd:n{ #1 } } { style - #2 } } \cs_generate_variant:Nn \__stycmd_cmd_usesty_aux:nn { ff } \cs_new:Nn \__stycmd_cmd_usesty_strip:Nn { \__stycmd_cmd_usesty_aux:ff{ \cs_to_str:N #1 } { \tl_trim_spaces:n{ #2 } } } \cs_new_protected:Nn \__stycmd_entity_create_aux:nnn { \object_if_exist:nF { \__stycmd_cmd:n{ #1 } } { \object_create:Vnn \c__stycmd_cmdproxy_str { stycmd }{ entity - #1 } \__stycmd_setdef_style:nn{ #1 }{ #2 } #3 } } \cs_generate_variant:Nn \__stycmd_entity_create_aux:nnn { ffn } \cs_new_protected:Nn \__stycmd_entity_create_strip:Nnn { \__stycmd_entity_create_aux:ffn { \cs_to_str:N #1 } { \tl_trim_spaces:n{ #2 } } { #3 } } \cs_new_protected:Nn \stycmd_xparsecmd:N { \ProvideDocumentCommand { #1 } { o } { \IfNoValueTF {##1} { \__stycmd_cmd_usedef:N #1 } { \__stycmd_cmd_usesty_strip:Nn #1 { ##1 } } } } \cs_new_protected:Nn \stycmd_expcmd:N { \providecommand { #1 } [1] { \tl_if_empty:nTF {##1} { \__stycmd_cmd_usedef:N #1 } { \__stycmd_cmd_usesty_strip:Nn #1 { ##1 } } } } \NewDocumentCommand{\SetGlobalStyle}{m m} { \__stycmd_setdef_strip:Nn #1 { #2 } } \cs_new_protected:Nn \stycmd_generate:NNN { \cs_new_protected:Npn #1 ##1 ##2 { \__stycmd_entity_create_strip:Nnn ##1 { ##2 } { #3 ##1 } \__stycmd_cmd_define_strip:NNn #2 ##1 { ##2 } } } \cs_new_protected:Nn \stycmd_generate:NN { \stycmd_generate:NNN #1 #2 \stycmd_xparsecmd:N } \cs_new_protected:Nn \stycmd_generate_renew:NN { \cs_new_protected:Npn #1 ##1 ##2 { \__stycmd_cmd_define_strip:NNn #2 ##1 { ##2 } } } \stycmd_generate:NN \newstyledcmd \newcommand \stycmd_generate_renew:NN \renewstyledcmd \renewcommand \stycmd_generate:NN \providestyledcmd \providecommand \stycmd_generate:NN \NewDocStyledCMD \NewDocumentCommand \stycmd_generate_renew:NN \RenewDocStyledCMD \RenewDocumentCommand \stycmd_generate:NN \ProvideDocStyledCMD \ProvideDocumentCommand \stycmd_generate:NNN \newstyledcmdExp \newcommand \stycmd_expcmd:N \stycmd_generate_renew:NN \renewstyledcmdExp \renewcommand \stycmd_generate:NNN \providestyledcmdExp \providecommand \stycmd_expcmd:N \str_new:N \g__stycmd_grproxy_str \seq_new:N \g__stycmd_tmp_seq \seq_new:N \g__stycmd_tmpb_seq \proxy_create_gset:Nnn \g__stycmd_grproxy_str { stycmd }{ groups } \proxy_push_member:Vnn \g__stycmd_grproxy_str { commands }{ seq } \cs_generate_variant:Nn \seq_gconcat:NNN { ccN } \cs_new_protected:Nn \__stycmd_gconcat:nN { \seq_gconcat:ccN { #1 }{ #1 } #2 } \cs_new_protected:Nn \__stycmd_addgroup:nn { \object_if_exist:nF { \object_address:nn{ stycmd }{ group - #1 } } { \object_create:Vnn \g__stycmd_grproxy_str { stycmd } { group - #1 } } \seq_gset_from_clist:Nn \g__stycmd_tmp_seq { #2 } \seq_gset_map_x:NNn \g__stycmd_tmpb_seq \g__stycmd_tmp_seq { \cs_to_str:N ##1 } \__stycmd_gconcat:nN { \object_member_adr:nnn { \object_address:nn { stycmd } { group - #1 } } { commands } { seq } } \g__stycmd_tmpb_seq } \cs_generate_variant:Nn \__stycmd_addgroup:nn { fn } \NewDocumentCommand{\AddCMDToGroup}{m m} { \__stycmd_addgroup:fn { \tl_trim_spaces:n{ #1 } } { #2 } } \NewDocumentCommand{\SetGroupStyle}{m m} { \seq_map_inline:cn { \object_member_adr:nnn { \object_address:nn { stycmd } { group - #1 } } { commands } { seq } } { \__stycmd_setdef_style:nn{ ##1 }{ #2 } } } \msg_new:nnnn{ styledcmd }{ stydep }{ Old-fashioned~groups~for~styled~commands~are~deprecated } { From~version~2.0~of~styledcmd~you~should~use~new~group~commands~instea~of~old~ones,~see~official~documentation~on~CTAN. } \str_new:N \g__stycmd_act_group_str \str_new:N \g__stycmd_act_style_str \NewDocumentCommand{\styBeginGroup}{ m } { \msg_warning:nn{ styledcmd }{ stydep } \str_gset:Nn \g__stycmd_act_group_str{ #1 } } \NewDocumentCommand{\styEndGroup}{} { \msg_warning:nn{ styledcmd }{ stydep } \str_gset:Nn \g__stycmd_act_group_str{} } \NewDocumentCommand{\styBeginStyle}{ m } { \msg_warning:nn{ styledcmd }{ stydep } \str_gset:Nn \g__stycmd_act_style_str{ #1 } } \NewDocumentCommand{\styEndStyle}{} { \msg_warning:nn{ styledcmd }{ stydep } \str_gset:Nn \g__stycmd_act_style_str{} } \cs_generate_variant:Nn \__stycmd_addgroup:nn { Vn } \NewDocumentCommand{\newGstyledcmd}{m o m} { \msg_warning:nn{ styledcmd }{ stydep } \__stycmd_addgroup:Vn \g__stycmd_act_group_str { #1 } \IfNoValueTF{ #2 } { \exp_args:NNV \newstyledcmd #1 \g__stycmd_act_style_str { #3 } } { \exp_args:NNV \newstyledcmd #1 \g__stycmd_act_style_str [ #2 ] { #3 } } } \NewDocumentCommand{\NewGDocStyledCMD}{m m m} { \msg_warning:nn{ styledcmd }{ stydep } \__stycmd_addgroup:Vn \g__stycmd_act_group_str { #1 } \exp_args:NNV \NewDocStyledCMD #1 \g__stycmd_act_style_str { #2 } { #3 } } \NewDocumentCommand{\setGroupStyle}{m m} { \msg_warning:nn{ styledcmd }{ stydep } \SetGroupStyle{ #1 }{ #2 } } \endinput %% %% End of file `styledcmd.sty'.