% % lltjp-atbegshi.sty % \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{lltjp-atbegshi}[2024-05-14 Patching \string\shipout\space hooks for LuaTeX-ja] % concept: execute all hooks inside yoko direction \vbox %<*ltshipout>----------------------------------- % \RequirePackage{expl3} \ExplSyntaxOn\makeatletter \box_new:N \l__platex_shipout_dummy_box \if_cs_exist:N \__shipout_execute_main_cont:Nnnn %% 2021-06-01 \cs_new_eq:NN \__platex_original_shipout_execute_main_cont:Nnnn \__shipout_execute_main_cont:Nnnn \cs_set:Npn \__shipout_execute_main_cont:Nnnn #1#2#3#4 { % if the box #1 is not a \yoko-box (= horizontal writing), % then make it a \yoko-box behorehand. \platex_if_box_yoko:NF #1 { \vbox_set:Nn #1 { \platex_direction_yoko: \box_use:N #1 } } % if the current direction is not \yoko, % then enclose \__shipout_execute_main_cont:Nnnn with % a dummy \yoko-box named \l__platex_shipout_dummy_box. \platex_if_direction_yoko:TF { \__platex_original_shipout_execute_main_cont:Nnnn { #1 } { #2 } { #3 } { #4 } }{ \vbox_set:Nn \l__platex_shipout_dummy_box { \platex_direction_yoko: \__platex_original_shipout_execute_main_cont:Nnnn { #1 } { #2 } { #3 } { #4 } } % [Limitation] the code above may discard some contents, % so we'd like to put it back by \box\l__platex_shipout_dummy_box. % however, an infinite loop occurs if we uncomment the line below % so we can't. %\box_use:N \l__platex_shipout_dummy_box \box_clear:N \l__platex_shipout_dummy_box } } \else: %% 2020-10-01 \cs_new_eq:NN \__platex_original_shipout_execute_cont: \__shipout_execute_cont: \cs_set:Npn \__shipout_execute_cont: { \platex_if_box_yoko:NF \l_shipout_box { \vbox_set:Nn \l_shipout_box { \platex_direction_yoko: \box_use:N \l_shipout_box } } \platex_if_direction_yoko:TF { \__platex_original_shipout_execute_cont: }{ \vbox_set:Nn \l__platex_shipout_dummy_box { \platex_direction_yoko: \__platex_original_shipout_execute_cont: } \box_clear:N \l__platex_shipout_dummy_box } } \fi: %----------------------------------- \ExplSyntaxOff \endinput