| @@ -25,6 +25,7 @@ | |||
| \RequirePackage{bookmark} | |||
| \RequirePackage{wasysym} | |||
| \RequirePackage{environ} | |||
| \RequirePackage{stackrel} | |||
| \usetikzlibrary{quotes, angles} | |||
| @@ -134,8 +135,8 @@ | |||
| % better stackrel | |||
| \let\oldstackrel\stackrel | |||
| \renewcommand{\stackrel}[2]{% | |||
| \oldstackrel{\mathclap{#1}}{#2} | |||
| \renewcommand{\stackrel}[3][]{% | |||
| \oldstackrel[\mathclap{#1}]{\mathclap{#2}}{#3} | |||
| }% | |||
| % integral d sign | |||
| @@ -183,6 +184,7 @@ | |||
| \box_new:N \l_tmp_box | |||
| \dim_new:N \l_tmp_dim_a | |||
| \dim_new:N \l_tmp_dim_b | |||
| \dim_new:N \l_tmp_dim_c | |||
| \dim_new:N \l_tmp_dim_needed | |||
| % function to insert padding according to widest stackrel | |||
| @@ -190,7 +192,7 @@ | |||
| { | |||
| \tl_set:Nn \l__lec_text_tl { #1 } | |||
| % get all stackrels in this align environment | |||
| \regex_extract_all:nnN { \c{stackrel}{(.*?)}{(.*?)} } { #1 } \l_lec_stackrels_seq | |||
| \regex_extract_all:nnN { \c{stackrel}(\[.*?\])?{(.*?)}{(.*?)} } { #1 } \l_lec_stackrels_seq | |||
| % get number of stackrels | |||
| \int_set:Nn \l_stackrel_count_int { \seq_count:N \l_lec_stackrels_seq } | |||
| \int_set:Nn \l_idx_int { 1 } | |||
| @@ -201,30 +203,28 @@ | |||
| % calculate width of text | |||
| \hbox_set:Nn \l_tmp_box {$\seq_item:Nn \l_lec_stackrels_seq { \l_idx_int + 1 }$} | |||
| \dim_set:Nn \l_tmp_dim_a {\box_wd:N \l_tmp_box} | |||
| % calculate width of relation symbol | |||
| \hbox_set:Nn \l_tmp_box {$\seq_item:Nn \l_lec_stackrels_seq { \l_idx_int + 2 }$} | |||
| \dim_set:Nn \l_tmp_dim_c {\box_wd:N \l_tmp_box} | |||
| \dim_set:Nn \l_tmp_dim_a {\dim_max:nn{ \l_tmp_dim_c} {\l_tmp_dim_a}} | |||
| % calculate width of relation symbol | |||
| \hbox_set:Nn \l_tmp_box {$\seq_item:Nn \l_lec_stackrels_seq { \l_idx_int + 3 }$} | |||
| \dim_set:Nn \l_tmp_dim_b {\box_wd:N \l_tmp_box} | |||
| % check if 0.5*(a-b) > minimum padding, if yes updated minimum padding | |||
| \dim_compare:nNnTF | |||
| { 1pt * \dim_ratio:nn { \l_tmp_dim_a - \l_tmp_dim_b } { 2pt } } > { \l_tmp_dim_needed } | |||
| { \dim_set:Nn \l_tmp_dim_needed { 1pt * \dim_ratio:nn { \l_tmp_dim_a - \l_tmp_dim_b } { 2pt } } } | |||
| { } | |||
| \quad | |||
| % increment list index by three, as every stackrel produces three list entries | |||
| \int_incr:N \l_idx_int | |||
| \int_incr:N \l_idx_int | |||
| \int_incr:N \l_idx_int | |||
| \int_incr:N \l_idx_int | |||
| } | |||
| % replace all relations with align characters (&) and add the needed padding | |||
| \regex_replace_all:nnN | |||
| { (\c{iff}&|&\c{iff}|\c{impliedby}&|&\c{impliedby}|\c{implies}&|&\c{implies}|\c{approx}&|&\c{approx}|\c{equiv}&|&\c{equiv}|=&|&=|\c{le}&|&\c{le}|\c{ge}&|&\c{ge}|&\c{stackrel}{.*?}{.*?}|\c{stackrel}{.*?}{.*?}&|&\c{neq}|\c{neq}&|>&|&>|<&|&<) } | |||
| { (\c{iff}&|&\c{iff}|\c{impliedby}&|&\c{impliedby}|\c{implies}&|&\c{implies}|\c{approx}&|&\c{approx}|\c{equiv}&|&\c{equiv}|=&|&=|\c{le}&|&\c{le}|\c{ge}&|&\c{ge}|&\c{stackrel}(\[.*?\])?{.*?}{.*?}|\c{stackrel}(\[.*?\])?{.*?}{.*?}&|&\c{neq}|\c{neq}&|>&|&>|<&|&<) } | |||
| { \c{kern} \u{l_tmp_dim_needed} \1 \c{kern} \u{l_tmp_dim_needed} } | |||
| \l__lec_text_tl | |||
| % replace all parantheses with \left( \right) | |||
| %\regex_replace_all:nnN { \( } { \c{left}( } \l__lec_text_tl | |||
| %\regex_replace_all:nnN { \) } { \c{right}) } \l__lec_text_tl | |||
| %\regex_replace_all:nnN { \[ } { \c{left}[ } \l__lec_text_tl | |||
| %\regex_replace_all:nnN { \] } { \c{right}] } \l__lec_text_tl | |||
| \l__lec_text_tl | |||
| } | |||
| \cs_generate_variant:Nn \lec_insert_padding:n { V } | |||