From a43dfb3aaf9458a242743878b8ddb3ef995f956d Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 13 May 2013 23:44:35 +0000 Subject: embrac (13may13) git-svn-id: svn://tug.org/texlive/trunk@30450 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/embrac/embrac.sty | 237 ++++++++++++++++++++------ 1 file changed, 188 insertions(+), 49 deletions(-) (limited to 'Master/texmf-dist/tex/latex') diff --git a/Master/texmf-dist/tex/latex/embrac/embrac.sty b/Master/texmf-dist/tex/latex/embrac/embrac.sty index 908fa356018..44b18b90da9 100644 --- a/Master/texmf-dist/tex/latex/embrac/embrac.sty +++ b/Master/texmf-dist/tex/latex/embrac/embrac.sty @@ -34,10 +34,25 @@ \RequirePackage { expl3 , xparse , l3keys2e } \ProvidesExplPackage {embrac} - {2013/04/04} - {0.3a} + {2013/05/13} + {0.4} {Upright Brackets in Emphasized Text} +% -------------------------------------------------------------------------- +% check expl3 version: +\@ifpackagelater { expl3 } { 2012/11/21 } + { } + { + \PackageError { embrac } { Support~package~expl3~too~old } + { + You~need~to~update~your~installation~of~the~bundles~'l3kernel'~and~ + 'l3packages'.\MessageBreak + Loading~embrac~will~abort! + } + \tex_endinput:D + } + +% -------------------------------------------------------------------------- \bool_new:N \l__embrac_treat_biblatex_bool \tl_new:N \l__embrac_tmpa_tl \tl_new:N \l__embrac_treat_biblatex_tl @@ -177,22 +192,22 @@ } % internal \emph command, second layer: -\cs_new_protected:Npn \__embrac_new_emph:w #1#2 +\cs_new_protected:Npn \__embrac_new_emph:nn #1#2 { \group_begin: \__embrac_treat_bibparens: - \IfBooleanTF { #1 } + \tl_if_eq:nnTF { #1 } { * } { \__embrac_orig_emph:n { #2 } } { \__embrac_emph:n { #2 } } \group_end: } % internal \textit command, second layer: -\cs_new_protected:Npn \__embrac_new_textit:w #1#2 +\cs_new_protected:Npn \__embrac_new_textit:nn #1#2 { \group_begin: \__embrac_treat_bibparens: - \IfBooleanTF { #1 } + \tl_if_eq:nnTF { #1 } { * } { \__embrac_orig_textit:n { #2 } } { \__embrac_textit:n { #2 } } \group_end: @@ -202,11 +217,11 @@ \AtBeginDocument{ \__embrac_if_fontspec:T { - \cs_new_protected:Npn \__embrac_new_textsi:w #1#2 + \cs_new_protected:Npn \__embrac_new_textsi:nn #1#2 { \group_begin: \__embrac_treat_bibparens: - \IfBooleanTF { #1 } + \tl_if_eq:nnTF { #1 } { * } { \__embrac_orig_textsi:n { #2 } } { \__embrac_textsi:n { #2 } } \group_end: @@ -216,18 +231,30 @@ % user command \emph: \RenewDocumentCommand \emph { sm } - { \__embrac_new_emph:w #1 { #2 } } + { + \IfBooleanTF { #1 } + { \__embrac_new_emph:nn { * } { #2 } } + { \__embrac_new_emph:nn { } { #2 } } + } % user command \textit: \RenewDocumentCommand \textit { sm } - { \__embrac_new_textit:w #1 { #2 } } + { + \IfBooleanTF { #1 } + { \__embrac_new_textit:nn { * } { #2 } } + { \__embrac_new_textit:nn { } { #2 } } + } % user command \textsi: \AtBeginDocument{ \__embrac_if_fontspec:T { \RenewDocumentCommand \textsi { sm } - { \__embrac_new_textsi:w #1 { #2 } } + { + \IfBooleanTF { #1 } + { \__embrac_new_textsi:nn { * } { #2 } } + { \__embrac_new_textsi:nn { } { #2 } } + } } } @@ -240,7 +267,7 @@ { \__embrac_orig_emph:n { ##2 } } \RenewDocumentCommand \textit { sm } { \__embrac_orig_textit:n { ##2 } } - \cs_if_exist:NT + \cs_if_exist:NT \textsi { \RenewDocumentCommand \textsi { sm } { \__embrac_orig_textsi:n { ##2 } } @@ -251,20 +278,32 @@ \NewDocumentCommand \EmbracOn {} { \RenewDocumentCommand \emph { sm } - { \__embrac_new_emph:w ##1 { ##2 } } + { + \IfBooleanTF { ##1 } + { \__embrac_new_emph:nn { * } { ##2 } } + { \__embrac_new_emph:nn { } { ##2 } } + } \RenewDocumentCommand \textit { sm } - { \__embrac_new_textit:w ##1 { ##2 } } - \cs_if_exist:NT + { + \IfBooleanTF { ##1 } + { \__embrac_new_textit:nn { * } { ##2 } } + { \__embrac_new_textit:nn { } { ##2 } } + } + \cs_if_exist:NT \textsi { \RenewDocumentCommand \textsi { sm } - { \__embrac_new_textsi:w ##1 { ##2 } } + { + \IfBooleanTF { ##1 } + { \__embrac_new_textsi:nn { * } { ##2 } } + { \__embrac_new_textsi:nn { } { ##2 } } + } } } % -------------------------------------------------------------------------- % ADDING AND REMOVING BRACKETS: -% internal add command: -\cs_new_protected:Npn \__embrac_add_to_emph:nnnnnn #1#2#3#4#5#6 +% internal add commands: +\cs_new_protected:Npn \embrac_add_op_to_emph:nnn #1#2#3 { \__embrac_empty_or_no_value:nTF { #2 } { \prop_put_if_new:Nnn \l__embrac_emph_obrackets_prop { #1 } { 0pt } } @@ -272,25 +311,45 @@ \__embrac_empty_or_no_value:nTF { #3 } { \prop_put_if_new:Nnn \l__embrac_emph_obrackets_before_prop { #1 } { 0pt } } { \prop_put_if_new:Nnn \l__embrac_emph_obrackets_before_prop { #1 } { #3 } } - \__embrac_empty_or_no_value:nTF { #5 } - { \prop_put_if_new:Nnn \l__embrac_emph_cbrackets_prop { #4 } { 0pt } } - { \prop_put_if_new:Nnn \l__embrac_emph_cbrackets_prop { #4 } { #5 } } - \__embrac_empty_or_no_value:nTF { #6 } - { \prop_put_if_new:Nnn \l__embrac_emph_cbrackets_after_prop { #4 } { 0pt } } - { \prop_put_if_new:Nnn \l__embrac_emph_cbrackets_after_prop { #4 } { #6 } } } -% internal delete command: -\cs_new_protected:Npn \__embrac_remove_from_emph:nn #1#2 +\cs_new_protected:Npn \embrac_add_cl_to_emph:nnn #1#2#3 + { + \__embrac_empty_or_no_value:nTF { #2 } + { \prop_put_if_new:Nnn \l__embrac_emph_cbrackets_prop { #1 } { 0pt } } + { \prop_put_if_new:Nnn \l__embrac_emph_cbrackets_prop { #1 } { #2 } } + \__embrac_empty_or_no_value:nTF { #3 } + { \prop_put_if_new:Nnn \l__embrac_emph_cbrackets_after_prop { #1 } { 0pt } } + { \prop_put_if_new:Nnn \l__embrac_emph_cbrackets_after_prop { #1 } { #3 } } + } + +\cs_new_protected:Npn \embrac_add_to_emph:nnnnnn #1#2#3#4#5#6 + { + \embrac_add_op_to_emph:nnn { #1 } { #2 } { #3 } + \embrac_add_cl_to_emph:nnn { #4 } { #5 } { #6 } + } + +% internal delete commands: +\cs_new_protected:Npn \embrac_remove_op_from_emph:n #1 { \prop_remove:Nn \l__embrac_emph_obrackets_prop { #1 } \prop_remove:Nn \l__embrac_emph_obrackets_before_prop { #1 } - \prop_remove:Nn \l__embrac_emph_cbrackets_prop { #2 } - \prop_remove:Nn \l__embrac_emph_cbrackets_after_prop { #2 } } -% internal renew command: -\cs_new_protected:Npn \__embrac_renew_emph:nnnnnn #1#2#3#4#5#6 +\cs_new_protected:Npn \embrac_remove_cl_from_emph:n #1 + { + \prop_remove:Nn \l__embrac_emph_cbrackets_prop { #1 } + \prop_remove:Nn \l__embrac_emph_cbrackets_after_prop { #1 } + } + +\cs_new_protected:Npn \embrac_remove_from_emph:nn #1#2 + { + \embrac_remove_op_from_emph:n { #1 } + \embrac_remove_cl_from_emph:n { #2 } + } + +% internal renew commands: +\cs_new_protected:Npn \embrac_renew_op_emph:nnn #1#2#3 { \__embrac_empty_or_no_value:nTF { #2 } { \prop_put:Nnn \l__embrac_emph_obrackets_prop { #1 } { 0pt } } @@ -298,16 +357,26 @@ \__embrac_empty_or_no_value:nTF { #3 } { \prop_put:Nnn \l__embrac_emph_obrackets_before_prop { #1 } { 0pt } } { \prop_put:Nnn \l__embrac_emph_obrackets_before_prop { #1 } { #3 } } - \__embrac_empty_or_no_value:nTF { #5 } - { \prop_put:Nnn \l__embrac_emph_cbrackets_prop { #4 } { 0pt } } - { \prop_put:Nnn \l__embrac_emph_cbrackets_prop { #4 } { #5 } } - \__embrac_empty_or_no_value:nTF { #6 } - { \prop_put:Nnn \l__embrac_emph_cbrackets_after_prop { #4 } { 0pt } } - { \prop_put:Nnn \l__embrac_emph_cbrackets_after_prop { #4 } { #6 } } } -% internal change command: -\cs_new_protected:Npn \__embrac_change_emph:nnnnnn #1#2#3#4#5#6 +\cs_new_protected:Npn \embrac_renew_cl_emph:nnn #1#2#3 + { + \__embrac_empty_or_no_value:nTF { #2 } + { \prop_put:Nnn \l__embrac_emph_cbrackets_prop { #1 } { 0pt } } + { \prop_put:Nnn \l__embrac_emph_cbrackets_prop { #1 } { #2 } } + \__embrac_empty_or_no_value:nTF { #3 } + { \prop_put:Nnn \l__embrac_emph_cbrackets_after_prop { #1 } { 0pt } } + { \prop_put:Nnn \l__embrac_emph_cbrackets_after_prop { #1 } { #3 } } + } + +\cs_new_protected:Npn \embrac_renew_emph:nnnnnn #1#2#3#4#5#6 + { + \embrac_renew_op_emph:nnn { #1 } { #2 } { #3 } + \embrac_renew_cl_emph:nnn { #4 } { #5 } { #6 } + } + +% internal change commands: +\cs_new_protected:Npn \embrac_change_op_emph:nnn #1#2#3 { \prop_if_in:NnT \l__embrac_emph_obrackets_prop { #1 } { @@ -316,15 +385,26 @@ \__embrac_empty_or_no_value:nF { #3 } { \prop_put:Nnn \l__embrac_emph_obrackets_before_prop { #1 } { #3 } } } - \prop_if_in:NnT \l__embrac_emph_cbrackets_prop { #4 } + } + +\cs_new_protected:Npn \embrac_change_cl_emph:nnn #1#2#3 + { + \prop_if_in:NnT \l__embrac_emph_cbrackets_prop { #1 } { - \__embrac_empty_or_no_value:nF { #5 } - { \prop_put:Nnn \l__embrac_emph_cbrackets_prop { #4 } { #5 } } - \__embrac_empty_or_no_value:nF { #6 } - { \prop_put:Nnn \l__embrac_emph_cbrackets_after_prop { #4 } { #6 } } + \__embrac_empty_or_no_value:nF { #2 } + { \prop_put:Nnn \l__embrac_emph_cbrackets_prop { #1 } { #2 } } + \__embrac_empty_or_no_value:nF { #3 } + { \prop_put:Nnn \l__embrac_emph_cbrackets_after_prop { #1 } { #3 } } } } +\cs_new_protected:Npn \embrac_change_emph:nnnnnn #1#2#3#4#5#6 + { + \embrac_change_op_emph:nnn { #1 } { #2 } { #3 } + \embrac_change_cl_emph:nnn { #4 } { #5 } { #6 } + } + +% -------------------------------------------------------------------------- % user commands: \NewDocumentCommand \AddEmph { @@ -332,13 +412,39 @@ m > { \SplitArgument { 1 } { , } } O{,} } { - \__embrac_add_to_emph:nnnnnn { #1 } #2 { #3 } #4 + \embrac_add_to_emph:nnnnnn { #1 } #2 { #3 } #4 + \ignorespaces + } + +\NewDocumentCommand \AddOpEmph + { m > { \SplitArgument { 1 } { , } } O{,} } + { + \embrac_add_op_to_emph:nnn { #1 } #2 + \ignorespaces + } + +\NewDocumentCommand \AddClEmph + { m > { \SplitArgument { 1 } { , } } O{,} } + { + \embrac_add_cl_to_emph:nnn { #1 } #2 \ignorespaces } \NewDocumentCommand \DeleteEmph { mm } { - \__embrac_remove_from_emph:nn { #1 } { #2 } + \embrac_remove_from_emph:nn { #1 } { #2 } + \ignorespaces + } + +\NewDocumentCommand \DeleteOpEmph { mm } + { + \embrac_remove_op_from_emph:n { #1 } + \ignorespaces + } + +\NewDocumentCommand \DeleteClEmph { mm } + { + \embrac_remove_cl_from_emph:n { #1 } \ignorespaces } @@ -348,7 +454,21 @@ m > { \SplitArgument { 1 } { , } } O{,} } { - \__embrac_renew_emph:nnnnnn { #1 } #2 { #3 } #4 + \embrac_renew_emph:nnnnnn { #1 } #2 { #3 } #4 + \ignorespaces + } + +\NewDocumentCommand \RenewOpEmph + { m > { \SplitArgument { 1 } { , } } O{,} } + { + \embrac_renew_op_emph:nnn { #1 } #2 + \ignorespaces + } + +\NewDocumentCommand \RenewClEmph + { m > { \SplitArgument { 1 } { , } } O{,} } + { + \embrac_renew_cl_emph:nnn { #1 } #2 \ignorespaces } @@ -358,11 +478,26 @@ m > { \SplitArgument { 1 } { , } } O{,} } { - \__embrac_change_emph:nnnnnn { #1 } #2 { #3 } #4 + \embrac_change_emph:nnnnnn { #1 } #2 { #3 } #4 \ignorespaces } -% add some defaults: +\NewDocumentCommand \ChangeOpEmph + { m > { \SplitArgument { 1 } { , } } O{,} } + { + \embrac_change_op_emph:nnn { #1 } #2 + \ignorespaces + } + +\NewDocumentCommand \ChangeClEmph + { m > { \SplitArgument { 1 } { , } } O{,} } + { + \embrac_change_cl_emph:nnn { #1 } #2 + \ignorespaces + } + +% -------------------------------------------------------------------------- +% add some defaults and finalize package: \AddEmph{[}{]}[.04em,-.12em] \AddEmph{(}[-.04em]{)}[,-.15em] @@ -372,6 +507,7 @@ \tex_endinput:D +% -------------------------------------------------------------------------- % HISTORY 2012/06/29 - v0.1 - first public release 2012/06/29 - v0.1a - renamed \RenewEmph => \ChangeEmph and added new \RenewEmph @@ -380,4 +516,7 @@ - changed buggy definition of \EmbracOff and \EmbracOn 2013/03/22 - v0.3 - made definitions robust where appropriate - added support for `fontspec's \textsi -2013/04/04 - v0.3a - bug fix in \EmbracOn and \EmbracOff \ No newline at end of file +2013/04/04 - v0.3a - bug fix in \EmbracOn and \EmbracOff +2013/05/13 - v0.4 - added versions of \AddEmph, \RenewEmph, \DeleteEmph and + \ChangeEmph that allow setting opening or closing parts + separately \ No newline at end of file -- cgit v1.2.3