summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2022-07-20 20:26:32 +0000
committerKarl Berry <karl@freefriends.org>2022-07-20 20:26:32 +0000
commita09d76616470c8147791104c93bdb5d7379833df (patch)
treef6ec951925c4437c921a626cf9d05231cc66a32a /Master/texmf-dist/tex/latex
parentf58a715035d0d1b7397ec08fe7800dbcb4adfbbd (diff)
wrapstuff (20jul22)
git-svn-id: svn://tug.org/texlive/trunk@63949 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r--Master/texmf-dist/tex/latex/wrapstuff/wrapstuff.sty2323
1 files changed, 2323 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/wrapstuff/wrapstuff.sty b/Master/texmf-dist/tex/latex/wrapstuff/wrapstuff.sty
new file mode 100644
index 00000000000..4262f9debe2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/wrapstuff/wrapstuff.sty
@@ -0,0 +1,2323 @@
+%%
+%% This is file `wrapstuff.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% wrapstuff.dtx (with options: `package')
+%%
+%% Copyright (C) 2022 by Qing Lee <sobenlee@gmail.com>
+%% -----------------------------------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%% http://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainer of this work is Qing Lee.
+%%
+%% -----------------------------------------------------------------
+%%
+\NeedsTeXFormat{LaTeX2e}
+\@ifundefined{ExplLoaderFileDate}{\RequirePackage{expl3}}{}
+\GetIdInfo$Id: wrapstuff.dtx 564fe9d 2022-07-20 19:55:58 +0800 Qing Lee <sobenlee@gmail.com> $
+ {Wrapping text around stuff}
+\ProvidesExplPackage{\ExplFileName}
+ {\ExplFileDate}{0.1}{\ExplFileDescription}
+\@ifl@t@r \fmtversion { 2021-06-01 }
+ { }
+ {
+ \msg_new:nnn { wrapstuff } { latex-too-old }
+ {
+ You~need~to~update~your~LaTeX~to~the~latest~release. \\
+ Loading~wrapstuff~will~abort!
+ }
+ \msg_critical:nn { wrapstuff } { latex-too-old }
+ }
+\@ifl@t@r \ExplLoaderFileDate { 2022-04-10 }
+ { }
+ {
+ \msg_new:nnn { wrapstuff } { latex3-too-old }
+ {
+ You~need~to~update~your~installation~of~the~bundles~
+ "l3kernel"~and~"l3packages". \\
+ Loading~wrapstuff~will~abort!
+ }
+ \msg_critical:nn { wrapstuff } { latex3-too-old }
+ }
+\prop_gput:Nnn \g_msg_module_name_prop { wstf } { wrapstuff }
+\group_begin:
+\cs_set:Npn \__wstf_tmp:nn #1
+ {
+ \group_begin:
+ \exp_args:Ncc \__wstf_tmp_aux:NNn
+ { __wstf_if_last_ #1 : }
+ { c__wstf_ #1 _node }
+ }
+\cs_set:Npn \__wstf_tmp_aux:NNn #1#2#3
+ {
+ \group_end:
+ \int_const:Nn #2 {#3}
+ \prg_new_conditional:Npnn #1 { T , F , TF }
+ {
+ \if_int_compare:w \tex_lastnodetype:D = #2
+ \prg_return_true: \else: \prg_return_false: \fi:
+ }
+ }
+\__wstf_tmp:nn { none } { -1 }
+\__wstf_tmp:nn { hlist } { 1 }
+\__wstf_tmp:nn { whatsit } { 9 }
+\__wstf_tmp:nn { glue } { 11 }
+\__wstf_tmp:nn { kern } { 12 }
+\__wstf_tmp:nn { penalty } { 13 }
+\group_end:
+\cs_new_protected:Npn \__wstf_gadd_hook:nn #1
+ { \hook_gput_code:nnn {#1} { wrapstuff } }
+\cs_new_protected:Npn \__wstf_package_hook:nn #1
+ { \hook_gput_code:nnn { package/#1/after } { wrapstuff } }
+\NewDocumentEnvironment { wrapstuff } { O { } }
+ {
+ \__wstf_clear:
+ \int_set:Nn \l__wstf_top_int { -1 }
+ \tl_if_blank:nTF {#1}
+ { \tl_clear:N \l__wstf_main_kv_tl }
+ {
+ \keys_set_filter:nnnN { wrapstuff }
+ { main , ratio }
+ {#1} \l__wstf_main_kv_tl
+ }
+ \tl_set:Nx \l__wstf_type_tl { \l__wstf_type_tl }
+ \dim_set:Nn \l__wstf_width_dim { \l__wstf_width_tl }
+ \dim_set:Nn \l__wstf_height_dim { \l__wstf_height_tl }
+ \hbox_gset:Nw \g__wstf_stuff_box
+ \dim_compare:nNnTF \l__wstf_width_dim > \c_zero_dim
+ { \__wstf_minipage_begin: }
+ { \__wstf_hbox_begin: }
+ }
+ {
+ \dim_compare:nNnTF \l__wstf_width_dim > \c_zero_dim
+ { \__wstf_minipage_end: }
+ { \__wstf_hbox_end: }
+ \__wstf_set_vsep:
+ \__wstf_attach_label:
+ \tl_if_empty:NTF \l__wstf_main_kv_tl
+ { \tl_gclear:N \g__wstf_main_setting_tl }
+ { \__wstf_save_main_setting: }
+ \__wstf_set_top_line:
+ \dim_gset:Nn \g__wstf_stuff_wd_dim
+ { \box_wd:N \g__wstf_stuff_box }
+ \dim_gset:Nn \g__wstf_stuff_ht_dim
+ { \box_ht_plus_dp:N \g__wstf_stuff_box }
+ \dim_gset_eq:NN
+ \g__wstf_remaining_dim
+ \g__wstf_stuff_ht_dim
+ \__wstf_next_para:
+ }
+\__wstf_gadd_hook:nn { env/wrapstuff/before } { \par }
+\cs_new_protected_nopar:Npn \__wstf_minipage_begin:
+ {
+ \__wstf_floatrow_hook:
+ \dim_compare:nNnTF \l__wstf_height_dim > \c_zero_dim
+ { \begin { minipage } [b] [ \l__wstf_height_dim ] [c] { \l__wstf_width_dim } }
+ { \begin { minipage } [b] { \l__wstf_width_dim } }
+ \tl_if_empty:NF \l__wstf_type_tl
+ { \__wstf_set_float: }
+ }
+\cs_new_protected_nopar:Npn \__wstf_minipage_end:
+ {
+ \end { minipage }
+ \hbox_gset_end:
+ \__wstf_float_pos_hook:
+ }
+\cs_new_protected_nopar:Npn \__wstf_hbox_begin:
+ { \tex_ignorespaces:D }
+\cs_new_protected_nopar:Npn \__wstf_hbox_end:
+ {
+ \tex_unskip:D
+ \hbox_gset_end:
+ \dim_compare:nNnT \l__wstf_height_dim > \c_zero_dim
+ { \__wstf_gset_height: }
+ }
+\cs_new_protected_nopar:Npn \__wstf_gset_height:
+ {
+ \hbox_gset:Nn \g__wstf_stuff_box
+ {
+ \box_move_up:nn
+ {
+ ( \l__wstf_height_dim
+ - \box_ht:N \g__wstf_stuff_box
+ + \box_dp:N \g__wstf_stuff_box
+ ) / 2
+ }
+ { \box_use_drop:N \g__wstf_stuff_box }
+ }
+ \box_gset_ht:Nn \g__wstf_stuff_box { \l__wstf_height_dim }
+ \box_gset_dp:Nn \g__wstf_stuff_box { \c_zero_dim }
+ }
+\cs_new_protected_nopar:Npn \__wstf_set_vsep:
+ {
+ \__wstf_gadd_ht:Nn \g__wstf_stuff_box { \l__wstf_abovesep_tl }
+ \dim_set:Nn \l__wstf_shift_dim { \l__wstf_belowsep_tl }
+ \dim_compare:nNnF \l__wstf_shift_dim = \c_zero_dim
+ { \__wstf_set_belowsep: }
+ }
+\cs_new_protected_nopar:Npn \__wstf_set_belowsep:
+ {
+ \hbox_gset:Nn \g__wstf_stuff_box
+ {
+ \box_move_up:nn
+ { \l__wstf_shift_dim + \box_dp:N \g__wstf_stuff_box }
+ { \box_use_drop:N \g__wstf_stuff_box }
+ }
+ \box_gset_dp:Nn \g__wstf_stuff_box { \c_zero_dim }
+ }
+\tl_new:N \l__wstf_main_kv_tl
+\tl_new:N \g__wstf_main_setting_tl
+\box_new:N \g__wstf_stuff_box
+\dim_new:N \g__wstf_stuff_ht_dim
+\dim_new:N \g__wstf_stuff_wd_dim
+\dim_new:N \l__wstf_shift_dim
+\dim_new:N \l__wstf_width_dim
+\dim_new:N \l__wstf_height_dim
+\dim_new:N \g__wstf_prevdepth_dim
+\dim_new:N \g__wstf_remaining_dim
+\cs_new_protected_nopar:Npn \__wstf_attach_label:
+ {
+ \stepcounter { wrapstuff }
+ \hbox_gset:Nn \g__wstf_stuff_box
+ {
+ \__wstf_write_label:
+ \box_use_drop:N \g__wstf_stuff_box
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_write_label:
+ {
+ \iow_shipout_x:Nx \@auxout
+ {
+ \c_backslash_str wrapstuff@label
+ { \__wstf_counter:n { wrapstuff } }
+ { \exp_not:N \wrapstuff@counter { page } }
+ }
+ }
+\cs_new:Npn \__wstf_counter:n #1
+ { \int_value:w \value {#1} }
+\cs_new_eq:NN \wrapstuff@counter \__wstf_counter:n
+\cs_new_protected_nopar:Npn \wrapstuff@label
+ { \@newl@bel { wrapstuff@label } }
+\tl_const:Nn \c__wstf_label_tl
+ { wrapstuff@label@ \int_value:w \value { wrapstuff } }
+\__wstf_gadd_hook:nn { begindocument }
+ {
+ \legacy_if:nTF { @filesw }
+ {
+ \iow_now:Nx \@mainaux
+ {
+ \c_backslash_str providecommand
+ \c_backslash_str wrapstuff@label [2] { }
+ }
+ }
+ { \cs_gset_eq:NN \__wstf_write_label: \__wstf_empty: }
+ }
+\newcounter { wrapstuff }
+\cs_new_protected_nopar:Npn \__wstf_save_main_setting:
+ {
+ \exp_args:Nnno
+ \keys_set_filter:nnnN { wrapstuff }
+ { main }
+ { \l__wstf_main_kv_tl } \l__wstf_main_kv_tl
+ \bool_if:NTF \l__wstf_swap_bool
+ { \__wstf_swap_ratio: }
+ { \__wstf_set_ratio:N \l__wstf_ratio_fp }
+ \tl_if_empty:NF \l__wstf_main_kv_tl
+ { \__wstf_save_main_setting_aux: }
+ }
+\cs_new_protected:Npn \__wstf_set_ratio:N #1
+ {
+ \tl_gset:Nx \g__wstf_main_setting_tl
+ { \fp_set:Nn \exp_not:N \l__wstf_ratio_fp { \fp_use:N #1 } }
+ }
+\cs_new_protected:Npn \__wstf_set_ratio:n #1
+ {
+ \tl_gset:Nx \g__wstf_main_setting_tl
+ { \fp_set:Nn \exp_not:N \l__wstf_ratio_fp { \fp_eval:n {#1} } }
+ }
+\cs_new_protected_nopar:Npn \__wstf_save_main_setting_aux:
+ {
+ \exp_args:Nno
+ \keys_precompile:nnN
+ { wrapstuff }
+ { \l__wstf_main_kv_tl } \l__wstf_main_kv_tl
+ \tl_gconcat:NNN \g__wstf_main_setting_tl
+ \g__wstf_main_setting_tl \l__wstf_main_kv_tl
+ }
+\cs_new_protected_nopar:Npn \__wstf_set_top_line:
+ {
+ \int_compare:nNnF \l__wstf_top_int < \c_zero_int
+ {
+ \tl_gput_right:Nx \g__wstf_main_setting_tl
+ {
+ \int_set:Nn \l__wstf_top_int
+ { \int_use:N \l__wstf_top_int }
+ }
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_swap_ratio:
+ {
+ \fp_compare:nF
+ { \c_zero_fp < \l__wstf_ratio_fp < \c_one_fp }
+ { \fp_zero:N \l__wstf_ratio_fp }
+ \int_if_odd:nTF
+ {
+ \exp_args:Ne \cs_if_exist_use:cF
+ { \c__wstf_label_tl }
+ { \__wstf_counter:n { page } }
+ }
+ { \bool_if:NTF \l__wstf_inner_bool }
+ { \bool_if:NTF \l__wstf_outer_bool }
+ { \__wstf_set_ratio:N \l__wstf_ratio_fp }
+ { \__wstf_set_ratio:n { \c_one_fp - \l__wstf_ratio_fp } }
+ }
+\bool_new:N \l__wstf_swap_bool
+\bool_new:N \l__wstf_inner_bool
+\bool_new:N \l__wstf_outer_bool
+\cs_new_protected:Npn \__wstf_gadd_ht:Nn #1#2
+ { \box_gset_ht:Nn #1 { \box_ht:N #1 + \dim_eval:n {#2} } }
+\cs_new_protected:Npn \__wstf_gsub_ht:Nn #1#2
+ { \box_gset_ht:Nn #1 { \box_ht:N #1 - \dim_eval:n {#2} } }
+\cs_new_protected_nopar:Npn \__wstf_clear:
+ {
+ \__wstf_clear_para_hook:
+ \__wstf_clear_kludge:
+ \__wstf_clear_variable:
+ }
+\cs_new_protected_nopar:Npn \__wstf_clear_variable:
+ {
+ \int_gset:Nn \g__wstf_top_int { -1 }
+ \int_gzero:N \g__wstf_window_int
+ \dim_gzero:N \g__wstf_total_ht_dim
+ \dim_gzero:N \g__wstf_column_left_dim
+ \tl_gclear:N \g__wstf_main_setting_tl
+ \bool_gset_false:N \g__wstf_next_bool
+ \bool_gset_false:N \g__wstf_hoffset_bool
+ \bool_gset_false:N \g__wstf_next_hang_bool
+ \bool_gset_false:N \g__wstf_first_save_bool
+ \bool_gset_false:N \g__wstf_right_move_bool
+ \bool_gset_false:N \g__wstf_column_right_bool
+ }
+\cs_new_protected_nopar:Npn \__wstf_clear_kludge:
+ {
+ \bool_if:NTF \g__wstf_next_bool
+ {
+ \box_gclear:N \g__wstf_stuff_box
+ \skip_vertical:n
+ { \tex_baselineskip:D * \g__wstf_window_int }
+ }
+ {
+ \box_if_empty:NF \g__wstf_stuff_box
+ { \__wstf_clear_stuff_box: }
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_clear_stuff_box:
+ {
+ \__wstf_ignore_depth:
+ \skip_set:Nn \l__wstf_last_skip
+ { \box_dp:N \strutbox }
+ \skip_vertical:N \l__wstf_last_skip
+ \box_use_drop:N \g__wstf_stuff_box
+ \skip_vertical:N \l__wstf_last_skip
+ \__wstf_ignore_depth:
+ }
+\__wstf_gadd_hook:nn { para/before } { \__wstf_para_before: }
+\__wstf_gadd_hook:nn { para/begin } { \__wstf_para_begin: }
+\__wstf_gadd_hook:nn { para/end } { \__wstf_para_end: }
+\cs_new_protected_nopar:Npn \__wstf_next_para:
+ {
+ \cs_gset_eq:NN \__wstf_para_before: \__wstf_env_before:
+ \cs_gset_eq:NN \__wstf_para_begin: \__wstf_env_begin:
+ \cs_gset_eq:NN \__wstf_para_end: \__wstf_env_end:
+ }
+\cs_new_protected_nopar:Npn \__wstf_env_before:
+ { \dim_gset_eq:NN \g__wstf_prevdepth_dim \tex_prevdepth:D }
+\cs_new_protected_nopar:Npn \__wstf_env_begin:
+ { \begin { wrapstuff@par } }
+\cs_new_protected_nopar:Npn \__wstf_env_end:
+ { \end { wrapstuff@par } }
+\cs_new_protected_nopar:Npn \__wstf_clear_para_hook:
+ {
+ \cs_gset_eq:NN \__wstf_para_before: \__wstf_empty:
+ \cs_gset_eq:NN \__wstf_para_begin: \__wstf_empty:
+ \cs_gset_eq:NN \__wstf_para_end: \__wstf_empty:
+ }
+\cs_new_protected_nopar:Npn \__wstf_empty:
+ { }
+\cs_new_eq:NN \__wstf_para_before: \__wstf_empty:
+\cs_new_eq:NN \__wstf_para_begin: \__wstf_empty:
+\cs_new_eq:NN \__wstf_para_end: \__wstf_empty:
+\NewDocumentEnvironment { wrapstuff@par } { }
+ {
+ \tl_use:N \g__wstf_main_setting_tl
+ \dim_set:Nn \l__wstf_leftsep_dim { \l__wstf_leftsep_tl }
+ \dim_set:Nn \l__wstf_rightsep_dim { \l__wstf_rightsep_tl }
+ \dim_set:Nn \l__wstf_voffset_dim { \l__wstf_voffset_tl }
+ \dim_set:Nn \l__wstf_line_dim { \l__wstf_linewidth_tl }
+ \dim_set:Nn \l__wstf_min_dim { \box_dp:N \strutbox }
+ \dim_set_eq:NN \l__wstf_main_width_dim \l__wstf_line_dim
+ \dim_sub:Nn \l__wstf_line_dim
+ { \tex_leftskip:D + \tex_rightskip:D }
+ \dim_set:Nn \l__wstf_window_dim
+ { \l__wstf_line_dim - \g__wstf_stuff_wd_dim }
+ \fp_compare:nNnTF \l__wstf_ratio_fp > \c_zero_fp
+ {
+ \fp_compare:nNnTF \l__wstf_ratio_fp < \c_one_fp
+ { \__wstf_set_window: }
+ { \__wstf_set_hang_right: }
+ }
+ { \__wstf_set_hang_left: }
+ \int_compare:nNnTF \g__wstf_window_int > \c_zero_int
+ {
+ \int_set_eq:NN \l__wstf_window_int \g__wstf_window_int
+ \int_zero:N \l__wstf_top_int
+ }
+ { \__wstf_set_lines: }
+ \bool_if:NTF \l__wstf_hang_bool
+ {
+ \dim_set_eq:NN \l__wstf_display_dim \l__wstf_window_dim
+ \int_set_eq:NN \l__wstf_window_line_int \l__wstf_window_int
+ }
+ {
+ \dim_set_eq:NN \l__wstf_display_dim \l__wstf_l_dim
+ \int_set:Nn \l__wstf_window_int { \l__wstf_window_int * 2 }
+ \int_set:Nn \l__wstf_window_line_int
+ {
+ \bool_if:NTF \g__wstf_column_right_bool
+ { \l__wstf_window_int / 2 + \g__wstf_column_window_int }
+ { \l__wstf_window_int }
+ }
+ }
+ \cs_gset_eq:NN \__wstf_para_before: \__wstf_empty:
+ \cs_gset_eq:NN \__wstf_para_begin: \__wstf_empty:
+ \__wstf_save_parshape:
+ \vbox_set:Nw \l__wstf_body_box
+ \__wstf_set_prevdepth:N \g__wstf_prevdepth_dim
+ \__wstf_save_tex_skip:
+ \__wstf_tex_parameter:
+ \__wstf_restore_parshape:
+ \__wstf_display_parameter:
+ \__wstf_make_main_parshape:
+ \para_raw_noindent:
+ }
+ {
+ \__wstf_save_hangfrom:
+ \__wstf_save_tex_skip:
+ \__wstf_group_kludge:
+ \__wstf_tex_parameter:
+ \__wstf_make_main_parshape:
+ \para_raw_end:
+ \int_gset_eq:NN \g__wstf_line_int \tex_prevgraf:D
+ \vbox_set_end:
+ \__wstf_adjust_tex_skip:
+ \cs_gset_eq:NN \__wstf_para_end: \__wstf_empty:
+ \int_compare:nNnTF \g__wstf_line_int > \l__wstf_top_int
+ { \__wstf_build_par: }
+ { \__wstf_put_par: }
+ }
+\box_new:N \l__wstf_body_box
+\box_new:N \l__wstf_window_box
+\int_new:N \l__wstf_window_int
+\int_new:N \g__wstf_window_int
+\int_new:N \g__wstf_line_int
+\int_new:N \l__wstf_window_line_int
+\int_new:N \g__wstf_column_window_int
+\dim_new:N \l__wstf_l_dim
+\dim_new:N \l__wstf_r_dim
+\dim_new:N \l__wstf_min_dim
+\dim_new:N \l__wstf_line_dim
+\dim_new:N \l__wstf_window_dim
+\dim_new:N \l__wstf_display_dim
+\dim_new:N \l__wstf_voffset_dim
+\dim_new:N \l__wstf_leftsep_dim
+\dim_new:N \l__wstf_rightsep_dim
+\dim_new:N \g__wstf_window_ht_dim
+\dim_new:N \l__wstf_main_width_dim
+\int_new:N \g__wstf_top_int
+\int_gdecr:N \g__wstf_top_int
+\bool_new:N \l__wstf_hang_bool
+\cs_new_protected_nopar:Npn \__wstf_set_hang_left:
+ {
+ \bool_set_true:N \l__wstf_hang_bool
+ \bool_if:NF \g__wstf_hoffset_bool
+ { \__wstf_set_hoffset:NN \l__wstf_rightsep_dim \use:nn }
+ \dim_sub:Nn \l__wstf_window_dim { \l__wstf_rightsep_dim }
+ \dim_zero:N \l__wstf_l_dim
+ \dim_set_eq:NN \l__wstf_r_dim \l__wstf_window_dim
+ \cs_set_eq:NN \__wstf_build_box: \__wstf_build_hang:
+ }
+\cs_new_protected_nopar:Npn \__wstf_set_hang_right:
+ {
+ \bool_set_true:N \l__wstf_hang_bool
+ \bool_if:NF \g__wstf_hoffset_bool
+ { \__wstf_set_hoffset:NN \l__wstf_leftsep_dim \use_ii_i:nn }
+ \dim_sub:Nn \l__wstf_window_dim { \l__wstf_leftsep_dim }
+ \dim_zero:N \l__wstf_r_dim
+ \dim_set_eq:NN \l__wstf_l_dim \l__wstf_window_dim
+ \cs_set_eq:NN \__wstf_build_box: \__wstf_build_hang:
+ }
+\cs_new_protected_nopar:Npn \__wstf_set_window:
+ {
+ \bool_set_false:N \l__wstf_hang_bool
+ \dim_sub:Nn \l__wstf_window_dim
+ { \l__wstf_leftsep_dim + \l__wstf_rightsep_dim }
+ \dim_set:Nn \l__wstf_l_dim
+ { \__wstf_ratio:Nn \l__wstf_ratio_fp { \l__wstf_window_dim } }
+ \dim_set:Nn \l__wstf_r_dim
+ { \l__wstf_window_dim - \l__wstf_l_dim }
+ \bool_if:NTF \l__wstf_column_bool
+ { \cs_set_eq:NN \__wstf_build_box: \__wstf_build_column: }
+ { \cs_set_eq:NN \__wstf_build_box: \__wstf_build_block: }
+ }
+\cs_new_protected:Npn \__wstf_set_hoffset:NN #1#2
+ {
+ \bool_gset_true:N \g__wstf_hoffset_bool
+ \dim_set:Nn \l__wstf_hoffset_width_dim
+ { #1 + \g__wstf_stuff_wd_dim }
+ \group_begin:
+ \cs_set_eq:NN \width \l__wstf_hoffset_width_dim
+ \dim_gset:Nn \g__wstf_hoffset_dim { \l__wstf_hoffset_tl }
+ \group_end:
+ \int_compare:nNnF \g__wstf_hoffset_dim = \c_zero_dim
+ {
+ \hbox_gset:Nn \g__wstf_stuff_box
+ {
+ #2 { \tex_kern:D - \g__wstf_hoffset_dim }
+ { \box_use_drop:N \g__wstf_stuff_box }
+ }
+ \dim_add:Nn \l__wstf_window_dim { \g__wstf_hoffset_dim }
+ }
+ }
+\dim_new:N \g__wstf_hoffset_dim
+\dim_new:N \l__wstf_hoffset_width_dim
+\bool_new:N \g__wstf_hoffset_bool
+\cs_new_protected_nopar:Npn \__wstf_set_lines:
+ {
+ \bool_if:NTF \g__wstf_next_bool
+ { \tl_clear:N \l__wstf_lines_tl }
+ { \tl_set:Nx \l__wstf_lines_tl { \l__wstf_lines_tl } }
+ \int_set:Nn \l__wstf_window_int
+ {
+ \tl_if_empty:NTF \l__wstf_lines_tl
+ { \__wstf_unit:n { \g__wstf_remaining_dim + \l__wstf_min_dim } }
+ { \l__wstf_lines_tl }
+ }
+ \bool_if:NF \g__wstf_next_bool
+ { \__wstf_window_init: }
+ \int_compare:nNnTF \g__wstf_top_int < \c_zero_int
+ {
+ \int_compare:nNnT \l__wstf_top_int < \c_zero_int
+ { \int_zero:N \l__wstf_top_int }
+ }
+ { \int_set_eq:NN \l__wstf_top_int \g__wstf_top_int }
+ }
+\cs_new_protected_nopar:Npn \__wstf_window_init:
+ {
+ \int_gset_eq:NN \g__wstf_column_window_int \l__wstf_window_int
+ \dim_gset:Nn \g__wstf_window_ht_dim
+ { \tex_baselineskip:D * \g__wstf_column_window_int }
+ \tl_if_empty:NF \l__wstf_lines_tl
+ {
+ \dim_gset:Nn \g__wstf_remaining_dim
+ { \g__wstf_window_ht_dim - \box_ht:N \strutbox }
+ \dim_gset_eq:NN \g__wstf_stuff_ht_dim \g__wstf_remaining_dim
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_make_main_parshape:
+ {
+ \dim_compare:nNnTF \g__wstf_hangindent_dim > \c_zero_dim
+ {
+ \int_compare:nNnTF \g__wstf_hangafter_int = \c_one_int
+ { \__wstf_make_hangfrom: }
+ { \__wstf_make_main_parshape_aux: }
+ }
+ { \__wstf_make_main_parshape_aux: }
+ }
+\cs_new_protected_nopar:Npn \__wstf_make_main_parshape_aux:
+ {
+ \bool_gset_false:N \g__wstf_hangfrom_bool
+ \tex_parshape:D
+ \int_eval:n { \l__wstf_top_int + 1 } ~
+ \prg_replicate:nn
+ { \l__wstf_top_int }
+ { \g__wstf_parshape_indent_dim \g__wstf_parshape_length_dim }
+ \c_zero_dim \c_max_dim
+ }
+\cs_new_protected_nopar:Npn \__wstf_save_parshape:
+ {
+ \int_gset_eq:NN \g__wstf_parshape_int \tex_parshape:D
+ \int_compare:nNnTF \g__wstf_parshape_int = \c_one_int
+ {
+ \dim_gset:Nn \g__wstf_parshape_indent_dim
+ { \tex_parshapeindent:D \c_one_int }
+ \dim_gset:Nn \g__wstf_parshape_length_dim
+ { \tex_parshapelength:D \c_one_int }
+ }
+ {
+ \int_gzero:N \g__wstf_parshape_int
+ \dim_gzero:N \g__wstf_parshape_indent_dim
+ \dim_gset_eq:NN \g__wstf_parshape_length_dim \l__wstf_main_width_dim
+ \int_gset_eq:NN \g__wstf_hangafter_int \tex_hangafter:D
+ \dim_gset_eq:NN \g__wstf_hangindent_dim \tex_hangindent:D
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_restore_parshape:
+ {
+ \int_compare:nNnTF \g__wstf_parshape_int = \c_one_int
+ {
+ \tex_parshape:D \g__wstf_parshape_int
+ \g__wstf_parshape_indent_dim \g__wstf_parshape_length_dim
+ }
+ { \__wstf_restore_hangfrom: }
+ }
+\cs_new_protected_nopar:Npn \__wstf_parshape_kern:
+ {
+ \dim_compare:nNnT \l__wstf_l_dim = \c_zero_dim
+ {
+ \dim_compare:nNnF \g__wstf_parshape_indent_dim = \c_zero_dim
+ { \tex_kern:D - \g__wstf_parshape_indent_dim }
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_make_hangfrom:
+ {
+ \bool_if:NTF \l__wstf_hang_bool
+ { \__wstf_make_hangfrom_aux: }
+ { \__wstf_make_main_parshape_aux: }
+ }
+\cs_new_protected_nopar:Npn \__wstf_make_hangfrom_aux:
+ {
+ \__wstf_restore_hangfrom:
+ \int_zero:N \tex_parshape:D
+ \bool_gset_true:N \g__wstf_hangfrom_bool
+ \dim_set_eq:NN \tex_hsize:D \l__wstf_window_dim
+ }
+\cs_new_protected_nopar:Npn \__wstf_save_hangfrom:
+ {
+ \int_gset_eq:NN \g__wstf_hangafter_int \tex_hangafter:D
+ \dim_gset_eq:NN \g__wstf_hangindent_dim \tex_hangindent:D
+ }
+\cs_new_protected_nopar:Npn \__wstf_restore_hangfrom:
+ {
+ \int_set_eq:NN \tex_hangafter:D \g__wstf_hangafter_int
+ \dim_set_eq:NN \tex_hangindent:D \g__wstf_hangindent_dim
+ }
+\bool_new:N \g__wstf_hangfrom_bool
+\int_new:N \g__wstf_parshape_int
+\int_new:N \g__wstf_hangafter_int
+\dim_new:N \g__wstf_hangindent_dim
+\dim_new:N \g__wstf_parshape_indent_dim
+\dim_new:N \g__wstf_parshape_length_dim
+\cs_new_protected_nopar:Npn \__wstf_group_kludge:
+ {
+ \scan_stop:
+ \int_compare:nNnTF \tex_currentgrouptype:D = \c_one_int
+ {
+ \c_group_end_token
+ \cs_gset_eq:NN \__wstf_group_begin: \c_group_begin_token
+ }
+ { \cs_gset_eq:NN \__wstf_group_begin: \__wstf_empty: }
+ \legacy_if:nTF { @noitemarg }
+ { \cs_gset_eq:NN \__wstf_set_itemarg: \@noitemargtrue }
+ { \cs_gset_eq:NN \__wstf_set_itemarg: \__wstf_empty: }
+ }
+\cs_new_eq:NN \__wstf_set_itemarg: \__wstf_empty:
+\cs_new_eq:NN \__wstf_group_begin: \__wstf_empty:
+\__wstf_gadd_hook:nn { env/wrapstuff@par/after }
+ {
+ \__wstf_set_itemarg:
+ \__wstf_group_begin:
+ }
+\cs_new:Npn \__wstf_ratio:Nn #1#2
+ { \fp_to_dim:n { #1 \dim_to_fp:n {#2} } }
+\cs_new:Npn \__wstf_unit:n #1
+ {
+ \fp_eval:n
+ {
+ ceil
+ (
+ \dim_to_decimal_in_unit:nn
+ {#1}
+ { \tex_baselineskip:D }
+ )
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_save_tex_skip:
+ {
+ \skip_gset_eq:NN \g__wstf_left_skip \tex_leftskip:D
+ \skip_gset_eq:NN \g__wstf_right_skip \tex_rightskip:D
+ \skip_gset_eq:NN \g__wstf_parfill_skip \tex_parfillskip:D
+ \skip_gset_eq:NN \g__wstf_baseline_skip \tex_baselineskip:D
+ \skip_gset:Nn \g__wstf_main_left_skip { - \tex_leftskip:D }
+ }
+\cs_new_protected_nopar:Npn \__wstf_adjust_tex_skip:
+ {
+ \__wstf_adjust_skip:N \g__wstf_left_skip
+ \__wstf_adjust_skip:N \g__wstf_right_skip
+ \__wstf_adjust_skip:N \g__wstf_parfill_skip
+ }
+\cs_new_protected:Npn \__wstf_adjust_skip:N #1
+ { \skip_gsub:Nn #1 { \dim_eval:n {#1} } }
+\cs_new_protected_nopar:Npn \__wstf_tex_parameter:
+ {
+ \int_zero:N \tex_clubpenalty:D
+ \int_zero:N \tex_widowpenalty:D
+ \int_zero:N \tex_interlinepenalty:D
+ \int_zero:N \tex_displaywidowpenalty:D
+ \int_zero:N \tex_clubpenalties:D
+ \int_zero:N \tex_widowpenalties:D
+ \int_zero:N \tex_interlinepenalties:D
+ \int_zero:N \tex_displaywidowpenalties:D
+ \skip_set_eq:NN \tex_leftskip:D \g__wstf_left_skip
+ \skip_set_eq:NN \tex_rightskip:D \g__wstf_right_skip
+ \skip_set_eq:NN \tex_parfillskip:D \g__wstf_parfill_skip
+ }
+\skip_new:N \g__wstf_left_skip
+\skip_new:N \g__wstf_right_skip
+\skip_new:N \g__wstf_parfill_skip
+\skip_new:N \g__wstf_baseline_skip
+\skip_new:N \g__wstf_main_left_skip
+\cs_new_protected_nopar:Npn \__wstf_display_parameter:
+ {
+ \bool_gset_false:N \g__wstf_display_bool
+ \tex_everydisplay:D \exp_after:wN
+ {
+ \tex_the:D \tex_everydisplay:D
+ \__wstf_test_leqno:
+ \dim_compare:nNnF \tex_displaywidth:D < \c_max_dim
+ {
+ \bool_gset_true:N \g__wstf_display_bool
+ \dim_set_eq:NN \tex_displaywidth:D \l__wstf_display_dim
+ }
+ }
+ }
+\cs_new_eq:NN \__wstf_test_leqno: \__wstf_empty:
+\bool_new:N \g__wstf_display_bool
+\cs_new_protected_nopar:Npn \__wstf_build_par:
+ {
+ \bool_if:NTF \g__wstf_hangfrom_bool
+ { \__wstf_build_box: }
+ { \__wstf_build_par_aux: }
+ \box_if_empty:NTF \l__wstf_window_box
+ { \__wstf_put_next_par: }
+ { \__wstf_put_box: }
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_par_aux:
+ {
+ \__wstf_extract_display_hbox:NN \l__wstf_body_box \l__wstf_bottom_box
+ \int_compare:nNnT \l__wstf_top_int > \c_zero_int
+ { \__wstf_put_body_box: }
+ \box_if_empty:NTF \l__wstf_bottom_box
+ {
+ \box_if_empty:NF \g__wstf_display_box
+ { \__wstf_build_display_box: }
+ }
+ { \__wstf_build_body_box: }
+ }
+\box_new:N \l__wstf_bottom_box
+\cs_new_protected_nopar:Npn \__wstf_put_par:
+ {
+ \int_gset:Nn \g__wstf_top_int
+ { \l__wstf_top_int - \g__wstf_line_int }
+ \int_gzero:N \g__wstf_window_int
+ \__wstf_put_body_box:
+ \skip_zero:N \tex_parskip:D
+ \para_raw_noindent:
+ \__wstf_next_para:
+ }
+\cs_new_protected_nopar:Npn \__wstf_put_body_box:
+ {
+ \para_raw_end:
+ \dim_compare:nNnTF { \box_wd:N \l__wstf_body_box } < \c_max_dim
+ { \__wstf_put_body_aux:N \l__wstf_body_box }
+ {
+ \__wstf_extract_hbox:NN \l__wstf_body_box \l__wstf_bottom_box
+ \__wstf_put_body_aux:N \l__wstf_body_box
+ \box_set_eq_drop:NN \l__wstf_body_box \l__wstf_bottom_box
+ }
+ \para_raw_end:
+ }
+\cs_new_protected_nopar:Npn \__wstf_put_body_aux:N #1
+ {
+ \dim_gset:Nn \g__wstf_prevdepth_dim { \box_dp:N #1 }
+ \vbox_unpack_drop:N #1
+ \__wstf_set_prevdepth:N \g__wstf_prevdepth_dim
+ }
+\cs_new_protected_nopar:Npn \__wstf_put_next_par:
+ {
+ \int_gzero:N \g__wstf_top_int
+ \int_gzero:N \g__wstf_window_int
+ \skip_zero:N \tex_parskip:D
+ \para_raw_noindent:
+ \__wstf_next_para:
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_display_box:
+ {
+ \bool_set_true:N \l__wstf_display_bool
+ \bool_if:NTF \g__wstf_amsmath_bool
+ { \__wstf_build_display_amsmath: }
+ { \__wstf_build_display_normal: }
+ \box_if_empty:NTF \l__wstf_body_box
+ { \__wstf_build_display_auxi: }
+ { \__wstf_build_display_auxii: }
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_display_amsmath:
+ {
+ \vbox_gset:Nn \g__wstf_equation_box
+ {
+ \skip_vertical:n { - \g__wstf_display_pre_skip }
+ \vbox_unpack_drop:N \g__wstf_display_box
+ \skip_gset_eq:NN \g__wstf_pos_skip \tex_lastskip:D
+ \tex_unskip:D
+ \int_gset_eq:NN \g__wstf_pos_int \tex_lastpenalty:D
+ \tex_unpenalty:D
+ \skip_gadd:Nn \g__wstf_pos_skip { \tex_lastskip:D }
+ \tex_unskip:D
+ \tex_unpenalty:D
+ }
+ \box_gset_wd:Nn \g__wstf_equation_box
+ { \l__wstf_display_dim }
+ \vbox_gset:Nn \g__wstf_display_box
+ {
+ \tex_penalty:D \g__wstf_display_pre_int
+ \skip_vertical:N \g__wstf_display_pre_skip
+ }
+ \skip_gset_eq:NN \g__wstf_pre_skip \g__wstf_display_pre_skip
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_display_normal:
+ {
+ \vbox_gset:Nn \g__wstf_display_box
+ {
+ \vbox_unpack_drop:N \g__wstf_display_box
+ \skip_gset_eq:NN \g__wstf_pos_skip \tex_lastskip:D
+ \tex_unskip:D
+ \int_gset_eq:NN \g__wstf_pos_int \tex_lastpenalty:D
+ \tex_unpenalty:D
+ \box_gset_to_last:N \g__wstf_equation_box
+ \skip_gset_eq:NN \g__wstf_pre_skip \tex_lastskip:D
+ \tex_unskip:D
+ \skip_gadd:Nn \g__wstf_pre_skip { \tex_lastskip:D }
+ \tex_unskip:D
+ \skip_vertical:N \g__wstf_pre_skip
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_display_auxi:
+ {
+ \bool_if:NTF \g__wstf_amsmath_bool
+ { \box_set_eq_drop:NN \l__wstf_window_box \g__wstf_equation_box }
+ {
+ \hbox_set_to_wd:Nnn \l__wstf_window_box
+ { \l__wstf_display_dim }
+ {
+ \tex_hss:D
+ \__wstf_adjust_equation:
+ \box_use_drop:N \g__wstf_equation_box
+ \tex_hss:D
+ }
+ }
+ \dim_gset:Nn \g__wstf_ht_dim { \box_ht:N \l__wstf_window_box }
+ \dim_add:Nn \l__wstf_voffset_dim
+ { \box_ht:N \g__wstf_display_box / 2 }
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_display_auxii:
+ {
+ \box_if_horizontal:NTF \l__wstf_body_box
+ {
+ \box_set_eq:NN \l__wstf_bottom_box \l__wstf_body_box
+ \__wstf_build_display_auxiii:
+ }
+ {
+ \__wstf_extract_hbox:NN \l__wstf_body_box \l__wstf_bottom_box
+ \str_if_eq:eeTF
+ {
+ \dim_eval:n { \box_ht:N \l__wstf_body_box }
+ \dim_eval:n { \box_dp:N \l__wstf_body_box }
+ \dim_eval:n { \box_ht:N \l__wstf_bottom_box }
+ \dim_eval:n { \box_dp:N \l__wstf_bottom_box }
+ }
+ { \c__wstf_zero_pt_str }
+ {
+ \vbox_unpack_drop:N \l__wstf_body_box
+ \box_clear:N \l__wstf_bottom_box
+ \__wstf_build_display_auxi:
+ }
+ { \__wstf_build_display_auxiii: }
+ }
+ }
+\str_const:Nx \c__wstf_zero_pt_str
+ {
+ \dim_use:N \c_zero_dim
+ \dim_use:N \c_zero_dim
+ \dim_use:N \c_zero_dim
+ \dim_use:N \c_zero_dim
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_display_auxiii:
+ {
+ \bool_set_true:N \l__wstf_attach_equation_bool
+ \bool_if:NTF \g__wstf_amsmath_bool
+ { \box_set_eq_drop:NN \l__wstf_display_box \g__wstf_display_box }
+ {
+ \box_gclear:N \g__wstf_display_box
+ \__wstf_adjust_equation:
+ }
+ \__wstf_build_body_box:
+ }
+\cs_new_protected_nopar:Npn \__wstf_attach_equation:N
+ {
+ \bool_if:NTF \g__wstf_amsmath_bool
+ { \__wstf_attach_equation_amsmath:N }
+ { \__wstf_attach_equation_normal:N }
+ }
+\cs_new_protected:Npn \__wstf_attach_equation_amsmath:N #1
+ {
+ \vbox_set:Nn #1
+ {
+ \box_use:N #1
+ \__wstf_ignore_depth:
+ \vbox_unpack_drop:N \l__wstf_display_box
+ \skip_vertical:n
+ { \g__wstf_display_pre_dim - \box_dp:N #1 }
+ \box_use_drop:N \g__wstf_equation_box
+ }
+ }
+\cs_new_protected:Npn \__wstf_attach_equation_normal:N #1
+ {
+ \vbox_set:Nn #1
+ {
+ \__wstf_tex_parameter:
+ \dim_set_eq:NN \tex_hsize:D \l__wstf_display_dim
+ \para_raw_noindent:
+ \hbox_unpack_drop:N #1 \tex_unskip:D
+ \__wstf_insert_equation:
+ \para_raw_end:
+ \skip_gset_eq:NN \g__wstf_pos_skip \tex_lastskip:D
+ \tex_unskip:D
+ \int_gset_eq:NN \g__wstf_pos_int \tex_lastpenalty:D
+ \tex_unpenalty:D
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_insert_equation:
+ {
+ \c_math_toggle_token \c_math_toggle_token
+ \dim_compare:nNnTF \tex_displaywidth:D = \l__wstf_display_dim
+ { \box_use_drop:N \g__wstf_equation_box }
+ {
+ \bool_if:NTF \g__wstf_eqnum_bool
+ { \__wstf_repack_equation: }
+ { \box_use_drop:N \g__wstf_equation_box }
+ }
+ \c_math_toggle_token \c_math_toggle_token
+ }
+\cs_new_protected_nopar:Npn \__wstf_repack_equation:
+ {
+ \box_gclear:N \g__wstf_equation_box
+ \box_use_drop:N \g__wstf_eqbody_box
+ \bool_if:NTF \g__wstf_leqno_bool
+ { \tex_leqno:D }
+ { \tex_eqno:D }
+ \box_use_drop:N \g__wstf_eqnum_box
+ }
+\cs_new_protected_nopar:Npn \__wstf_adjust_equation:
+ {
+ \__wstf_test_eqnum:
+ \bool_if:NT \g__wstf_eqnum_bool
+ { \__wstf_adjust_equation_width: }
+ }
+\cs_new_protected_nopar:Npn \__wstf_test_eqnum:
+ {
+ \hbox_set:Nn \l__wstf_last_box
+ {
+ \bool_gset_false:N \g__wstf_eqnum_bool
+ \hbox_unpack:N \g__wstf_equation_box
+ \__wstf_if_last_hlist:F { \use_none_delimit_by_q_stop:w }
+ \box_gset_to_last:N \g__wstf_eqnum_box
+ \__wstf_if_last_kern:F { \use_none_delimit_by_q_stop:w }
+ \tex_unkern:D
+ \__wstf_if_last_hlist:F { \use_none_delimit_by_q_stop:w }
+ \box_gset_to_last:N \g__wstf_eqbody_box
+ \__wstf_if_last_none:F { \use_none_delimit_by_q_stop:w }
+ \bool_gset_true:N \g__wstf_eqnum_bool
+ \use_none_delimit_by_q_stop:w \q_stop
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_adjust_equation_width:
+ {
+ \bool_if:NTF \g__wstf_leqno_bool
+ { \__wstf_adjust_leqno: }
+ {
+ \box_gset_wd:Nn \g__wstf_equation_box
+ { \box_wd:N \g__wstf_eqbody_box }
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_adjust_leqno:
+ {
+ \box_set_eq_drop:NN \l__wstf_last_box \g__wstf_eqnum_box
+ \box_gset_eq_drop:NN \g__wstf_eqnum_box \g__wstf_eqbody_box
+ \box_gset_eq_drop:NN \g__wstf_eqbody_box \l__wstf_last_box
+ \hbox_gset:Nn \g__wstf_equation_box
+ {
+ \skip_horizontal:n
+ {
+ \box_wd:N \g__wstf_eqbody_box
+ - \box_wd:N \g__wstf_equation_box
+ }
+ \box_use_drop:N \g__wstf_equation_box
+ }
+ }
+\box_new:N \g__wstf_eqbody_box
+\box_new:N \g__wstf_eqnum_box
+\box_new:N \g__wstf_equation_box
+\box_new:N \l__wstf_display_box
+\int_new:N \g__wstf_pos_int
+\skip_new:N \g__wstf_pos_skip
+\bool_new:N \g__wstf_eqnum_bool
+\bool_new:N \g__wstf_leqno_bool
+\bool_new:N \l__wstf_display_bool
+\bool_new:N \l__wstf_attach_equation_bool
+\cs_new_protected_nopar:Npn \__wstf_add_pos_skip:
+ {
+ \bool_lazy_or:nnTF
+ { \g__wstf_right_move_bool }
+ { \int_compare_p:nNn \g__wstf_window_int > \c_zero_int }
+ {
+ \tex_vadjust:D
+ {
+ \tex_penalty:D \c__wstf_nobreak_int
+ \bool_if:NT \l__wstf_display_bool
+ { \skip_vertical:N \g__wstf_pos_skip }
+ }
+ }
+ {
+ \bool_if:NT \l__wstf_display_bool
+ {
+ \tex_vadjust:D
+ {
+ \tex_penalty:D \g__wstf_pos_int
+ \skip_vertical:N \g__wstf_pos_skip
+ }
+ }
+ }
+ \int_gzero:N \g__wstf_pos_int
+ \skip_gzero:N \g__wstf_pos_skip
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_body_box:
+ {
+ \box_set_eq:NN \l__wstf_save_body_box \l__wstf_bottom_box
+ \__wstf_build_window:
+ \int_compare:nNnTF \g__wstf_line_int > \l__wstf_window_line_int
+ { \__wstf_extract_hbox:NN \l__wstf_body_box \l__wstf_bottom_box }
+ { \box_clear:N \l__wstf_bottom_box }
+ \box_if_empty:NF \l__wstf_bottom_box
+ { \bool_set_false:N \l__wstf_attach_equation_bool }
+ \box_clear:N \l__wstf_window_box
+ \__wstf_build_box:
+ }
+\box_new:N \l__wstf_save_body_box
+\cs_new_protected_nopar:Npn \__wstf_build_window:
+ {
+ \vbox_set:Nn \l__wstf_body_box
+ {
+ \__wstf_tex_parameter:
+ \__wstf_make_parshape:
+ \__wstf_column_penalties:
+ \dim_zero:N \tex_emergencystretch:D
+ \dim_set_eq:NN \tex_hfuzz:D \c_max_dim
+ \dim_set_eq:NN \tex_vfuzz:D \c_max_dim
+ \int_set_eq:NN \tex_hbadness:D \c_max_int
+ \int_set_eq:NN \tex_vbadness:D \c_max_int
+ \int_set:Nn \tex_tolerance:D { 1000 }
+ \para_raw_noindent:
+ \hbox_unpack_drop:N \l__wstf_bottom_box
+ \para_raw_end:
+ \int_gset_eq:NN \g__wstf_line_int \tex_prevgraf:D
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_make_parshape:
+ {
+ \tex_parshape:D
+ \int_eval:n { \l__wstf_window_line_int + 1 } ~
+ \bool_if:NTF \l__wstf_hang_bool
+ {
+ \prg_replicate:nn
+ { \l__wstf_window_int }
+ { \c_zero_dim \l__wstf_window_dim }
+ }
+ {
+ \bool_if:NTF \l__wstf_column_bool
+ {
+ \prg_replicate:nn
+ { \l__wstf_window_int / 2 }
+ { \c_zero_dim \l__wstf_l_dim }
+ \prg_replicate:nn
+ {
+ \bool_if:NTF \g__wstf_column_right_bool
+ { \g__wstf_column_window_int }
+ { \l__wstf_window_int / 2 }
+ }
+ { \c_zero_dim \l__wstf_r_dim }
+ }
+ {
+ \prg_replicate:nn
+ { \l__wstf_window_int / 2 }
+ {
+ \c_zero_dim \l__wstf_l_dim
+ \c_zero_dim \l__wstf_r_dim
+ }
+ }
+ }
+ \c_zero_dim \c_max_dim
+ }
+\cs_new_protected_nopar:Npn \__wstf_column_penalties:
+ {
+ \bool_if:NF \l__wstf_hang_bool
+ {
+ \bool_if:NT \l__wstf_column_bool
+ { \__wstf_column_penalties_aux: }
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_column_penalties_aux:
+ {
+ \tex_interlinepenalties:D
+ \int_eval:n { \l__wstf_window_int / 2 + \c_one_int } ~
+ \prg_replicate:nn
+ { \l__wstf_window_int / 2 - \c_one_int }
+ { \c__wstf_nobreak_int }
+ \c__wstf_break_int
+ \c_zero_int
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_block:
+ {
+ \__wstf_build_block_auxi:
+ \vbox_set:Nn \l__wstf_window_box
+ {
+ \__wstf_tex_parameter:
+ \dim_set_eq:NN \tex_hsize:D \l__wstf_line_dim
+ \para_raw_noindent:
+ \hbox_unpack_drop:N \g__wstf_line_box
+ \para_raw_end:
+ }
+ \bool_if:NT \l__wstf_attach_equation_bool
+ {
+ \box_set_ht:Nn \l__wstf_window_box
+ { \box_ht_plus_dp:N \l__wstf_window_box - \g__wstf_dp_dim }
+ \box_set_dp:Nn \l__wstf_window_box { \g__wstf_dp_dim }
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_block_auxi:
+ {
+ \vbox_set:Nn \l__wstf_body_box
+ {
+ \vbox_unpack_drop:N \l__wstf_body_box
+ \bool_lazy_and:nnTF
+ { \box_if_empty_p:N \l__wstf_bottom_box }
+ { \int_if_odd_p:n { \g__wstf_line_int } }
+ { \box_set_eq:NN \l__wstf_r_box \l__wstf_empty_box }
+ {
+ \box_set_to_last:N \l__wstf_r_box
+ \tex_unskip:D \tex_unpenalty:D
+ }
+ \box_set_to_last:N \l__wstf_l_box
+ \tex_unskip:D \tex_unpenalty:D
+ \hbox_gset:Nn \g__wstf_line_box
+ {
+ \bool_if:NT \l__wstf_attach_equation_bool
+ { \__wstf_build_block_attach: }
+ \box_use:N \l__wstf_l_box
+ \tex_hfill:D
+ \box_use:N \l__wstf_r_box
+ }
+ \__wstf_build_block_auxii:
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_block_auxii:
+ {
+ \int_case:nnTF
+ { \tex_lastnodetype:D }
+ {
+ { \c__wstf_none_node } { }
+ { \c__wstf_whatsit_node } { }
+ }
+ { \__wstf_build_block_finalise: }
+ { \__wstf_build_block_auxiii: }
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_block_auxiii:
+ {
+ \box_set_to_last:N \l__wstf_r_box
+ \tex_unskip:D \tex_unpenalty:D
+ \box_set_to_last:N \l__wstf_l_box
+ \tex_unskip:D \tex_unpenalty:D
+ \hbox_gset:Nn \g__wstf_line_box
+ {
+ \box_use:N \l__wstf_l_box
+ \tex_hfill:D
+ \box_use:N \l__wstf_r_box
+ \tex_penalty:D \c__wstf_break_int
+ \hbox_unpack_drop:N \g__wstf_line_box
+ }
+ \__wstf_build_block_auxii:
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_block_attach:
+ {
+ \box_set_eq:NN \l__wstf_last_box \l__wstf_l_box
+ \__wstf_attach_equation:N \l__wstf_last_box
+ \dim_gset:Nn \g__wstf_dp_dim { \box_dp:N \l__wstf_last_box }
+ \hbox_set:Nn \l__wstf_l_box
+ {
+ \box_move_down:nn
+ { \box_ht:N \l__wstf_last_box - \box_ht:N \l__wstf_l_box }
+ { \box_use_drop:N \l__wstf_last_box }
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_block_finalise:
+ {
+ \dim_gset:Nn \g__wstf_ht_dim
+ {
+ \dim_max:nn
+ { \box_ht:N \l__wstf_l_box }
+ { \box_ht:N \l__wstf_r_box }
+ }
+ }
+\dim_new:N \g__wstf_dp_dim
+\dim_new:N \g__wstf_ht_dim
+\box_new:N \l__wstf_l_box
+\box_new:N \l__wstf_r_box
+\box_new:N \g__wstf_line_box
+\box_new:N \l__wstf_empty_box
+\hbox_set:Nn \l__wstf_empty_box { }
+\int_const:Nn \c__wstf_break_int { -10000 }
+\int_const:Nn \c__wstf_nobreak_int { 10000 }
+\cs_new_protected_nopar:Npn \__wstf_build_column_fuzzy:
+ {
+ \hbox_set_to_wd:Nnn \l__wstf_window_box
+ { \l__wstf_line_dim }
+ {
+ \skip_zero:N \tex_splittopskip:D
+ \dim_set_eq:NN \tex_vfuzz:D \c_max_dim
+ \int_set_eq:NN \tex_vbadness:D \c_max_int
+ \__wstf_build_column_aux:
+ \box_if_empty:NT \l__wstf_bottom_box
+ { \__wstf_build_column_fuzzy_aux: }
+ \dim_gset:Nn \g__wstf_ht_dim { \box_ht:N \l__wstf_l_box }
+ \vbox_set:Nn \l__wstf_l_box
+ {
+ \vbox_unpack_drop:N \l__wstf_l_box
+ \bool_if:NT \l__wstf_attach_equation_bool
+ {
+ \box_set_to_last:N \l__wstf_last_box
+ \__wstf_attach_equation:N \l__wstf_last_box
+ \vbox_unpack_drop:N \l__wstf_last_box
+ }
+ }
+ \box_use:N \l__wstf_l_box
+ \tex_hfil:D
+ \box_move_up:nn
+ { \box_ht:N \l__wstf_l_box - \box_ht:N \l__wstf_r_box }
+ { \box_use_drop:N \l__wstf_r_box }
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_column_aux:
+ {
+ \vbox_set_split_to_ht:NNn \l__wstf_l_box \l__wstf_body_box
+ { \c_zero_dim }
+ \vbox_set_top:Nn \l__wstf_l_box
+ { \vbox_unpack_drop:N \l__wstf_l_box }
+ \box_set_eq_drop:NN \l__wstf_r_box \l__wstf_body_box
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_column_fuzzy_aux:
+ {
+ \dim_compare:nNnTF
+ {
+ \box_ht_plus_dp:N \l__wstf_r_box -
+ \box_ht_plus_dp:N \l__wstf_l_box
+ }
+ >
+ { \l__wstf_min_dim }
+ {
+ \box_if_empty:NF \l__wstf_last_l_box
+ {
+ \box_set_eq_drop:NN \l__wstf_l_box \l__wstf_last_l_box
+ \box_set_eq_drop:NN \l__wstf_r_box \l__wstf_last_r_box
+ }
+ }
+ { \__wstf_rebuild_window: }
+ }
+\cs_new_protected_nopar:Npn \__wstf_rebuild_window:
+ {
+ \int_compare:nNnT \l__wstf_window_int > { 2 }
+ {
+ \int_sub:Nn \l__wstf_window_int { 2 }
+ \box_set_eq_drop:NN \l__wstf_last_l_box \l__wstf_l_box
+ \box_set_eq_drop:NN \l__wstf_last_r_box \l__wstf_r_box
+ \box_set_eq:NN \l__wstf_bottom_box \l__wstf_save_body_box
+ \int_set_eq:NN \l__wstf_window_line_int \l__wstf_window_int
+ \__wstf_build_window:
+ \__wstf_build_column_aux:
+ \__wstf_build_column_fuzzy_aux:
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_column_strict:
+ {
+ \group_begin:
+ \skip_zero:N \tex_splittopskip:D
+ \dim_set_eq:NN \tex_vfuzz:D \c_max_dim
+ \int_set_eq:NN \tex_vbadness:D \c_max_int
+ \__wstf_build_column_aux:
+ \box_if_empty:NTF \l__wstf_r_box
+ { \__wstf_build_column_strict_auxi: }
+ {
+ \box_if_empty:NTF \l__wstf_bottom_box
+ { \__wstf_build_column_strict_auxii: }
+ {
+ \bool_if:NTF \g__wstf_column_right_bool
+ { \__wstf_build_column_strict_auxiii: }
+ { \__wstf_build_column_strict_auxiv: }
+ }
+ }
+ \group_end:
+ \box_set_eq_drop:NN \l__wstf_window_box \g__wstf_window_box
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_column_strict_auxi:
+ {
+ \__wstf_repack_left_box:
+ \bool_if:NT \l__wstf_attach_equation_bool
+ { \__wstf_column_attach:N \l__wstf_l_box }
+ \box_gset_eq_drop:NN \g__wstf_window_box \l__wstf_l_box
+ \bool_gset_true:N \g__wstf_column_right_bool
+ \bool_if:NF \g__wstf_first_save_bool
+ {
+ \bool_gset_true:N \g__wstf_first_save_bool
+ \dim_gset:Nn \g__wstf_first_sep_dim
+ { \tex_baselineskip:D - \g__wstf_ht_dim }
+ \dim_gset_eq:NN \g__wstf_first_dp_dim \g__wstf_prevdepth_dim
+ }
+ \int_case:nnT { \g__wstf_window_int }
+ {
+ { \c_zero_int } { }
+ { \g__wstf_line_int } { }
+ }
+ { \__wstf_column_move_entire_aux: }
+ }
+\cs_new_protected_nopar:Npn \__wstf_column_move_entire_aux:
+ {
+ \bool_gset_true:N \g__wstf_entire_bool
+ \bool_gset_true:N \g__wstf_next_hang_bool
+ }
+\cs_new_protected_nopar:Npn \__wstf_column_move_entire:
+ {
+ \dim_gsub:Nn \g__wstf_first_sep_dim
+ { \box_dp:N \l__wstf_window_box }
+ \bool_gset_false:N \g__wstf_entire_bool
+ \dim_gzero:N \g__wstf_column_right_ht_dim
+ \dim_gset_eq:NN \g__wstf_prevdepth_dim \g__wstf_first_dp_dim
+ \__wstf_column_right_move_set:nn
+ { \g__wstf_stuff_ht_dim }
+ { \g__wstf_window_ht_dim }
+ \int_gset_eq:NN \g__wstf_window_int \g__wstf_column_window_int
+ }
+\cs_new_protected:Npn \__wstf_column_right_move_set:nn #1#2
+ {
+ \bool_gset_true:N \g__wstf_right_move_bool
+ \bool_gset_true:N \g__wstf_first_set_bool
+ \tl_gput_right:Nn \g__wstf_main_setting_tl
+ {
+ \bool_if:NTF \g__wstf_first_set_bool
+ {
+ \bool_gset_false:N \g__wstf_first_set_bool
+ \bool_set_true:N \l__wstf_first_move_bool
+ }
+ { \bool_set_false:N \l__wstf_first_move_bool }
+ \fp_zero:N \l__wstf_ratio_fp
+ }
+ \__wstf_make_next_stuff:nn
+ { \l__wstf_line_dim - \l__wstf_r_dim - \l__wstf_rightsep_dim }
+ {#1}
+ \dim_gset:Nn \g__wstf_column_left_dim {#2}
+ \int_gzero:N \g__wstf_top_int
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_column_strict_auxii:
+ {
+ \bool_gset_false:N \g__wstf_entire_bool
+ \__wstf_repack_left_box:
+ \bool_if:NT \l__wstf_attach_equation_bool
+ { \__wstf_column_attach:N \l__wstf_r_box }
+ \dim_gset:Nn \g__wstf_hang_ht_dim
+ {
+ \g__wstf_stuff_ht_dim - \tex_baselineskip:D *
+ \__wstf_unit:n { \box_ht_plus_dp:N \l__wstf_r_box }
+ - \g__wstf_pos_skip
+ }
+ \dim_compare:nNnTF \g__wstf_hang_ht_dim > \c_zero_dim
+ { \__wstf_column_move_right: }
+ { \__wstf_column_put_right: }
+ \box_gset_ht:Nn \g__wstf_window_box { \box_ht:N \l__wstf_l_box }
+ \box_gset_dp:Nn \g__wstf_window_box { \box_dp:N \l__wstf_l_box }
+ }
+\cs_new_protected_nopar:Npn \__wstf_column_move_right:
+ {
+ \int_compare:nNnTF \g__wstf_window_int > \c_zero_int
+ {
+ \dim_gset:Nn \g__wstf_column_left_dim
+ {
+ \g__wstf_window_ht_dim
+ - \g__wstf_first_sep_dim
+ - \box_ht:N \l__wstf_r_box
+ }
+ \__wstf_next_hang_para:
+ }
+ {
+ \dim_gset:Nn \g__wstf_column_left_dim
+ {
+ \box_ht:N \l__wstf_l_box
+ - \box_ht:N \l__wstf_r_box
+ }
+ \dim_gset:Nn \g__wstf_first_sep_dim
+ { \tex_baselineskip:D - \g__wstf_ht_dim }
+ \bool_gset_true:N \g__wstf_right_move_bool
+ \bool_gset_true:N \g__wstf_next_hang_bool
+ }
+ \hbox_gset_to_wd:Nnn \g__wstf_window_box
+ { \l__wstf_line_dim }
+ {
+ \box_use:N \l__wstf_l_box
+ \tex_hfil:D
+ \box_move_up:nn
+ { \g__wstf_column_left_dim }
+ { \box_use:N \l__wstf_r_box }
+ }
+ \dim_gset:Nn \g__wstf_column_right_ht_dim
+ { \box_ht:N \l__wstf_r_box + \g__wstf_pos_skip }
+ }
+\cs_new_protected_nopar:Npn \__wstf_column_put_right:
+ {
+ \hbox_gset_to_wd:Nnn \g__wstf_window_box
+ { \l__wstf_line_dim }
+ {
+ \box_use:N \l__wstf_l_box
+ \tex_hfil:D
+ \box_move_up:nn
+ {
+ \int_compare:nNnTF \g__wstf_window_int > \c_zero_int
+ { \g__wstf_window_ht_dim - \g__wstf_first_sep_dim }
+ { \box_ht:N \l__wstf_l_box }
+ - \box_ht:N \l__wstf_r_box
+ }
+ { \box_use:N \l__wstf_r_box }
+ }
+ \skip_gzero:N \g__wstf_pos_skip
+ }
+\cs_new_protected_nopar:Npn \__wstf_next_hang_para:
+ {
+ \bool_if:NTF \g__wstf_entire_bool
+ { \__wstf_column_move_entire: }
+ {
+ \__wstf_column_right_move_set:nn
+ { \g__wstf_hang_ht_dim }
+ { \g__wstf_column_left_dim }
+ \int_gzero:N \g__wstf_window_int
+ }
+ \bool_gset_false:N \g__wstf_next_hang_bool
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_column_strict_auxiii:
+ {
+ \bool_gset_false:N \g__wstf_column_right_bool
+ \__wstf_repack_left_box:
+ \hbox_gset_to_wd:Nnn \g__wstf_window_box
+ { \l__wstf_line_dim }
+ {
+ \box_use:N \l__wstf_l_box
+ \tex_hfil:D
+ \box_use:N \l__wstf_r_box
+ }
+ \box_gset_ht:Nn \g__wstf_window_box
+ { \box_ht:N \l__wstf_l_box }
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_column_strict_auxiv:
+ {
+ \__wstf_repack_left_box:
+ \hbox_gset_to_wd:Nnn \g__wstf_window_box
+ { \l__wstf_line_dim }
+ {
+ \box_use:N \l__wstf_l_box
+ \tex_hfil:D
+ \box_move_up:nn
+ { \box_ht:N \l__wstf_l_box - \box_ht:N \l__wstf_r_box }
+ { \box_use_drop:N \l__wstf_r_box }
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_repack_left_box:
+ {
+ \dim_gset:Nn \g__wstf_ht_dim { \box_ht:N \l__wstf_l_box }
+ \vbox_set:Nn \l__wstf_l_box
+ { \vbox_unpack_drop:N \l__wstf_l_box }
+ }
+\cs_new_protected_nopar:Npn \__wstf_column_attach:N #1
+ {
+ \vbox_set:Nn #1
+ {
+ \vbox_unpack_drop:N #1
+ \box_set_to_last:N \l__wstf_last_box
+ \__wstf_attach_equation:N \l__wstf_last_box
+ \vbox_unpack_drop:N \l__wstf_last_box
+ }
+ }
+\box_new:N \l__wstf_last_l_box
+\box_new:N \l__wstf_last_r_box
+\box_new:N \g__wstf_window_box
+\dim_new:N \g__wstf_fake_wd_dim
+\dim_new:N \g__wstf_first_dp_dim
+\dim_new:N \g__wstf_first_sep_dim
+\dim_new:N \g__wstf_column_left_dim
+\dim_new:N \g__wstf_column_right_ht_dim
+\bool_new:N \g__wstf_entire_bool
+\bool_new:N \g__wstf_next_hang_bool
+\bool_new:N \g__wstf_first_save_bool
+\bool_new:N \g__wstf_column_right_bool
+\bool_new:N \l__wstf_column_strict_bool
+\bool_new:N \g__wstf_first_set_bool
+\bool_new:N \l__wstf_first_move_bool
+\bool_new:N \g__wstf_right_move_bool
+\bool_new:N \l__wstf_column_bool
+\cs_new_eq:NN \__wstf_build_column: \__wstf_build_column_strict:
+\cs_new_eq:NN \__wstf_build_box: \__wstf_build_column:
+\cs_new_protected_nopar:Npn \__wstf_build_hang:
+ {
+ \bool_if:NTF \g__wstf_hangfrom_bool
+ { \__wstf_build_hangfrom: }
+ {
+ \vbox_set_top:Nn \l__wstf_window_box
+ { \vbox_unpack:N \l__wstf_body_box }
+ \dim_gset:Nn \g__wstf_ht_dim { \box_ht:N \l__wstf_window_box }
+ }
+ \bool_if:NTF \l__wstf_attach_equation_bool
+ {
+ \vbox_set:Nn \l__wstf_window_box
+ {
+ \vbox_unpack_drop:N \l__wstf_window_box
+ \box_set_to_last:N \l__wstf_last_box
+ \__wstf_attach_equation:N \l__wstf_last_box
+ \vbox_unpack_drop:N \l__wstf_last_box
+ }
+ }
+ { \box_set_eq_drop:NN \l__wstf_window_box \l__wstf_body_box }
+ \dim_compare:nNnTF \g__wstf_column_left_dim > \c_zero_dim
+ { \__wstf_build_hang_aux: }
+ { \bool_gset_false:N \g__wstf_move_hang_bool }
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_hang_aux:
+ {
+ \dim_set:Nn \l__wstf_shift_dim
+ {
+ \dim_max:nn
+ { \box_ht:N \l__wstf_window_box }
+ { \tex_baselineskip:D * \g__wstf_line_int }
+ + \tex_parskip:D
+ }
+ \dim_gsub:Nn \g__wstf_column_left_dim { \l__wstf_shift_dim }
+ \dim_compare:nNnTF \g__wstf_column_left_dim > \c_zero_dim
+ {
+ \box_if_empty:NTF \l__wstf_bottom_box
+ { \bool_if:NT \g__wstf_right_move_bool { \__wstf_set_next_hang: } }
+ { \bool_gset_false:N \g__wstf_move_hang_bool }
+ }
+ { \bool_gset_false:N \g__wstf_move_hang_bool }
+ }
+\cs_new_protected_nopar:Npn \__wstf_set_next_hang:
+ {
+ \bool_if:NF \g__wstf_move_hang_bool
+ {
+ \bool_gset_true:N \g__wstf_move_hang_bool
+ \dim_gset_eq:NN \g__wstf_hang_ht_dim \g__wstf_remaining_dim
+ }
+ \dim_gsub:Nn \g__wstf_hang_ht_dim { \l__wstf_shift_dim }
+ \dim_gset:Nn \g__wstf_dp_dim { \box_dp:N \l__wstf_window_box }
+ \__wstf_column_right_move_set:nn
+ { \g__wstf_hang_ht_dim }
+ { \g__wstf_column_left_dim }
+ \int_gzero:N \g__wstf_window_int
+ }
+\dim_new:N \g__wstf_hang_ht_dim
+\bool_new:N \g__wstf_move_hang_bool
+\cs_new_protected_nopar:Npn \__wstf_build_hangfrom:
+ {
+ \dim_compare:nNnTF \g__wstf_prevdepth_dim > \c__wstf_ignore_depth_dim
+ { \__wstf_build_hangfrom_aux: }
+ { \dim_gzero:N \g__wstf_ht_dim }
+ }
+\cs_new_protected_nopar:Npn \__wstf_build_hangfrom_aux:
+ {
+ \group_begin:
+ \skip_zero:N \tex_splittopskip:D
+ \vbox_gset:Nn \g__wstf_line_box
+ {
+ \tex_penalty:D \c__wstf_break_int
+ \vbox_unpack:N \l__wstf_body_box
+ }
+ \vbox_set_split_to_ht:NNn \l__wstf_last_box \g__wstf_line_box
+ { \c_zero_dim }
+ \dim_gset:Nn \g__wstf_ht_dim
+ {
+ \g__wstf_baseline_skip
+ - \g__wstf_prevdepth_dim
+ - \l__wstf_shift_dim
+ - \box_ht:N \l__wstf_body_box
+ + \box_ht:N \g__wstf_line_box
+ }
+ \group_end:
+ \box_set_eq_drop:NN \l__wstf_body_box \g__wstf_line_box
+ }
+\cs_new_protected_nopar:Npn \__wstf_put_box:
+ {
+ \para_raw_end:
+ \dim_compare:nNnTF \g__wstf_prevdepth_dim > \c__wstf_ignore_depth_dim
+ { \__wstf_add_vskip: }
+ { \skip_gzero:N \g__wstf_pre_skip }
+ \skip_set_eq:NN \l__wstf_par_skip \tex_parskip:D
+ \skip_zero:N \tex_parskip:D
+ \bool_if:NTF \g__wstf_right_move_bool
+ { \__wstf_put_box_aux: }
+ {
+ \box_if_empty:NTF \l__wstf_bottom_box
+ {
+ \dim_compare:nNnTF
+ { \g__wstf_remaining_dim }
+ >
+ { \box_ht_plus_dp:N \l__wstf_window_box }
+ { \__wstf_set_next: }
+ { \__wstf_put_box_aux: }
+ }
+ { \__wstf_put_box_aux: }
+ }
+ }
+\skip_new:N \l__wstf_par_skip
+\cs_new_protected_nopar:Npn \__wstf_put_box_aux:
+ {
+ \int_gzero:N \g__wstf_window_int
+ \__wstf_hbox:n
+ {
+ \__wstf_put_window_box:
+ \bool_if:NF \g__wstf_next_bool
+ { \__wstf_put_stuff_box: }
+ }
+ \box_if_empty:NTF \l__wstf_bottom_box
+ { \__wstf_put_trailer_box: }
+ { \__wstf_put_bottom_box: }
+ }
+\cs_new_protected_nopar:Npn \__wstf_put_trailer_box:
+ {
+ \bool_if:NTF \g__wstf_next_hang_bool
+ {
+ \__wstf_next_hang_para:
+ \__wstf_next_para_trailer:
+ }
+ {
+ \bool_if:NTF \g__wstf_right_move_bool
+ { \__wstf_next_para_trailer: }
+ {
+ \__wstf_add_pos_skip:
+ \box_if_empty:NF \g__wstf_pos_box
+ {
+ \__wstf_newline:
+ \hbox_unpack_drop:N \g__wstf_pos_box
+ }
+ }
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_put_bottom_box:
+ {
+ \__wstf_newline:
+ \hbox_unpack_drop:N \l__wstf_bottom_box
+ \box_if_empty:NF \g__wstf_equation_box
+ { \__wstf_insert_equation: }
+ \box_if_empty:NF \g__wstf_pos_box
+ { \hbox_unpack_drop:N \g__wstf_pos_box }
+ \bool_gset_false:N \g__wstf_right_move_bool
+ \bool_gset_false:N \g__wstf_first_save_bool
+ }
+\cs_new_protected_nopar:Npn \__wstf_newline:
+ {
+ \tex_penalty:D \c__wstf_nobreak_int
+ \tex_hfil:D
+ \tex_penalty:D \c__wstf_break_int
+ }
+\cs_new_protected:Npn \__wstf_hbox:n #1
+ {
+ \para_raw_noindent:
+ \hbox_gset:Nn \g__wstf_last_box {#1}
+ \box_gset_wd:Nn \g__wstf_last_box { \l__wstf_line_dim }
+ \box_use_drop:N \g__wstf_last_box
+ }
+\cs_new_protected_nopar:Npn \__wstf_put_window_box:
+ {
+ \dim_compare:nNnF \l__wstf_l_dim > \c_zero_dim
+ { \skip_horizontal:n { \l__wstf_line_dim - \l__wstf_r_dim } }
+ \box_use:N \l__wstf_window_box
+ }
+\cs_new_protected_nopar:Npn \__wstf_put_stuff_box:
+ {
+ \__wstf_move_stuff_box:nn { up }
+ {
+ \l__wstf_voffset_dim
+ + ( \box_dp:N \g__wstf_stuff_box -
+ \box_dp:N \l__wstf_window_box )
+ + ( \box_ht_plus_dp:N \l__wstf_window_box -
+ \g__wstf_stuff_ht_dim ) / 2
+ \box_if_empty:NT \l__wstf_bottom_box
+ { - \g__wstf_pos_skip / 2 }
+ }
+ \__wstf_output_stuff_box:
+ }
+\cs_new_protected_nopar:Npn \__wstf_output_stuff_box:
+ {
+ \skip_horizontal:n
+ {
+ \dim_compare:nNnTF \l__wstf_r_dim > \c_zero_dim
+ {
+ \dim_compare:nNnTF
+ { \box_wd:N \l__wstf_window_box }
+ <
+ { \l__wstf_window_dim }
+ { \l__wstf_leftsep_dim }
+ {
+ - \l__wstf_r_dim
+ - \l__wstf_rightsep_dim
+ - \g__wstf_stuff_wd_dim
+ }
+ }
+ { \l__wstf_leftsep_dim }
+ }
+ \box_use_drop:N \g__wstf_stuff_box
+ }
+\cs_new_protected:Npn \__wstf_move_stuff_box:nn #1#2
+ {
+ \hbox_gset:Nn \g__wstf_stuff_box
+ {
+ \__wstf_parshape_kern:
+ \use:c { box_move_ #1 :nn }
+ {#2}
+ { \box_use_drop:N \g__wstf_stuff_box }
+ }
+ \box_gset_ht:Nn \g__wstf_stuff_box { \c_zero_dim }
+ \box_gset_dp:Nn \g__wstf_stuff_box { \c_zero_dim }
+ }
+\cs_new_protected_nopar:Npn \__wstf_add_vskip:
+ {
+ \box_if_empty:NTF \g__wstf_display_box
+ { \__wstf_add_vskip_auxi: }
+ { \__wstf_add_vskip_display: }
+ }
+\cs_new_protected_nopar:Npn \__wstf_add_vskip_display:
+ {
+ \vbox_unpack_drop:N \g__wstf_display_box
+ \__wstf_ignore_depth:
+ }
+\cs_new_protected_nopar:Npn \__wstf_add_vskip_auxi:
+ {
+ \dim_compare:nNnTF \tex_pagegoal:D < \c_max_dim
+ { \__wstf_add_vskip_auxii: }
+ { \__wstf_add_vskip_auxiii: }
+ }
+\cs_new_protected_nopar:Npn \__wstf_add_vskip_auxii:
+ {
+ \skip_gset:Nn \g__wstf_pre_skip
+ {
+ \g__wstf_baseline_skip
+ - \g__wstf_prevdepth_dim
+ - \g__wstf_ht_dim
+ }
+ \dim_compare:nNnT \g__wstf_pre_skip < \tex_lineskiplimit:D
+ { \skip_gset_eq:NN \g__wstf_pre_skip \tex_lineskip:D }
+ \bool_if:NTF \l__wstf_first_move_bool
+ { \__wstf_first_move_skip: }
+ { \skip_vertical:N \g__wstf_pre_skip }
+ \__wstf_ignore_depth:
+ }
+\cs_new_protected_nopar:Npn \__wstf_add_vskip_auxiii:
+ {
+ \dim_compare:nNnTF \tex_topskip:D > \g__wstf_ht_dim
+ {
+ \tex_hrule:D height \c_zero_dim \scan_stop:
+ \skip_gset:Nn \g__wstf_pre_skip
+ { \tex_topskip:D - \g__wstf_ht_dim }
+ \skip_vertical:n { \g__wstf_pre_skip - \tex_topskip:D }
+ }
+ { \skip_gzero:N \g__wstf_pre_skip }
+ }
+\cs_new_protected_nopar:Npn \__wstf_first_move_skip:
+ {
+ \skip_vertical:n
+ {
+ \g__wstf_first_sep_dim
+ - \g__wstf_window_ht_dim
+ - \tex_parskip:D
+ \dim_compare:nNnT \g__wstf_column_right_ht_dim > \c_zero_dim
+ { + \g__wstf_column_right_ht_dim + \g__wstf_pre_skip }
+ }
+ }
+\skip_new:N \g__wstf_pre_skip
+\cs_new_protected_nopar:Npn \__wstf_ignore_depth:
+ { \dim_set_eq:NN \tex_prevdepth:D \c__wstf_ignore_depth_dim }
+\cs_new_protected_nopar:Npn \__wstf_set_prevdepth:N
+ { \dim_set_eq:NN \tex_prevdepth:D }
+\dim_const:Nn \c__wstf_ignore_depth_dim { -1000pt }
+\cs_new_protected_nopar:Npn \__wstf_set_next:
+ {
+ \dim_set:Nn \l__wstf_height_dim
+ {
+ \g__wstf_pre_skip
+ + \g__wstf_pos_skip
+ + \box_ht_plus_dp:N \l__wstf_window_box
+ }
+ \dim_gadd:Nn \g__wstf_total_ht_dim { \l__wstf_height_dim }
+ \dim_set:Nn \l__wstf_shift_dim
+ { \g__wstf_remaining_dim - \l__wstf_height_dim }
+ \dim_compare:nNnTF \l__wstf_shift_dim > \c_zero_dim
+ { \__wstf_set_next_auxi: }
+ {
+ \dim_compare:nNnTF
+ { - \l__wstf_shift_dim } > \l__wstf_min_dim
+ { \__wstf_set_next_auxii: }
+ { \__wstf_set_next_auxi: }
+ }
+ }
+\dim_new:N \g__wstf_total_ht_dim
+\cs_new_protected_nopar:Npn \__wstf_set_next_auxi:
+ {
+ \int_gset:Nn \g__wstf_window_int
+ {
+ \dim_compare:nNnTF \l__wstf_shift_dim > \c_zero_dim
+ { \__wstf_unit:n { \l__wstf_shift_dim } }
+ { \c_one_int }
+ }
+ \__wstf_set_next_verify:
+ \bool_if:NF \g__wstf_next_bool
+ { \__wstf_move_next_stuff_box: }
+ \__wstf_set_next_output:
+ \__wstf_make_next_stuff:nn
+ { \g__wstf_stuff_wd_dim }
+ { \l__wstf_shift_dim }
+ \int_gzero:N \g__wstf_top_int
+ \__wstf_next_para_trailer:
+ }
+\cs_new_protected_nopar:Npn \__wstf_move_next_stuff_box:
+ {
+ \__wstf_move_stuff_box:nn { down }
+ {
+ \box_ht:N \g__wstf_stuff_box
+ - \box_ht:N \l__wstf_window_box
+ + ( \g__wstf_window_ht_dim
+ - \g__wstf_stuff_ht_dim
+ - \g__wstf_pre_skip
+ + \g__wstf_pos_skip
+ + \l__wstf_par_skip ) / 2
+ - \l__wstf_voffset_dim
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_set_next_auxii:
+ {
+ \int_gzero:N \g__wstf_window_int
+ \bool_if:NF \g__wstf_next_bool
+ {
+ \__wstf_move_stuff_box:nn { down }
+ {
+ \box_ht:N \g__wstf_stuff_box
+ - \box_ht:N \l__wstf_window_box
+ - \l__wstf_voffset_dim
+ }
+ }
+ \__wstf_set_next_output:
+ \__wstf_add_pos_skip:
+ }
+\cs_new_protected_nopar:Npn \__wstf_set_next_output:
+ {
+ \__wstf_hbox:n
+ {
+ \__wstf_put_window_box:
+ \bool_if:NF \g__wstf_next_bool
+ { \__wstf_output_stuff_box: }
+ }
+ }
+\cs_new_protected_nopar:Npn \__wstf_set_next_verify:
+ {
+ \dim_set:Nn \l__wstf_height_dim
+ { \g__wstf_window_ht_dim - \g__wstf_total_ht_dim }
+ \dim_until_do:nNnn
+ { \tex_baselineskip:D * \g__wstf_window_int + \l__wstf_par_skip }
+ >
+ { \l__wstf_height_dim }
+ { \int_gincr:N \g__wstf_window_int }
+ \dim_gadd:Nn \g__wstf_total_ht_dim
+ { \tex_baselineskip:D * \g__wstf_window_int + \l__wstf_par_skip }
+ }
+\cs_new_protected_nopar:Npn \__wstf_next_para_trailer:
+ {
+ \__wstf_add_pos_skip:
+ \box_if_empty:NTF \g__wstf_pos_box
+ { \__wstf_next_para: }
+ {
+ \__wstf_env_begin:
+ \hbox_unpack_drop:N \g__wstf_pos_box
+ \__wstf_env_end:
+ }
+ }
+\cs_new_protected:Npn \__wstf_make_next_stuff:nn #1#2
+ {
+ \bool_gset_true:N \g__wstf_next_bool
+ \dim_gset:Nn \g__wstf_stuff_wd_dim {#1}
+ \dim_gset:Nn \g__wstf_remaining_dim {#2}
+ }
+\bool_new:N \g__wstf_next_bool
+\cs_new_protected:Npn \__wstf_extract_display_hbox:NN #1
+ {
+ \box_gclear:N \g__wstf_pos_box
+ \vbox_set:Nn #1
+ {
+ \vbox_unpack_drop:N #1
+ \bool_if:NTF \g__wstf_display_bool
+ { \__wstf_test_display_math: }
+ { \box_gclear:N \g__wstf_display_box }
+ \box_if_empty:NTF \g__wstf_display_box
+ {
+ \bool_gset_false:N \g__wstf_amsmath_bool
+ \__wstf_extract_last_hbox:N \g__wstf_last_box
+ }
+ { \box_gclear:N \g__wstf_last_box }
+ }
+ \box_if_empty:NF \g__wstf_display_box
+ { \dim_gset:Nn \g__wstf_display_pre_dim { \box_dp:N #1 } }
+ \__wstf_extract_hbox_aux:N
+ }
+\cs_new_protected:Npn \__wstf_extract_hbox:NN #1
+ {
+ \vbox_set:Nn #1
+ {
+ \vbox_unpack_drop:N #1
+ \__wstf_extract_last_hbox:N \g__wstf_last_box
+ }
+ \__wstf_extract_hbox_aux:N
+ }
+\cs_new_protected:Npn \__wstf_extract_hbox_aux:N #1
+ {
+ \box_if_empty:NTF \g__wstf_last_box
+ { \box_clear:N #1 }
+ { \__wstf_repack_hbox:N #1 }
+ }
+\cs_new_protected:Npn \__wstf_repack_hbox:N #1
+ {
+ \hbox_set:Nn #1
+ {
+ \skip_if_eq:nnF
+ { \g__wstf_main_left_skip } { \c_zero_skip }
+ { \skip_horizontal:N \g__wstf_main_left_skip }
+ \hbox_unpack_drop:N \g__wstf_last_box
+ \tex_unskip:D \tex_unskip:D \tex_unpenalty:D
+ }
+ }
+\cs_new_protected:Npn \__wstf_extract_last_hbox:N #1
+ {
+ \__wstf_if_last_hlist:TF
+ {
+ \box_gset_to_last:N #1
+ \tex_unskip:D
+ }
+ { \box_gclear:N #1 }
+ }
+\box_new:N \g__wstf_last_box
+\box_new:N \g__wstf_display_box
+\dim_new:N \g__wstf_display_pre_dim
+\cs_new_protected_nopar:Npn \__wstf_test_display_math:
+ {
+ \__wstf_if_last_hlist:T
+ {
+ \box_gset_to_last:N \g__wstf_pos_box
+ \tex_unskip:D
+ }
+ \box_clear:N \l__wstf_add_box
+ \box_gclear:N \g__wstf_display_box
+ \skip_gzero:N \g__wstf_last_skip
+ \skip_gzero:N \g__wstf_display_pre_skip
+ \bool_gset_false:N \g__wstf_amsmath_bool
+ \__wstf_add_last_skip:w
+ \__wstf_add_last_penalty:w
+ \__wstf_add_last_box:w
+ \__wstf_add_last_skip:w
+ \__wstf_add_last_skip:w
+ \__wstf_add_last_penalty:w
+ \__wstf_add_last_finalise:w \q_stop
+ }
+\box_new:N \l__wstf_add_box
+\box_new:N \g__wstf_pos_box
+\cs_new_protected_nopar:Npn \__wstf_add_last_stop:w
+ {
+ \vbox_unpack_drop:N \l__wstf_add_box
+ \use_none_delimit_by_q_stop:w
+ }
+\cs_new_protected_nopar:Npn \__wstf_add_last_skip:w
+ {
+ \__wstf_if_last_glue:TF
+ {
+ \skip_set_eq:NN \l__wstf_last_skip \tex_lastskip:D
+ \vbox_set:Nn \l__wstf_add_box
+ {
+ \skip_vertical:N \l__wstf_last_skip
+ \vbox_unpack_drop:N \l__wstf_add_box
+ }
+ \tex_unskip:D
+ \skip_gadd:Nn \g__wstf_last_skip { \l__wstf_last_skip }
+ }
+ { \__wstf_skip_stop:w }
+ }
+\skip_new:N \l__wstf_last_skip
+\skip_new:N \g__wstf_last_skip
+\cs_new_eq:NN \__wstf_skip_stop:w \__wstf_add_last_stop:w
+\cs_new_protected_nopar:Npn \__wstf_add_last_penalty:w
+ {
+ \__wstf_if_last_penalty:TF
+ {
+ \int_set_eq:NN \l__wstf_last_int \tex_lastpenalty:D
+ \vbox_set:Nn \l__wstf_add_box
+ {
+ \tex_penalty:D \l__wstf_last_int
+ \vbox_unpack_drop:N \l__wstf_add_box
+ }
+ \tex_unpenalty:D
+ \skip_gset_eq:NN \g__wstf_pre_skip \g__wstf_last_skip
+ \skip_gzero:N \g__wstf_last_skip
+ }
+ { \__wstf_penalty_stop:w }
+ }
+\int_new:N \l__wstf_last_int
+\cs_new_eq:NN \__wstf_penalty_stop:w \__wstf_add_last_stop:w
+\cs_new_protected_nopar:Npn \__wstf_add_last_box:w
+ {
+ \__wstf_if_last_hlist:TF
+ {
+ \skip_gzero:N \g__wstf_last_skip
+ \box_set_to_last:N \l__wstf_last_box
+ \vbox_set:Nn \l__wstf_add_box
+ {
+ \box_use_drop:N \l__wstf_last_box
+ \vbox_unpack_drop:N \l__wstf_add_box
+ }
+ }
+ { \__wstf_box_stop:w }
+ }
+\box_new:N \l__wstf_last_box
+\cs_new_eq:NN \__wstf_box_stop:w \__wstf_add_last_stop:w
+\cs_new_protected_nopar:Npn \__wstf_add_last_finalise:w
+ {
+ \int_gset_eq:NN \g__wstf_display_pre_int \l__wstf_last_int
+ \skip_gadd:Nn \g__wstf_display_pre_skip { \g__wstf_pre_skip }
+ \int_case:nnTF { \tex_lastnodetype:D }
+ {
+ { \c__wstf_hlist_node } { }
+ { \c__wstf_none_node } { }
+ { \c__wstf_whatsit_node } { }
+ }
+ { \box_gset_eq_drop:NN \g__wstf_display_box \l__wstf_add_box }
+ { \vbox_unpack_drop:N \l__wstf_add_box }
+ \use_none_delimit_by_q_stop:w
+ }
+\int_new:N \g__wstf_display_pre_int
+\skip_new:N \g__wstf_display_pre_skip
+\cs_new_protected_nopar:Npn \__wstf_amsmath_boot:w
+ {
+ \__wstf_add_last_skip:w
+ \__wstf_add_last_penalty:w
+ \cs_set_eq:NN \__wstf_box_stop:w \__wstf_add_last_stop:w
+ \__wstf_add_last_box:w
+ \bool_gset_true:N \g__wstf_amsmath_bool
+ \cs_set_eq:NN \__wstf_skip_stop:w \__wstf_amsmath_multline:w
+ \cs_set_eq:NN \__wstf_penalty_stop:w \__wstf_amsmath_stop:NN
+ \__wstf_amsmath_recursion:w
+ }
+\cs_new_protected_nopar:Npn \__wstf_amsmath_recursion:w
+ {
+ \__wstf_add_last_skip:w
+ \__wstf_add_last_skip:w
+ \__wstf_add_last_penalty:w
+ \__wstf_add_last_box:w
+ \__wstf_amsmath_recursion:w
+ }
+\cs_new_protected:Npn \__wstf_amsmath_stop:NN #1#2
+ {
+ \cs_set_eq:NN \__wstf_skip_stop:w \__wstf_add_last_stop:w
+ \cs_set_eq:NN \__wstf_penalty_stop:w \__wstf_add_last_stop:w
+ }
+\bool_new:N \g__wstf_amsmath_bool
+\cs_new_protected_nopar:Npn \__wstf_amsmath_multline:w
+ {
+ \__wstf_amsmath_stop:NN ? ?
+ \__wstf_add_last_penalty:w
+ \skip_gset_eq:NN \g__wstf_display_pre_skip
+ \g__wstf_pre_skip
+ \__wstf_add_last_skip:w
+ \__wstf_add_last_penalty:w
+ \__wstf_add_last_finalise:w
+ }
+\cs_new_protected_nopar:Npn \__wstf_amsmath_leqno:
+ {
+ \legacy_if:nTF { tagsleft@ }
+ { \bool_gset_true:N \g__wstf_leqno_bool }
+ { \bool_gset_false:N \g__wstf_leqno_bool }
+ }
+\__wstf_package_hook:nn { amsmath }
+ {
+ \cs_gset_eq:NN \__wstf_box_stop:w
+ \__wstf_amsmath_boot:w
+ \cs_gset_eq:NN \__wstf_test_leqno:
+ \__wstf_amsmath_leqno:
+ }
+\cs_new_protected_nopar:Npn \__wstf_set_float:
+ {
+ \cs_set_eq:NN \@captype \l__wstf_type_tl
+ \__wstf_float_pre_hook:
+ \__wstf_caption_hook:
+ \@floatboxreset
+ }
+\cs_new_eq:NN \__wstf_float_pre_hook: \__wstf_empty:
+\cs_new_eq:NN \__wstf_float_pos_hook: \__wstf_empty:
+\__wstf_package_hook:nn { float }
+ {
+ \bool_new:N \g__wstf_float_pos_bool
+ \cs_gset_protected_nopar:Npn \__wstf_float_pre_hook:
+ { \exp_args:No \__wstf_float_pre_aux:n { \l__wstf_type_tl } }
+ \cs_new_protected:Npn \__wstf_float_pre_aux:n #1
+ {
+ \cs_if_exist_use:cTF { fst@ #1 }
+ {
+ \@float@setevery {#1}
+ \bool_gset_true:N \g__wstf_float_pos_bool
+ }
+ { \bool_gset_false:N \g__wstf_float_pos_bool }
+ }
+ \cs_gset_protected_nopar:Npn \__wstf_float_pos_hook:
+ {
+ \bool_if:NT \g__wstf_float_pos_bool
+ { \exp_args:No \__wstf_float_pos_aux:n { \l__wstf_type_tl } }
+ }
+ \cs_new_protected:Npn \__wstf_float_pos_aux:n #1
+ {
+ \hbox_gset:Nn \g__wstf_stuff_box
+ {
+ \use:c { fst@ #1 }
+ \cs_set_eq:NN \@currbox \g__wstf_stuff_box
+ \vbox_gset:Nn \g__wstf_stuff_box
+ { \box_use_drop:N \g__wstf_stuff_box }
+ \exp_args:Ne \float@makebox
+ { \dim_eval:n { \box_wd:N \g__wstf_stuff_box } }
+ }
+ }
+ }
+\cs_new_eq:NN \__wstf_floatrow_hook: \__wstf_empty:
+\__wstf_package_hook:nn { floatrow }
+ {
+ \cs_gset_protected_nopar:Npn \__wstf_floatrow_hook:
+ {
+ \cs_set_eq:NN \@captype \l__wstf_type_tl
+ \killfloatstyle
+ \FR@redefs
+ \dim_zero:N \FBc@wd
+ \exp_args:Ne \flrow@setlist
+ {
+ { \l__wstf_type_tl }
+ { wrapfloat }
+ { wrap \l__wstf_type_tl }
+ }
+ \FRifFBOX \@@setframe \relax \@@FStrue
+ \hbox_gset:Nw \g__wstf_stuff_box
+ \tl_set:Nx \FBB@wd { \dim_use:N \l__wstf_width_dim }
+ \FB@fs@wd
+ \dim_set:Nn \l__wstf_width_dim { \FBo@wd }
+ }
+ \cs_gset_protected_nopar:Npn \__wstf_float_pre_hook:
+ { \the \FR@everyfloat }
+ \cs_gset_protected_nopar:Npn \__wstf_float_pos_hook:
+ {
+ \legacy_if:nTF { FBbuild }
+ {
+ \cs_set_eq:NN \@currbox \g__wstf_stuff_box
+ \vbox_gset:Nn \g__wstf_stuff_box
+ { \box_use_drop:N \g__wstf_stuff_box }
+ \flrow@FB { \l__wstf_width_dim }
+ }
+ {
+ \cs_undefine:N \flrow@typ@tmpset
+ \box_use_drop:N \g__wstf_stuff_box
+ }
+ \hbox_gset_end:
+ }
+ }
+\cs_new_eq:NN \__wstf_caption_hook: \__wstf_empty:
+\__wstf_package_hook:nn { caption }
+ {
+ \cs_gset_protected_nopar:Npn \__wstf_caption_hook:
+ { \exp_args:No \__wstf_caption_aux:n { \l__wstf_type_tl } }
+ \cs_new_protected:Npn \__wstf_caption_aux:n #1
+ {
+ \caption@settype {#1}
+ \caption@clearmargin
+ \caption@setoptions { wrap #1 }
+ }
+ }
+\keys_define:nn { wrapstuff }
+ {
+ abovesep .tl_set:N = \l__wstf_abovesep_tl ,
+ belowsep .tl_set:N = \l__wstf_belowsep_tl ,
+ leftsep .tl_set:N = \l__wstf_leftsep_tl ,
+ rightsep .tl_set:N = \l__wstf_rightsep_tl ,
+ linewidth .tl_set:N = \l__wstf_linewidth_tl ,
+ lines .tl_set:N = \l__wstf_lines_tl ,
+ width .tl_set:N = \l__wstf_width_tl ,
+ height .tl_set:N = \l__wstf_height_tl ,
+ hoffset .tl_set:N = \l__wstf_hoffset_tl ,
+ voffset .tl_set:N = \l__wstf_voffset_tl ,
+ type .tl_set:N = \l__wstf_type_tl ,
+ ratio .fp_set:N = \l__wstf_ratio_fp ,
+ top .int_set:N = \l__wstf_top_int ,
+ i .code:n = \__wstf_swap_true:N \c_true_bool ,
+ o .code:n = \__wstf_swap_true:N \c_false_bool ,
+ l .code:n = \__wstf_swap_false:N \c_zero_fp ,
+ r .code:n = \__wstf_swap_false:N \c_one_fp ,
+ c .code:n = \__wstf_swap_false:N \c__wstf_c_fp ,
+ column .choice: ,
+ column/true .code:n =
+ {
+ \bool_set_true:N \l__wstf_column_bool
+ \cs_set_eq:NN \__wstf_build_column:
+ \__wstf_build_column_strict:
+ } ,
+ column/par .code:n =
+ {
+ \bool_set_true:N \l__wstf_column_bool
+ \cs_set_eq:NN \__wstf_build_column:
+ \__wstf_build_column_fuzzy:
+ } ,
+ column/false .code:n =
+ { \bool_set_false:N \l__wstf_column_bool } ,
+ hsep .code:n =
+ {
+ \tl_set:Nn \l__wstf_leftsep_tl {#1}
+ \tl_set_eq:NN \l__wstf_rightsep_tl
+ \l__wstf_leftsep_tl
+ } ,
+ vsep .code:n =
+ {
+ \tl_set:Nn \l__wstf_abovesep_tl {#1}
+ \tl_set_eq:NN \l__wstf_belowsep_tl
+ \l__wstf_abovesep_tl
+ } ,
+ unknown .code:n =
+ { \exp_args:No \__wstf_unknown_key:n { \l_keys_key_str } } ,
+ leftsep .groups:n = main ,
+ rightsep .groups:n = main ,
+ hsep .groups:n = main ,
+ linewidth .groups:n = main ,
+ lines .groups:n = main ,
+ column .groups:n = main ,
+ hoffset .groups:n = main ,
+ voffset .groups:n = main ,
+ top .groups:n = stuff ,
+ abovesep .groups:n = stuff ,
+ belowsep .groups:n = stuff ,
+ vsep .groups:n = stuff ,
+ width .groups:n = stuff ,
+ height .groups:n = stuff ,
+ float .groups:n = stuff ,
+ ratio .groups:n = ratio ,
+ l .groups:n = ratio ,
+ r .groups:n = ratio ,
+ c .groups:n = ratio ,
+ i .groups:n = ratio ,
+ o .groups:n = ratio ,
+ column .default:n = true ,
+ column .initial:n = true ,
+ abovesep .initial:n = \c_zero_dim ,
+ belowsep .initial:n = \c_zero_dim ,
+ leftsep .initial:n = 1em ,
+ rightsep .initial:n = 1em ,
+ linewidth .initial:n = \linewidth ,
+ hoffset .initial:n = \c_zero_dim ,
+ voffset .initial:n = \c_zero_dim ,
+ width .initial:n = \c_zero_dim ,
+ height .initial:n = \c_zero_dim ,
+ ratio .initial:n = \c_one_fp ,
+ abovesep .value_required:n = true ,
+ belowsep .value_required:n = true ,
+ leftsep .value_required:n = true ,
+ rightsep .value_required:n = true ,
+ linewidth .value_required:n = true ,
+ width .value_required:n = true ,
+ height .value_required:n = true ,
+ hoffset .value_required:n = true ,
+ voffset .value_required:n = true ,
+ hsep .value_required:n = true ,
+ vsep .value_required:n = true ,
+ l .value_forbidden:n = true ,
+ r .value_forbidden:n = true ,
+ c .value_forbidden:n = true ,
+ i .value_forbidden:n = true ,
+ o .value_forbidden:n = true
+ }
+\fp_const:Nn \c__wstf_c_fp { 0.5 }
+\cs_new_protected:Npn \__wstf_swap_true:N #1
+ {
+ \bool_set_true:N \l__wstf_swap_bool
+ \bool_set_eq:NN \l__wstf_inner_bool #1
+ \bool_if:NTF \l__wstf_inner_bool
+ { \bool_set_false:N \l__wstf_outer_bool }
+ { \bool_set_true:N \l__wstf_outer_bool }
+ }
+\cs_new_protected_nopar:Npn \__wstf_swap_false:N
+ {
+ \bool_set_false:N \l__wstf_swap_bool
+ \fp_set_eq:NN \l__wstf_ratio_fp
+ }
+\cs_new_protected:Npn \__wstf_unknown_key:n #1
+ {
+ \regex_match:NnTF \c__wstf_integer_regex {#1}
+ { \int_set:Nn \l__wstf_top_int }
+ { \__wstf_unknown_key_error:n }
+ {#1}
+ }
+\regex_const:Nn \c__wstf_integer_regex { \A \d+ \Z }
+\cs_new_protected_nopar:Npn \__wstf_unknown_key_error:n
+ { \msg_error:nnn { wrapstuff } { unknown-key } }
+\msg_new:nnnn { wrapstuff } { unknown-key }
+ { The~key~'#1'~is~unknown~and~is~being~ignored. }
+ {
+ The~package~wrapstuff~does~not~have~a~key~called~'#1'.\\
+ Check~that~you~have~spelled~the~key~name~correctly.
+ }
+\NewDocumentCommand \wrapstuffset { m }
+ { \keys_set:nn { wrapstuff } {#1} }
+\NewDocumentCommand \wrapstuffclear { }
+ {
+ \par
+ \__wstf_clear:
+ }
+\cs_if_exist:NTF \ProcessKeyOptions
+ { \ProcessKeyOptions [ wrapstuff ] }
+ {
+ \RequirePackage { l3keys2e }
+ \ProcessKeysOptions { wrapstuff }
+ }
+%%
+%% This work consists of the file wrapstuff.dtx,
+%% and the derived files wrapstuff.pdf,
+%% wrapstuff.sty,
+%% wrapstuff.ins and
+%% README.md.
+%%
+%% End of file `wrapstuff.sty'.