summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/xsavebox
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-08-13 20:54:36 +0000
committerKarl Berry <karl@freefriends.org>2019-08-13 20:54:36 +0000
commit1b79daa41d8c1f8533fba8e1fe11597d7b1db6ce (patch)
tree80769c221f2652ea9172f9acf037fd14689975b6 /Master/texmf-dist/tex/latex/xsavebox
parent3152d4876d6ed4d4713ea524baec83e02924ec4b (diff)
xsavebox (13aug19)
git-svn-id: svn://tug.org/texlive/trunk@51873 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/xsavebox')
-rw-r--r--Master/texmf-dist/tex/latex/xsavebox/xsavebox.sty49
1 files changed, 29 insertions, 20 deletions
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: