From 1b79daa41d8c1f8533fba8e1fe11597d7b1db6ce Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 13 Aug 2019 20:54:36 +0000 Subject: xsavebox (13aug19) git-svn-id: svn://tug.org/texlive/trunk@51873 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/xsavebox/xsavebox.sty | 49 ++++++++++++++--------- 1 file changed, 29 insertions(+), 20 deletions(-) (limited to 'Master/texmf-dist/tex/latex/xsavebox') diff --git a/Master/texmf-dist/tex/latex/xsavebox/xsavebox.sty b/Master/texmf-dist/tex/latex/xsavebox/xsavebox.sty index 8114fbff442..164dfab8299 100644 --- a/Master/texmf-dist/tex/latex/xsavebox/xsavebox.sty +++ b/Master/texmf-dist/tex/latex/xsavebox/xsavebox.sty @@ -55,8 +55,8 @@ \RequirePackage{xparse} \RequirePackage{l3keys2e} -\def\g@xsb@version@tl{0.13} -\def\g@xsb@date@tl{2019/06/24} +\def\g@xsb@version@tl{0.14} +\def\g@xsb@date@tl{2019/08/13} \ProvidesExplPackage{xsavebox}{\g@xsb@date@tl}{\g@xsb@version@tl} {saveboxes for repeating content without code replication} @@ -140,7 +140,7 @@ % content insertion (referencing, actually) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \DeclareDocumentCommand\xusebox{m}{ - \tl_if_exist:cF{the#1}{\msg_error:nnn{xsavebox}{save-box~undefined}{#1}} + \tl_if_exist:cF{xsb_name_#1}{\msg_error:nnn{xsavebox}{save-box~undefined}{#1}} \tl_use:c{the#1} } \msg_set:nnnn{xsavebox}{save-box~undefined}{ @@ -153,6 +153,7 @@ % saving content %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \DeclareDocumentCommand\xsavebox{smO{\width}O{c}+m}{ + \xsb_check_box_name:n{#2} \group_begin: \tl_set:Nn\l_xsb_content_grouped_tl{ \group_begin: @@ -164,13 +165,9 @@ \xsb_beginLTR: \IfBooleanTF{#1}{ %later colour injection possible (pdfTeX, LuaTeX) - \hbox_set:Nn\l_xsb_raw_box{ %raw content - \color@begingroup\l_xsb_content_grouped_tl\color@endgroup - } + \hbox_set:Nn\l_xsb_raw_box{\l_xsb_content_grouped_tl} %raw content \hbox_set:Nn\l_xsb_box{ %content re-aligned - \makebox[#3][#4]{ - \color@begingroup\l_xsb_content_grouped_tl\color@endgroup - } + \makebox[#3][#4]{\l_xsb_content_grouped_tl} } }{ %the LaTeX way (no colour injection) @@ -185,7 +182,7 @@ %for colour injection \hbox_set:Nn\l_xsb_box{ \makebox[\box_wd:N\l_xsb_raw_box][l]{ - \makebox[#3][s]{\color@begingroup#5\color@endgroup} + \makebox[#3][s]{#5} } } }{ @@ -195,22 +192,18 @@ } } \xsb_process_box:nnnN{#2}{#3}{#4}\l_xsb_box - }{ + }{ % raw content \IfBooleanTF{#1}{ - \hbox_set:Nn\l_xsb_raw_box{ %raw content - \color@begingroup#5\color@endgroup - } + \hbox_set:Nn\l_xsb_raw_box{#5} }{ - \sbox\l_xsb_raw_box{#5} %raw content + \sbox\l_xsb_raw_box{#5} } \xsb_process_box:nnnN{#2}{#3}{#4}\l_xsb_raw_box } }{ \IfBooleanTF{#1}{ \hbox_set:Nn\l_xsb_box{ %content re-aligned - \makebox[#3][#4]{ - \color@begingroup#5\color@endgroup - } + \makebox[#3][#4]{#5} } }{ \savebox\l_xsb_box[#3][#4]{#5} %re-aligned @@ -224,18 +217,34 @@ \DeclareDocumentCommand\xsbox{m+m}{\xsavebox{#1}{#2}} \DeclareDocumentEnvironment{xlrbox}{m}{ + \xsb_check_box_name:n{#1} \xsb_xlrbox: }{ \xsb_endxlrbox:n{#1} } \DeclareDocumentEnvironment{xlrbox*}{m}{ + \xsb_check_box_name:n{#1} \xsb_xlrbox_star: }{ \xsb_endxlrbox_star:n{#1} } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\msg_set:nnn{xsavebox}{name~in~use}{ + The~name~`#1'~is~already~in~use~\msg_line_context:.\\ + Select~a~different~box~name. +} +\cs_new_protected_nopar:Nn\xsb_check_box_name:n{ + \bool_if:nTF{ + \cs_if_exist_p:c{the#1} && !\tl_if_exist_p:c{xsb_name_#1} + }{ + \msg_error:nnx{xsavebox}{name~in~use}{#1} + }{ + \tl_clear_new:c{xsb_name_#1} + } +} + \cs_new_protected:Nn\xsb_xlrbox:{ \group_begin: \xsb_push_props: %new, empty properties dict @@ -257,13 +266,13 @@ \group_begin: \xsb_push_props: %new, empty properties dict \xsb_beginLTR: - \hbox_set:Nw\l_xsb_box\color@begingroup + \hbox_set:Nw\l_xsb_box \ignorespaces } \cs_new_protected_nopar:Nn\xsb_endxlrbox_star:n{ \unskip - \color@endgroup\hbox_set_end: + \hbox_set_end: \xsb_process_box:nnnN{#1}{\width}{c}\l_xsb_box \xsb_endLTR: \group_end: -- cgit v1.2.3