summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/semantex/semantex.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-09-11 03:02:42 +0000
committerNorbert Preining <norbert@preining.info>2020-09-11 03:02:42 +0000
commit026bcd88f082ea4bb3f2ddbac395339309f00a63 (patch)
treecd37f4299d38f8630b60c5c47bd1b60c5851ef98 /macros/latex/contrib/semantex/semantex.sty
parent7453287d9233f42e36d981105bc93baf3e2b3a6a (diff)
CTAN sync 202009110302
Diffstat (limited to 'macros/latex/contrib/semantex/semantex.sty')
-rw-r--r--macros/latex/contrib/semantex/semantex.sty308
1 files changed, 230 insertions, 78 deletions
diff --git a/macros/latex/contrib/semantex/semantex.sty b/macros/latex/contrib/semantex/semantex.sty
index 2da252301b..80825c4d44 100644
--- a/macros/latex/contrib/semantex/semantex.sty
+++ b/macros/latex/contrib/semantex/semantex.sty
@@ -1,5 +1,5 @@
-\RequirePackage{xparse,l3keys2e,semtex,leftindex}
-\ProvidesExplPackage{semantex}{2020/09/08}{0.41beta}{}
+\RequirePackage{xparse,l3keys2e,leftindex}
+\ProvidesExplPackage{semantex}{2020/09/10}{0.42}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
@@ -29,6 +29,94 @@
\keys_set:nn { semantex } { #1 }
}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% THE FOLLOWING SECTION IS IDENTICAL TO THE semtex PACKAGE
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% These are some essential commands that are needed for bullets and parentheses,
+% and they are the only ones that will not be stripped by running the
+% stripsemantex algorithm. Therefore, they are also available as a standalone
+% package, called "semtex". This name is meant to suggest "stripped SemanTeX",
+% and at the same time, semtex is the name of a plastic explosive, suggesting
+% "blown-up SemanTeX".
+% (Mathematicians are not famous for the quality of their humour.)
+
+% Bullets:
+
+\box_if_exist:NF \g__semantex_bullet_box
+{
+ \box_new:N \g__semantex_bullet_box
+ \hbox_set:Nn \g__semantex_bullet_box { $\cdot$ }
+ \box_scale:Nnn \g__semantex_bullet_box {1.2} {1.2}
+ \tl_set:Nn\g_semantex_bullet
+ {
+ \box_move_up:nn{-0.25ex}{\box_use:N \g__semantex_bullet_box}
+ }
+
+ \tl_set:Nn\g_semantex_double_bullet{\g_semantex_bullet \g_semantex_bullet}
+
+ \tl_set_eq:NN\SemantexBullet \g_semantex_bullet
+
+ \tl_set_eq:NN \SemantexDoubleBullet \g_semantex_double_bullet
+}
+
+% Parentheses:
+
+\cs_set:Npn\SemantexLeft { \mathopen{}\mathclose\bgroup\left }
+
+\cs_set:Npn\SemantexRight { \aftergroup\egroup\right }
+
+\tl_set:Nn\SemantexDelimiterSize{}
+
+\DeclareDocumentCommand\SemantexParentheses { mmmm }
+{
+ \str_case:nnF { #1 } % This is where \big,\Big, etc. go.
+ {
+ { normal } {
+ \group_begin:
+ \tl_clear:N \SemantexDelimiterSize
+ \str_if_eq:nnF { #2 } { . } { \mathopen #2 }
+ #4
+ \str_if_eq:nnF { #3 } { . } { \mathclose #3 }
+ \group_end:
+ }
+ { auto } {
+ \group_begin:
+ \tl_set_eq:NN \SemantexDelimiterSize \middle
+ \SemantexLeft #2
+ #4
+ \SemantexRight #3
+ \group_end:
+ }
+ { * } {
+ \group_begin:
+ \tl_set_eq:NN \SemantexDelimiterSize \middle
+ \SemantexLeft #2
+ #4
+ \SemantexRight #3
+ \group_end:
+ }
+ }
+ {
+ \group_begin:
+ \tl_set_eq:NN\SemantexDelimiterSize #1
+ \mathopen #1 #2
+ #4
+ \mathclose #1 #3
+ \group_end:
+ }
+}
+
+\DeclareDocumentCommand\SemantexNoParentheses { m }
+{
+ \group_begin:
+ \tl_clear:N\SemantexDelimiterSize
+ #1
+ \group_end:
+}
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% THE .semtex FILE
@@ -1830,29 +1918,19 @@
\cs_new_protected:Npn\semantex_right_return:n#1
{
- \semantex_right_indices_return_store:nN { #1 }
- \l__semantex_rightreturn_right_indices_temp
- \semantex_data_tl_put_right:nnx { #1 } { symbol }
- {
- \exp_not:V \l__semantex_rightreturn_right_indices_temp
- }
- \semantex_data_bool_get:nnTF { #1 } { leftargument }
- {
- % do nothing
- }
- {
- \semantex_arg_return_store:nN { #1 } \l__semantex_rightreturn_arg_temp
- \semantex_data_tl_put_right:nnx { #1 } { symbol }
- {
- \exp_not:V
- \l__semantex_rightreturn_arg_temp
- }
- \semantex_data_tl_clear:nn { #1 } { arg }
- \semantex_data_tl_clear:nn { #1 } { prearg }
- \semantex_data_tl_clear:nn { #1 } { postarg }
- \semantex_data_int_clear:nn { #1 } { numberofarguments }
- \semantex_data_bool_set_false:nn { #1 } { nextargwithsep }
- }
+ \semantex_right_index_return:n { #1 }
+ \semantex_right_arg_return:n { #1 }
+}
+
+\cs_new_protected:Npn\semantex_right_pre_return:n#1
+{
+ \semantex_right_indices_pre_return:n { #1 }
+ \semantex_right_arg_pre_return:n { #1 }
+}
+
+\cs_new_protected:Npn\semantex_right_index_return:n#1
+{
+ \semantex_right_indices_pre_return:n { #1 }
\semantex_data_tl_clear:nn { #1 } { upper }
\semantex_data_tl_clear:nn { #1 } { preupper }
\semantex_data_tl_clear:nn { #1 } { postupper }
@@ -1865,30 +1943,17 @@
\semantex_data_int_clear:nn { #1 } { numberoflowerindices }
}
-\cs_new_protected:Npn\semantex_right_pre_return:n#1
+\cs_new_protected:Npn\semantex_right_indices_pre_return:n#1
{
- \semantex_right_indices_return_store:nN { #1 }
+ \_semantex_right_index_return_store:nN { #1 }
\l__semantex_rightreturn_right_indices_temp
\semantex_data_tl_put_right:nnx { #1 } { symbol }
{
\exp_not:V \l__semantex_rightreturn_right_indices_temp
}
- \semantex_data_bool_get:nnTF { #1 } { leftargument }
- {
- % do nothing
- }
- {
- \semantex_arg_return_store:nN { #1 } \l__semantex_rightreturn_arg_temp
- \semantex_data_tl_put_right:nnx { #1 } { symbol }
- {
- \exp_not:V
- \l__semantex_rightreturn_arg_temp
- }
- }
}
-
-\cs_new_protected:Npn \semantex_right_indices_return_store:nN#1#2
+\cs_new_protected:Npn \_semantex_right_index_return_store:nN#1#2
{
\tl_set:Nn#2{}
\semantex_data_int_if_positive:nnTF { #1 } { numberoflowerindices }
@@ -1923,28 +1988,19 @@
\cs_new_protected:Npn\semantex_left_return:n#1
{
- \semantex_left_indices_return_store:nN { #1 }
- \l__semantex_leftreturn_left_indices_temp
- \semantex_data_tl_put_left:nnx { #1 } { symbol }
- {
- \exp_not:V \l__semantex_leftreturn_left_indices_temp
- }
- \semantex_data_bool_get:nnTF { #1 } { leftargument }
- {
- \semantex_arg_return_store:nN { #1 } \l__semantex_leftreturn_arg_temp
- \semantex_data_tl_put_left:nnx { #1 } { symbol }
- {
- \exp_not:V \l__semantex_leftreturn_arg_temp
- }
- \semantex_data_tl_clear:nn { #1 } { arg }
- \semantex_data_tl_clear:nn { #1 } { prearg }
- \semantex_data_tl_clear:nn { #1 } { postarg }
- \semantex_data_int_clear:nn { #1 } { numberofarguments }
- \semantex_data_bool_set_false:nn { #1 } { nextargwithsep }
- }
- {
- % do nothing
- }
+ \semantex_left_index_return:n { #1 }
+ \semantex_left_arg_return:n { #1 }
+}
+
+\cs_new_protected:Npn\semantex_left_pre_return:n#1
+{
+ \semantex_left_indices_pre_return:n { #1 }
+ \semantex_left_arg_pre_return:n { #1 }
+}
+
+\cs_new_protected:Npn\semantex_left_index_return:n#1
+{
+ \semantex_left_indices_pre_return:n { #1 }
\semantex_data_tl_clear:nn { #1 } { upperleft }
\semantex_data_tl_clear:nn { #1 } { preupperleft }
\semantex_data_tl_clear:nn { #1 } { postupperleft }
@@ -1962,28 +2018,17 @@
\semantex_data_tl_clear:nn { #1 } { slantingphantom }
}
-\cs_new_protected:Npn\semantex_left_pre_return:n#1
+\cs_new_protected:Npn\semantex_left_indices_pre_return:n#1
{
- \semantex_left_indices_return_store:nN { #1 }
+ \_semantex_left_index_return_store:nN { #1 }
\l__semantex_leftreturn_left_indices_temp
\semantex_data_tl_put_left:nnx { #1 } { symbol }
{
\exp_not:V \l__semantex_leftreturn_left_indices_temp
}
- \semantex_data_bool_get:nnTF { #1 } { leftargument }
- {
- \semantex_arg_return_store:nN { #1 } \l__semantex_leftreturn_arg_temp
- \semantex_data_tl_put_left:nnx { #1 } { symbol }
- {
- \exp_not:V \l__semantex_leftreturn_arg_temp
- }
- }
- {
- % do nothing
- }
}
-\cs_new_protected:Npn \semantex_left_indices_return_store:nN#1#2
+\cs_new_protected:Npn \_semantex_left_index_return_store:nN#1#2
{
\tl_set:Nn#2{}
\semantex_data_int_if_positive:nnTF { #1 } { numberofupperleftindices }
@@ -2039,8 +2084,109 @@
}
}
+\cs_new_protected:Npn\semantex_right_arg_return:n#1
+{
+ \semantex_data_bool_get:nnTF { #1 } { leftargument }
+ {
+ % do nothing
+ }
+ {
+ \_semantex_arg_return_store:nN { #1 } \l__semantex_rightreturn_arg_temp
+ \semantex_data_tl_put_right:nnx { #1 } { symbol }
+ {
+ \exp_not:V
+ \l__semantex_rightreturn_arg_temp
+ }
+ \semantex_data_tl_clear:nn { #1 } { arg }
+ \semantex_data_tl_clear:nn { #1 } { prearg }
+ \semantex_data_tl_clear:nn { #1 } { postarg }
+ \semantex_data_int_clear:nn { #1 } { numberofarguments }
+ \semantex_data_bool_set_false:nn { #1 } { nextargwithsep }
+ }
+}
+
+\cs_new_protected:Npn\semantex_right_arg_pre_return:n#1
+{
+ \semantex_data_bool_get:nnTF { #1 } { leftargument }
+ {
+ % do nothing
+ }
+ {
+ \_semantex_arg_return_store:nN { #1 } \l__semantex_rightreturn_arg_temp
+ \semantex_data_tl_put_right:nnx { #1 } { symbol }
+ {
+ \exp_not:V
+ \l__semantex_rightreturn_arg_temp
+ }
+ }
+}
+
+\cs_new_protected:Npn\semantex_left_arg_return:n#1
+{
+ \semantex_data_bool_get:nnTF { #1 } { leftargument }
+ {
+ \_semantex_arg_return_store:nN { #1 } \l__semantex_leftreturn_arg_temp
+ \semantex_data_tl_put_left:nnx { #1 } { symbol }
+ {
+ \exp_not:V \l__semantex_leftreturn_arg_temp
+ }
+ \semantex_data_tl_clear:nn { #1 } { arg }
+ \semantex_data_tl_clear:nn { #1 } { prearg }
+ \semantex_data_tl_clear:nn { #1 } { postarg }
+ \semantex_data_int_clear:nn { #1 } { numberofarguments }
+ \semantex_data_bool_set_false:nn { #1 } { nextargwithsep }
+ }
+ {
+ % do nothing
+ }
+}
+
+\cs_new_protected:Npn\semantex_left_arg_pre_return:n#1
+{
+ \semantex_data_bool_get:nnTF { #1 } { leftargument }
+ {
+ \_semantex_arg_return_store:nN { #1 } \l__semantex_leftreturn_arg_temp
+ \semantex_data_tl_put_left:nnx { #1 } { symbol }
+ {
+ \exp_not:V \l__semantex_leftreturn_arg_temp
+ }
+ }
+ {
+ % do nothing
+ }
+}
+
+\cs_new_protected:Npn\semantex_arg_return:n#1
+{
+ \semantex_arg_pre_return:n { #1 }
+ \semantex_data_tl_clear:nn { #1 } { arg }
+ \semantex_data_tl_clear:nn { #1 } { prearg }
+ \semantex_data_tl_clear:nn { #1 } { postarg }
+ \semantex_data_int_clear:nn { #1 } { numberofarguments }
+ \semantex_data_bool_set_false:nn { #1 } { nextargwithsep }
+}
+
+\cs_new_protected:Npn\semantex_arg_pre_return:n#1
+{
+ \semantex_data_bool_get:nnTF { #1 } { leftargument }
+ {
+ \_semantex_arg_return_store:nN { #1 } \l__semantex_leftreturn_arg_temp
+ \semantex_data_tl_put_left:nnx { #1 } { symbol }
+ {
+ \exp_not:V \l__semantex_leftreturn_arg_temp
+ }
+ }
+ {
+ \_semantex_arg_return_store:nN { #1 } \l__semantex_rightreturn_arg_temp
+ \semantex_data_tl_put_right:nnx { #1 } { symbol }
+ {
+ \exp_not:V
+ \l__semantex_rightreturn_arg_temp
+ }
+ }
+}
-\cs_new_protected:Npn \semantex_arg_return_store:nN#1#2
+\cs_new_protected:Npn \_semantex_arg_return_store:nN#1#2
{
\semantex_data_tl_get_store:nnN { #1 } { parsize } \l__arg_return_store_parsize_temp_tl
\semantex_data_bool_get:nnTF { #1 } { par }
@@ -5577,6 +5723,12 @@
{innerreturn}{ execute={ \semantex_inner_return:n { ##1 } } },
{rightreturn}{ execute={ \semantex_right_return:n { ##1 } } },
{leftreturn}{ execute={ \semantex_left_return:n { ##1 } } },
+ {rightindexreturn}{ execute={ \semantex_right_index_return:n { ##1 } } },
+ {leftindexreturn}{ execute={ \semantex_left_index_return:n { ##1 } } },
+ {indexreturn}{ leftindexreturn, rightindexreturn },
+ {rightargreturn}{ execute={ \semantex_right_arg_return:n { ##1 } } },
+ {leftargreturn}{ execute={ \semantex_left_arg_return:n { ##1 } } },
+ {argreturn}{ execute={ \semantex_arg_return:n { ##1 } } },
{parse}{ execute={ \semantex_parse:n { ##1 } } },
{clearcommand}{ execute={ \semantex_data_seq_clear:nn { ##1 } { commands_sequence } } },
{...}{sidots},