diff options
author | Karl Berry <karl@freefriends.org> | 2013-03-23 22:58:28 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-03-23 22:58:28 +0000 |
commit | 095a7aacbb0570f22a9c11a51344b19a0d1864a3 (patch) | |
tree | f56cbc1380680ee0fc441bcffe15df0ef05b54be /Master/texmf-dist/tex | |
parent | 3a74588a2b3757c50ec874665dce95be0139db0b (diff) |
embrac (23mar13)
git-svn-id: svn://tug.org/texlive/trunk@29483 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/embrac/embrac.sty | 113 |
1 files changed, 83 insertions, 30 deletions
diff --git a/Master/texmf-dist/tex/latex/embrac/embrac.sty b/Master/texmf-dist/tex/latex/embrac/embrac.sty index 30ee698d037..c5967aa1fb4 100644 --- a/Master/texmf-dist/tex/latex/embrac/embrac.sty +++ b/Master/texmf-dist/tex/latex/embrac/embrac.sty @@ -8,7 +8,7 @@ % Web: https://bitbucket.org/cgnieder/embrac/ % E-Mail: contact@mychemistry.eu % -------------------------------------------------------------------------- -% Copyright 2012 Clemens Niederberger +% Copyright 2012--2013 Clemens Niederberger % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 @@ -34,8 +34,8 @@ \RequirePackage { expl3 , xparse , l3keys2e } \ProvidesExplPackage {embrac} - {2012/11/04} - {0.2} + {2013/03/22} + {0.3} {Upright Brackets in Emphasized Text} \bool_new:N \l__embrac_treat_biblatex_bool @@ -60,26 +60,35 @@ 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 } +\prg_new_conditional:Npnn \__embrac_if_fontspec: { T } + { + \@ifpackageloaded{fontspec} + { \prg_return_true: } + { \prg_return_false: } + } -\cs_new_eq:Nc \__embrac_orig_textit:n { textit~ } -\cs_generate_variant:Nn \__embrac_orig_textit:n { V } +% save original commands, delay until begin document to catch `fontspec's +% redefinitions: +\AtBeginDocument{ + \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 } + \__embrac_if_fontspec:T + { + \cs_new_eq:Nc \__embrac_orig_textsi:n { textsi~ } + \cs_generate_variant:Nn \__embrac_orig_textsi: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 +\prg_new_conditional:Npnn \__embrac_empty_or_no_value:n #1 { F,TF } { - \IfNoValueTF { #1 } { #2 } - { \tl_if_blank:nTF { #1 } { #2 } { #3 } } - } -\cs_new:Npn \__embrac_empty_or_no_value:nF #1#2 - { - \IfNoValueF { #1 } - { \tl_if_blank:nF { #1 } { #2 } } + \IfNoValueTF { #1 } { \prg_return_true: } + { \tl_if_blank:nTF { #1 } { \prg_return_true: } { \prg_return_false: } } } % -------------------------------------------------------------------------- @@ -91,7 +100,7 @@ \prop_new:N \l__embrac_emph_cbrackets_after_prop % do the replacing: -\cs_new:Npn \__embrac_replace_brackets:N #1 +\cs_new_protected:Npn \__embrac_replace_brackets:N #1 { \prop_map_inline:Nn \l__embrac_emph_obrackets_prop { @@ -117,7 +126,7 @@ } % internal \emph command: -\cs_new:Npn \__embrac_emph:n #1 +\cs_new_protected:Npn \__embrac_emph:n #1 { \tl_set:Nx \l__embrac_tmpa_tl { #1 } \__embrac_replace_brackets:N \l__embrac_tmpa_tl @@ -125,15 +134,28 @@ } % internal \textit command: -\cs_new:Npn \__embrac_textit:n #1 +\cs_new_protected:Npn \__embrac_textit:n #1 { \tl_set:Nn \l__embrac_tmpa_tl { #1 } \__embrac_replace_brackets:N \l__embrac_tmpa_tl \__embrac_orig_textit:V \l__embrac_tmpa_tl } +% internal \textsi command: +\AtBeginDocument{ + \__embrac_if_fontspec:T + { + \cs_new_protected:Npn \__embrac_textsi:n #1 + { + \tl_set:Nn \l__embrac_tmpa_tl { #1 } + \__embrac_replace_brackets:N \l__embrac_tmpa_tl + \__embrac_orig_textsi:V \l__embrac_tmpa_tl + } + } + } + % biblatex compatibility: -\cs_new:Npn \__embrac_treat_bibparens: +\cs_new_protected:Npn \__embrac_treat_bibparens: { \bool_if:NT \l__embrac_treat_biblatex_bool { @@ -144,7 +166,7 @@ } } -\cs_new:Npn \__embrac_treat_bibemph: +\cs_new_protected:Npn \__embrac_treat_bibemph: { \bool_if:NT \l__embrac_treat_biblatex_bool { @@ -176,6 +198,22 @@ \group_end: } +% internal \textsi command, second layer: +\AtBeginDocument{ + \__embrac_if_fontspec:T + { + \cs_new_protected:Npn \__embrac_new_textsi:w #1#2 + { + \group_begin: + \__embrac_treat_bibparens: + \IfBooleanTF { #1 } + { \__embrac_orig_textsi:n { #2 } } + { \__embrac_textsi:n { #2 } } + \group_end: + } + } + } + % user command \emph: \RenewDocumentCommand \emph { sm } { \__embrac_new_emph:w #1 { #2 } } @@ -184,6 +222,15 @@ \RenewDocumentCommand \textit { sm } { \__embrac_new_textit:w #1 { #2 } } +% user command \textsi: +\AtBeginDocument{ + \__embrac_if_fontspec:T + { + \RenewDocumentCommand \textsi { sm } + { \__embrac_new_textsi:w #1 { #2 } } + } + } + % -------------------------------------------------------------------------- % TURNING EMBRAC OFF AND ON: % turning embrac off: @@ -193,6 +240,8 @@ { \__embrac_orig_emph:n { ##2 } } \RenewDocumentCommand \textit { sm } { \__embrac_orig_textit:n { ##2 } } + \RenewDocumentCommand \textsi { sm } + { \__embrac_orig_textsi:n { ##2 } } } % turning embrac on: @@ -202,12 +251,14 @@ { \__embrac_new_emph:w ##1 { ##2 } } \RenewDocumentCommand \textit { sm } { \__embrac_new_textit:w ##1 { ##2 } } + \RenewDocumentCommand \textsi { sm } + { \__embrac_new_textsi: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_protected: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 } } @@ -224,16 +275,16 @@ } % internal delete command: -\cs_new:Npn \__embrac_remove_from_emph:nn #1#2 +\cs_new_protected: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_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:Npn \__embrac_renew_emph:nnnnnn #1#2#3#4#5#6 +\cs_new_protected: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 } } @@ -250,7 +301,7 @@ } % internal change command: -\cs_new:Npn \__embrac_change_emph:nnnnnn #1#2#3#4#5#6 +\cs_new_protected:Npn \__embrac_change_emph:nnnnnn #1#2#3#4#5#6 { \prop_if_in:NnT \l__embrac_emph_obrackets_prop { #1 } { @@ -320,4 +371,6 @@ 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 2012/11/04 - v0.2 - extended `biblatex' option: parens/full - - changed buggy definition of \EmbracOff and \EmbracOn
\ No newline at end of file + - changed buggy definition of \EmbracOff and \EmbracOn +2013/03/22 - v0.3 - made definitions robust where appropriate + - added support for `fontspec's \textsi
\ No newline at end of file |