summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/embrac/embrac.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/embrac/embrac.sty')
-rw-r--r--Master/texmf-dist/tex/latex/embrac/embrac.sty238
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