From 9fac64baaa5e3e817cde6db5f350e739ccb78c7f Mon Sep 17 00:00:00 2001 From: Hironobu Yamashita Date: Tue, 5 May 2020 12:37:43 +0000 Subject: [e][u]ptex: inhibit_glue_flag in extensions (H. Kitagawa) git-svn-id: svn://tug.org/texlive/trunk@55026 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/web2c/eptexdir/ChangeLog | 5 ++ Build/source/texk/web2c/eptexdir/pdfutils.ch | 1 + Build/source/texk/web2c/ptexdir/ChangeLog | 5 ++ Build/source/texk/web2c/ptexdir/ptex-base.ch | 58 +++++++++++++++++++--- .../web2c/ptexdir/tests/inhibitglue_extensions.tex | 50 +++++++++++++++++++ 5 files changed, 113 insertions(+), 6 deletions(-) create mode 100644 Build/source/texk/web2c/ptexdir/tests/inhibitglue_extensions.tex diff --git a/Build/source/texk/web2c/eptexdir/ChangeLog b/Build/source/texk/web2c/eptexdir/ChangeLog index c273bad7fa1..58f0987ff03 100644 --- a/Build/source/texk/web2c/eptexdir/ChangeLog +++ b/Build/source/texk/web2c/eptexdir/ChangeLog @@ -1,3 +1,8 @@ +2020-05-05 Hironori Kitagawa + + * pdfutils.ch: Sync with inhibit_glue_flag improvement. + https://github.com/texjporg/tex-jp-build/pull/102 + 2019-12-10 Hironori Kitagawa * am/eptex.am (eptex_CPPFLAGS): append $(ZLIB_INCLUDES). diff --git a/Build/source/texk/web2c/eptexdir/pdfutils.ch b/Build/source/texk/web2c/eptexdir/pdfutils.ch index 36e821d1f9a..c8ccd05ed82 100644 --- a/Build/source/texk/web2c/eptexdir/pdfutils.ch +++ b/Build/source/texk/web2c/eptexdir/pdfutils.ch @@ -1572,6 +1572,7 @@ end; @ @= begin new_whatsit(pdf_save_pos_node, small_node_size); + inhibit_glue_flag:=false; end @ @= diff --git a/Build/source/texk/web2c/ptexdir/ChangeLog b/Build/source/texk/web2c/ptexdir/ChangeLog index b80ac3052ed..0c640c96592 100644 --- a/Build/source/texk/web2c/ptexdir/ChangeLog +++ b/Build/source/texk/web2c/ptexdir/ChangeLog @@ -1,3 +1,8 @@ +2020-05-05 Hironori Kitagawa + + * ptex-base.ch: Improved resetting inhibit_glue_flag in extensions. + https://github.com/texjporg/tex-jp-build/pull/102 + 2020-02-09 Phelype Oleinik * ptexdir/ptex-base.ch: extra end; needed for the scan_file_name diff --git a/Build/source/texk/web2c/ptexdir/ptex-base.ch b/Build/source/texk/web2c/ptexdir/ptex-base.ch index fce669324f6..6d1e0f405d7 100644 --- a/Build/source/texk/web2c/ptexdir/ptex-base.ch +++ b/Build/source/texk/web2c/ptexdir/ptex-base.ch @@ -6323,15 +6323,61 @@ undump_things(char_base[null_font], font_ptr+1-null_font); ctype_base[null_font]:=0; char_base[null_font]:=0; width_base[null_font]:=0; @z -@x [53.????] do_extension, inhibit_glue_flag -begin case cur_chr of -open_node:@; +@x [53.????] new_write_whatsit, inhibit_glue_flag +write_stream(tail):=cur_val; +end; @y -begin inhibit_glue_flag:=false; -case cur_chr of -open_node:@; +write_stream(tail):=cur_val; +inhibit_glue_flag:=false; +end; @z +@x [53.????] Implement \special, inhibit_glue_flag +@= +begin new_whatsit(special_node,write_node_size); write_stream(tail):=null; +p:=scan_toks(false,true); write_tokens(tail):=def_ref; +end +@y +@= +begin new_whatsit(special_node,write_node_size); write_stream(tail):=null; +p:=scan_toks(false,true); write_tokens(tail):=def_ref; +inhibit_glue_flag:=false; +end +@z + +@x [53.????] Implement \immediate, inhibit_glue_flag + begin p:=tail; do_extension; {append a whatsit node} + out_what(tail); {do the action immediately} + flush_node_list(tail); tail:=p; link(p):=null; + end +@y + begin k:=inhibit_glue_flag; + p:=tail; do_extension; {append a whatsit node} + out_what(tail); {do the action immediately} + flush_node_list(tail); tail:=p; link(p):=null; + inhibit_glue_flag:=k; + end +@z + +@x [53.????] fix_language, inhibit_glue_flag +if l<>clang then + begin new_whatsit(language_node,small_node_size); +@y +if l<>clang then + begin inhibit_glue_flag:=false; + new_whatsit(language_node,small_node_size); +@z + +@x [53.????] set_language, inhibit_glue_flag +if abs(mode)<>hmode then report_illegal_case +else begin new_whatsit(language_node,small_node_size); +@y +if abs(mode)<>hmode then report_illegal_case +else begin inhibit_glue_flag:=false; + new_whatsit(language_node,small_node_size); +@z + + @x [53.1376] l.26309 - pTeX: @ = @!debug_format_file: boolean; diff --git a/Build/source/texk/web2c/ptexdir/tests/inhibitglue_extensions.tex b/Build/source/texk/web2c/ptexdir/tests/inhibitglue_extensions.tex new file mode 100644 index 00000000000..b4942bd2df6 --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/tests/inhibitglue_extensions.tex @@ -0,0 +1,50 @@ +\documentclass{jsarticle} +\usepackage[deluxe]{otf} +\begin{document} +\def\cs#1{\texttt{\textbackslash #1}} +\immediate\openout15="\jobname.hoge"\immediate\closeout15 + +\tracingonline1\showboxdepth100\showboxbreadth10000 +あい\inhibitglue(あ) + +あい\inhibitglue\openout14="\jobname-P.out" +(あ\cs{openout}←whatsit作る + +あい\inhibitglue\write14{う}(あ\cs{write}←whatsit作る + +あい\inhibitglue\closeout14(あ\cs{closeout}←whatsit作る + +あい\inhibitglue\special{A}(あ\cs{special}←whatsit作る + +あい\inhibitglue\immediate(あ\cs{immediate} + +あい\inhibitglue\immediate\openout14="\jobname-I.out" +(あ\cs{immediate}\cs{openout} + +あい\inhibitglue\immediate\write14{え}(あ\cs{immediate}\cs{write} + +あい\inhibitglue\immediate\closeout14(あ\cs{immediate}\cs{closeout} + +あい\inhibitglue\immediate\special{A}(あ\cs{immediate}\cs{special}$^*$ + +あい\inhibitglue\pdfsavepos(あ\cs{pdfsavepos}←whatsit作る + +あい\inhibitglue\immediate\pdfsavepos(あ\cs{immediate}\cs{pdfsavepos}$^*$ + +あい\inhibitglue\read16to\CS (あ\cs{read} + +あい\inhibitglue\openin1="\jobname.aux" +(あ\cs{openin}\closein1 + +あい\inhibitglue\setlanguage1(あ\cs{setlanguage}←whatsit作る + + +あい\inhibitglue\textbf{(う)} + +あい\inhibitglue\textsf{(う)} + +あい\inhibitglue\textsf{(う)} + +$^*$: \cs{immediate}は効力なし +\end{document} + -- cgit v1.2.3