diff options
author | Karl Berry <karl@freefriends.org> | 2012-11-04 23:00:14 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-11-04 23:00:14 +0000 |
commit | 2314afd4e69719c52c7648994f64b3516aa6dc4c (patch) | |
tree | 9a72abacea42a38ac5eb1b0abce6677e64fcbe8d /Master/texmf-dist/tex/latex/embrac/embrac.sty | |
parent | 4ad5f264cbabe349af723bb3c5f3c86cafa2c3b1 (diff) |
embrac (4nov12)
git-svn-id: svn://tug.org/texlive/trunk@28173 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/embrac/embrac.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/embrac/embrac.sty | 238 |
1 files changed, 138 insertions, 100 deletions
diff --git a/Master/texmf-dist/tex/latex/embrac/embrac.sty b/Master/texmf-dist/tex/latex/embrac/embrac.sty index c9392c2c0f9..30ee698d037 100644 --- a/Master/texmf-dist/tex/latex/embrac/embrac.sty +++ b/Master/texmf-dist/tex/latex/embrac/embrac.sty @@ -34,31 +34,49 @@ \RequirePackage { expl3 , xparse , l3keys2e } \ProvidesExplPackage {embrac} - {2012/07/24} - {0.1b} + {2012/11/04} + {0.2} {Upright Brackets in Emphasized Text} -\bool_new:N \l_embrac_treat_biblatex_bool +\bool_new:N \l__embrac_treat_biblatex_bool +\tl_new:N \l__embrac_tmpa_tl +\tl_new:N \l__embrac_treat_biblatex_tl \keys_define:nn { embrac } - { biblatex .bool_set:N = \l_embrac_treat_biblatex_bool } + { + biblatex .choice: , + biblatex / true .code:n = + \bool_set_true:N \l__embrac_treat_biblatex_bool , + biblatex / on .code:n = + \bool_set_true:N \l__embrac_treat_biblatex_bool , + biblatex / parens .code:n = + \bool_set_true:N \l__embrac_treat_biblatex_bool , + biblatex / false .code:n = + \bool_set_false:N \l__embrac_treat_biblatex_bool , + biblatex / off .code:n = + \bool_set_false:N \l__embrac_treat_biblatex_bool , + biblatex / none .code:n = + \bool_set_false:N \l__embrac_treat_biblatex_bool , + biblatex .default:n = true + } % save original commands: -\cs_new_eq:Nc \embrac_orig_emph:n { emph~ } -\cs_generate_variant:Nn \embrac_orig_emph:n { V } +\cs_new_eq:Nc \__embrac_orig_emph:n { emph~ } +\cs_generate_variant:Nn \__embrac_orig_emph:n { V } -\cs_new_eq:Nc \embrac_orig_textit:n { textit~ } -\cs_generate_variant:Nn \embrac_orig_textit:n { V } +\cs_new_eq:Nc \__embrac_orig_textit:n { textit~ } +\cs_generate_variant:Nn \__embrac_orig_textit:n { V } % preparations: \cs_new_eq:NN \embrac_braces_format:n \textup -\cs_new_eq:NN \embrac_kern:n \skip_horizontal:n -\cs_new:Npn \embrac_empty_or_no_value:nTF #1#2#3 +\cs_new_eq:NN \__embrac_kern:n \skip_horizontal:n + +\cs_new:Npn \__embrac_empty_or_no_value:nTF #1#2#3 { \IfNoValueTF { #1 } { #2 } { \tl_if_blank:nTF { #1 } { #2 } { #3 } } } -\cs_new:Npn \embrac_empty_or_no_value:nF #1#2 +\cs_new:Npn \__embrac_empty_or_no_value:nF #1#2 { \IfNoValueF { #1 } { \tl_if_blank:nF { #1 } { #2 } } @@ -67,170 +85,186 @@ % -------------------------------------------------------------------------- % THE MAIN PART: % storage of the tokens to be replaced: -\prop_new:N \l_embrac_emph_obrackets_prop -\prop_new:N \l_embrac_emph_obrackets_before_prop -\prop_new:N \l_embrac_emph_cbrackets_prop -\prop_new:N \l_embrac_emph_cbrackets_after_prop +\prop_new:N \l__embrac_emph_obrackets_prop +\prop_new:N \l__embrac_emph_obrackets_before_prop +\prop_new:N \l__embrac_emph_cbrackets_prop +\prop_new:N \l__embrac_emph_cbrackets_after_prop % do the replacing: -\cs_new:Npn \embrac_replace_brackets:N #1 +\cs_new:Npn \__embrac_replace_brackets:N #1 { - \prop_map_inline:Nn \l_embrac_emph_obrackets_prop + \prop_map_inline:Nn \l__embrac_emph_obrackets_prop { \tl_replace_all:Nnn #1 { ##1 } { - \embrac_kern:n - { \prop_get:Nn \l_embrac_emph_obrackets_before_prop { ##1 } } - \embrac_braces_format:n { ##1 \embrac_kern:n { ##2 } } + \__embrac_kern:n + { \prop_get:Nn \l__embrac_emph_obrackets_before_prop { ##1 } } + \embrac_braces_format:n { ##1 \__embrac_kern:n { ##2 } } + \nobreak } } - \prop_map_inline:Nn \l_embrac_emph_cbrackets_prop + \prop_map_inline:Nn \l__embrac_emph_cbrackets_prop { \tl_replace_all:Nnn #1 { ##1 } { + \nobreak \embrac_braces_format:n - { \embrac_kern:n { ##2 } ##1 } - \embrac_kern:n - { \prop_get:Nn \l_embrac_emph_cbrackets_after_prop { ##1 } } + { \__embrac_kern:n { ##2 } ##1 } + \__embrac_kern:n + { \prop_get:Nn \l__embrac_emph_cbrackets_after_prop { ##1 } } } } } % internal \emph command: -\cs_new:Npn \embrac_emph:n #1 +\cs_new:Npn \__embrac_emph:n #1 { - \tl_set:Nn \l_tmpa_tl { #1 } - \embrac_replace_brackets:N \l_tmpa_tl - \embrac_orig_emph:V \l_tmpa_tl + \tl_set:Nx \l__embrac_tmpa_tl { #1 } + \__embrac_replace_brackets:N \l__embrac_tmpa_tl + \__embrac_orig_emph:V \l__embrac_tmpa_tl } % internal \textit command: -\cs_new:Npn \embrac_textit:n #1 +\cs_new:Npn \__embrac_textit:n #1 { - \tl_set:Nn \l_tmpa_tl { #1 } - \embrac_replace_brackets:N \l_tmpa_tl - \embrac_orig_textit:V \l_tmpa_tl + \tl_set:Nn \l__embrac_tmpa_tl { #1 } + \__embrac_replace_brackets:N \l__embrac_tmpa_tl + \__embrac_orig_textit:V \l__embrac_tmpa_tl } % biblatex compatibility: -\cs_new:Npn \embrac_treat_biblatex: +\cs_new:Npn \__embrac_treat_bibparens: + { + \bool_if:NT \l__embrac_treat_biblatex_bool + { + \__embrac_replace_brackets:N \bibleftbracket + \__embrac_replace_brackets:N \bibrightbracket + \__embrac_replace_brackets:N \bibleftparen + \__embrac_replace_brackets:N \bibrightparen + } + } + +\cs_new:Npn \__embrac_treat_bibemph: { - \bool_if:NT \l_embrac_treat_biblatex_bool + \bool_if:NT \l__embrac_treat_biblatex_bool { - \embrac_replace_brackets:N \bibleftbracket - \embrac_replace_brackets:N \bibrightbracket - \embrac_replace_brackets:N \bibleftparen - \embrac_replace_brackets:N \bibrightparen - } + \patchcmd[\protected\long]\blx@imc@mkbibemph + {\emph}{\emph*} + {}{} + } } % internal \emph command, second layer: -\cs_new_protected:Npn \embrac_new_emph:w #1#2 +\cs_new_protected:Npn \__embrac_new_emph:w #1#2 { \group_begin: - \embrac_treat_biblatex: + \__embrac_treat_bibparens: \IfBooleanTF { #1 } - { \embrac_orig_emph:n { #2 } } - { \embrac_emph:n { #2 } } + { \__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:w #1#2 { \group_begin: - \embrac_treat_biblatex: + \__embrac_treat_bibparens: \IfBooleanTF { #1 } - { \embrac_orig_textit:n { #2 } } - { \embrac_textit:n { #2 } } + { \__embrac_orig_textit:n { #2 } } + { \__embrac_textit:n { #2 } } \group_end: } % user command \emph: \RenewDocumentCommand \emph { sm } - { \embrac_new_emph:w #1 { #2 } } + { \__embrac_new_emph:w #1 { #2 } } % user command \textit: \RenewDocumentCommand \textit { sm } - { \embrac_new_emph:w #1 { #2 } } + { \__embrac_new_textit:w #1 { #2 } } % -------------------------------------------------------------------------- % TURNING EMBRAC OFF AND ON: % turning embrac off: \NewDocumentCommand \EmbracOff {} { - \cs_set_eq:NN \emph \embrac_orig_emph:n - \cs_set_eq:NN \textit \embrac_orig_textit:n + \RenewDocumentCommand \emph { sm } + { \__embrac_orig_emph:n { ##2 } } + \RenewDocumentCommand \textit { sm } + { \__embrac_orig_textit:n { ##2 } } } % turning embrac on: \NewDocumentCommand \EmbracOn {} { - \cs_set_eq:NN \emph \embrac_new_emph:w - \cs_set_eq:NN \textit \embrac_new_textit:w + \RenewDocumentCommand \emph { sm } + { \__embrac_new_emph:w ##1 { ##2 } } + \RenewDocumentCommand \textit { sm } + { \__embrac_new_textit:w ##1 { ##2 } } } % -------------------------------------------------------------------------- % ADDING AND REMOVING BRACKETS: % internal add command: -\cs_new:Npn \embrac_add_to_emph:nnnnnn #1#2#3#4#5#6 +\cs_new:Npn \__embrac_add_to_emph:nnnnnn #1#2#3#4#5#6 { - \embrac_empty_or_no_value:nTF { #2 } - { \prop_put_if_new:Nnn \l_embrac_emph_obrackets_prop { #1 } { 0pt } } - { \prop_put_if_new:Nnn \l_embrac_emph_obrackets_prop { #1 } { #2 } } - \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 } } + \__embrac_empty_or_no_value:nTF { #2 } + { \prop_put_if_new:Nnn \l__embrac_emph_obrackets_prop { #1 } { 0pt } } + { \prop_put_if_new:Nnn \l__embrac_emph_obrackets_prop { #1 } { #2 } } + \__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:Npn \embrac_remove_from_emph:nn #1#2 +\cs_new:Npn \__embrac_remove_from_emph:nn #1#2 { - \prop_del:Nn \l_embrac_emph_obrackets_prop { #1 } - \prop_del:Nn \l_embrac_emph_obrackets_before_prop { #1 } - \prop_del:Nn \l_embrac_emph_cbrackets_prop { #2 } - \prop_del:Nn \l_embrac_emph_cbrackets_after_prop { #2 } + \prop_del:Nn \l__embrac_emph_obrackets_prop { #1 } + \prop_del:Nn \l__embrac_emph_obrackets_before_prop { #1 } + \prop_del:Nn \l__embrac_emph_cbrackets_prop { #2 } + \prop_del:Nn \l__embrac_emph_cbrackets_after_prop { #2 } } % internal renew command: -\cs_new:Npn \embrac_renew_emph:nnnnnn #1#2#3#4#5#6 +\cs_new:Npn \__embrac_renew_emph:nnnnnn #1#2#3#4#5#6 { - \embrac_empty_or_no_value:nTF { #2 } - { \prop_put:Nnn \l_embrac_emph_obrackets_prop { #1 } { 0pt } } - { \prop_put:Nnn \l_embrac_emph_obrackets_prop { #1 } { #2 } } - \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 } } + \__embrac_empty_or_no_value:nTF { #2 } + { \prop_put:Nnn \l__embrac_emph_obrackets_prop { #1 } { 0pt } } + { \prop_put:Nnn \l__embrac_emph_obrackets_prop { #1 } { #2 } } + \__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:Npn \embrac_change_emph:nnnnnn #1#2#3#4#5#6 +\cs_new:Npn \__embrac_change_emph:nnnnnn #1#2#3#4#5#6 { - \prop_if_in:NnT \l_embrac_emph_obrackets_prop { #1 } + \prop_if_in:NnT \l__embrac_emph_obrackets_prop { #1 } { - \embrac_empty_or_no_value:nF { #2 } - { \prop_put:Nnn \l_embrac_emph_obrackets_prop { #1 } { #2 } } - \embrac_empty_or_no_value:nF { #3 } - { \prop_put:Nnn \l_embrac_emph_obrackets_before_prop { #1 } { #3 } } + \__embrac_empty_or_no_value:nF { #2 } + { \prop_put:Nnn \l__embrac_emph_obrackets_prop { #1 } { #2 } } + \__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 } + \prop_if_in:NnT \l__embrac_emph_cbrackets_prop { #4 } { - \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 { #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 } } } } @@ -241,13 +275,13 @@ m > { \SplitArgument { 1 } { , } } O{,} } { - \embrac_add_to_emph:nnnnnn { #1 } #2 { #3 } #4 + \__embrac_add_to_emph:nnnnnn { #1 } #2 { #3 } #4 \ignorespaces } \NewDocumentCommand \DeleteEmph { mm } { - \embrac_remove_from_emph:nn { #1 } { #2 } + \__embrac_remove_from_emph:nn { #1 } { #2 } \ignorespaces } @@ -257,7 +291,7 @@ m > { \SplitArgument { 1 } { , } } O{,} } { - \embrac_renew_emph:nnnnnn { #1 } #2 { #3 } #4 + \__embrac_renew_emph:nnnnnn { #1 } #2 { #3 } #4 \ignorespaces } @@ -267,7 +301,7 @@ m > { \SplitArgument { 1 } { , } } O{,} } { - \embrac_change_emph:nnnnnn { #1 } #2 { #3 } #4 + \__embrac_change_emph:nnnnnn { #1 } #2 { #3 } #4 \ignorespaces } @@ -277,9 +311,13 @@ \ProcessKeysOptions { embrac } +\AtBeginDocument { \__embrac_treat_bibemph: } + \tex_endinput:D % HISTORY 2012/06/29 - v0.1 - first public release 2012/06/29 - v0.1a - renamed \RenewEmph => \ChangeEmph and added new \RenewEmph -2012/07/24 - v0.1b - adapted to deprecated functions in l3kernel and l3packages
\ No newline at end of file +2012/07/24 - v0.1b - adapted to deprecated functions in l3kernel and l3packages +2012/11/04 - v0.2 - extended `biblatex' option: parens/full + - changed buggy definition of \EmbracOff and \EmbracOn
\ No newline at end of file |