texlive[49958] Build/source/texk/web2c/ptexdir: inhibitglue (ptex and

commits+hironobu at tug.org commits+hironobu at tug.org
Wed Feb 6 12:00:55 CET 2019


Revision: 49958
          http://tug.org/svn/texlive?view=revision&revision=49958
Author:   hironobu
Date:     2019-02-06 12:00:54 +0100 (Wed, 06 Feb 2019)
Log Message:
-----------
inhibitglue (ptex and friends 4 of 5)

Modified Paths:
--------------
    trunk/Build/source/texk/web2c/ptexdir/ChangeLog
    trunk/Build/source/texk/web2c/ptexdir/ptex-base.ch

Added Paths:
-----------
    trunk/Build/source/texk/web2c/ptexdir/tests/inhibitglue.tex

Modified: trunk/Build/source/texk/web2c/ptexdir/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/ptexdir/ChangeLog	2019-02-06 11:00:04 UTC (rev 49957)
+++ trunk/Build/source/texk/web2c/ptexdir/ChangeLog	2019-02-06 11:00:54 UTC (rev 49958)
@@ -5,6 +5,20 @@
 	* tests/control_symbol.tex: More test cases.
 	* ptex_version.h: pTeX version p3.8.2.
 
+2019-02-03  Hironori Kitagawa  <h_kitagawa2001 at yahoo.co.jp>
+	and Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
+
+	* ptex-base.ch: Change the behavior of \inhibitglue. See
+	  https://github.com/texjporg/tex-jp-build/issues/28.
+	  - \inhibitglue becomes ineffective when it encounters a node.
+	    (former commit on 2014-05-06 was still insufficient.)
+	  - non-expandable tokens without node (e.g. \relax, assignment)
+	    becomes transparent.
+	  - \inhibitglue inside a list does not affect another list.
+	  - Add new primitive \disinhibitglue to reset the inhibit glue
+	    flag explicitly.
+	* tests/inhibitglue.tex: Added.
+
 2019-01-23  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
 
 	* ptex-base.ch: Add dump_kanji and undump_kanji.

Modified: trunk/Build/source/texk/web2c/ptexdir/ptex-base.ch
===================================================================
--- trunk/Build/source/texk/web2c/ptexdir/ptex-base.ch	2019-02-06 11:00:04 UTC (rev 49957)
+++ trunk/Build/source/texk/web2c/ptexdir/ptex-base.ch	2019-02-06 11:00:54 UTC (rev 49958)
@@ -1000,6 +1000,7 @@
   @!pdisp_field: scaled;
   @!head_field,@!tail_field,@!pnode_field,@!last_jchr_field: pointer;
   @!disp_called_field: boolean;
+  @!inhibit_glue_flag_field: integer;
 @z
 
 @x [16.213] l.4445 - pTeX: last_jchr, direction, adjust_dir, prev_{node,disp}
@@ -1014,6 +1015,7 @@
 @d prev_disp==cur_list.pdisp_field {displacemant at |prev_node|}
 @d last_jchr==cur_list.last_jchr_field {final jchar node on current list}
 @d disp_called==cur_list.disp_called_field {is a |disp_node| present in the current list?}
+ at d inhibit_glue_flag==cur_list.inhibit_glue_flag_field {is \.{inhibitglue} is specified at the current list?}
 @z
 
 @x [16.214] l.4464 - pTeX: prev_append: disp_node
@@ -4044,6 +4046,17 @@
 othercases confusion("mlist3")
 @z
 
+ at x [37.???] init_span: pTeX: init inhibit_glue_flag
+if mode=-hmode then space_factor:=1000
+else  begin prev_depth:=ignore_depth; normal_paragraph;
+  end;
+ at y
+if mode=-hmode then space_factor:=1000
+else  begin prev_depth:=ignore_depth; normal_paragraph;
+  end;
+inhibit_glue_flag:=false;
+ at z
+
 @x [37.796] l.16276 - pTeX: call adjust_hlist
   begin adjust_tail:=cur_tail; u:=hpack(link(head),natural); w:=width(u);
 @y
@@ -4054,7 +4067,7 @@
   u:=hpack(link(head),natural); w:=width(u);
 @z
 
- at x [37.799] l.16331 - pTeX: call adjust_hlist
+ at x [37.799] l.16331 - fin_row: pTeX: call adjust_hlist
   begin p:=hpack(link(head),natural);
 @y
   begin adjust_hlist(head,false);
@@ -4064,6 +4077,13 @@
   p:=hpack(link(head),natural);
 @z
 
+ at x [37.799] l.16331 - fin_row: init inhibit_glue_flag
+  link(tail):=p; tail:=p; space_factor:=1000;
+ at y
+  link(tail):=p; tail:=p; space_factor:=1000;
+  inhibit_glue_flag:=false;
+ at z
+
 @x [37.800] l.16353 - pTeX: call adjust_hlist
 var @!p,@!q,@!r,@!s,@!u,@!v: pointer; {registers for the list operations}
 @y
@@ -4847,6 +4867,13 @@
   end
 @z
 
+ at x [47.????] pTeX: reset inhibit_glue_flag at rule_node
+vmode+hrule,hmode+vrule,mmode+vrule: begin tail_append(scan_rule_spec);
+ at y
+vmode+hrule,hmode+vrule,mmode+vrule: begin tail_append(scan_rule_spec);
+  inhibit_glue_flag := false;
+ at z
+
 @x [47.1060] pTeX: append_glue, inhibit_glue_flag
 end; {now |cur_val| points to the glue specification}
 tail_append(new_glue(cur_val));
@@ -4971,9 +4998,12 @@
 @z
 
 @x [47.1076] pTeX: sub_exp_box
+  else  begin if abs(mode)=hmode then space_factor:=1000
     else  begin p:=new_noad;
       math_type(nucleus(p)):=sub_box;
 @y
+  else  begin if abs(mode)=hmode then 
+    begin space_factor:=1000; inhibit_glue_flag:=false; end
     else  begin p:=new_noad;
       math_type(nucleus(p)):=sub_exp_box;
 @z
@@ -5004,7 +5034,7 @@
   end
 @z
 
- at x [47.1079] l.20920  - pTeX: disp_node, adjust direction
+ at x [47.1079] l.20920 begin_box - pTeX: disp_node, adjust direction
 @!m:quarterword; {the length of a replacement list}
 @y
 @!r:pointer; {running behind |p|}
@@ -5126,6 +5156,12 @@
 push_nest; mode:=-k; adjust_dir:=a_dir;
 @z
 
+ at x [47.1083] reset inhibit_glue_flag
+else  begin space_factor:=1000;
+ at y
+else  begin space_factor:=1000; inhibit_glue_flag:=false;
+ at z
+
 @x [47.1085] l.21031 - pTeX: end of box, call adjust_hlist
 hbox_group: package(0);
 adjusted_hbox_group: begin adjust_tail:=adjust_head; package(0);
@@ -5194,6 +5230,13 @@
 mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang;
 @z
 
+ at x [47.???] indent_in_hmode: reset inhibit_glue_flag
+  if abs(mode)=hmode then space_factor:=1000
+ at y
+  if abs(mode)=hmode then 
+    begin space_factor:=1000; inhibit_glue_flag:=false; end
+ at z
+
 @x [47.1096] l.21155 - pTeX: end_graf, call adjust_hlist
   begin if head=tail then pop_nest {null paragraphs are ignored}
   else line_break(widow_penalty);
@@ -5203,10 +5246,11 @@
        end;
 @z
 
- at x [47.1099] l.21184 - pTeX: insert and adjust
+ at x [47.1099] l.21184 begin_insert_or_adjust - pTeX: insert and adjust
 new_save_level(insert_group); scan_left_brace; normal_paragraph;
 push_nest; mode:=-vmode; prev_depth:=ignore_depth;
 @y
+inhibit_glue_flag:=false;
 new_save_level(insert_group); scan_left_brace; normal_paragraph;
 push_nest; mode:=-vmode; direction:=adjust_dir; prev_depth:=ignore_depth;
 @z
@@ -5266,9 +5310,10 @@
   end;
 @z
 
- at x [47.1101] l.21214 - pTeX: mark_node, prev_append
+ at x [47.1101] l.21214 make_mark - pTeX: mark_node, prev_append
 mark_ptr(p):=def_ref; link(tail):=p; tail:=p;
 @y
+inhibit_glue_flag:=false;
 mark_ptr(p):=def_ref;
 if not is_char_node(tail)and(type(tail)=disp_node) then
   prev_append(p)
@@ -5283,6 +5328,7 @@
 @y
 procedure append_penalty;
 begin scan_int;
+  inhibit_glue_flag:=false;
   if not is_char_node(tail)and(type(tail)=disp_node) then
     prev_append(new_penalty(cur_val))
   else tail_append(new_penalty(cur_val));
@@ -5327,7 +5373,7 @@
 @!disp:scaled; {displacement}
 @z
 
- at x [47.1110] l.21314 - pTeX: free box node, delete kanji_skip
+ at x [47.1110] l.21314 unpackage - pTeX: free box node, delete kanji_skip
 if (abs(mode)=mmode)or((abs(mode)=vmode)and(type(p)<>vlist_node))or@|
    ((abs(mode)=hmode)and(type(p)<>hlist_node)) then
   begin print_err("Incompatible list can't be unboxed");
@@ -5376,14 +5422,20 @@
   free_node(p,box_node_size);
   end;
 @z
+
 @x [47.1110] l.22014 - pTeX: free box node, delete kanji_skip
 while link(tail)<>null do tail:=link(tail);
 @y
 while link(tail)<>null do
+  {reset |inhibit_glue_flag| when a node other than |disp_node| is found;
+   |disp_node| is always inserted according to tex-jp-build issue 40}
   begin p:=tail; tail:=link(tail);
-  if not is_char_node(tail) then
+  if is_char_node(tail) then
+    inhibit_glue_flag:=false
+  else
     case type(tail) of
-    glue_node :
+    glue_node : begin
+      inhibit_glue_flag:=false;
       if (subtype(tail)=kanji_skip_code+1)
              or(subtype(tail)=xkanji_skip_code+1) then
         begin link(p):=link(tail);
@@ -5390,14 +5442,18 @@
         delete_glue_ref(glue_ptr(tail));
         free_node(tail,small_node_size); tail:=p;
         end;
-    penalty_node :
+      end;
+    penalty_node : begin
+      inhibit_glue_flag:=false;
       if subtype(tail)=widow_pena then
         begin link(p):=link(tail); free_node(tail,small_node_size);
         tail:=p;
         end;
+      end;
     disp_node :
       begin prev_disp:=disp; disp:=disp_dimen(tail); prev_node:=p;
       end;
+    othercases inhibit_glue_flag:=false;
     endcases;
   end;
 @z
@@ -5441,6 +5497,16 @@
   end;
 @z
 
+ at x [47.????] pTeX: reset inhibit_glue_flag at disc_node
+procedure append_discretionary;
+var c:integer; {hyphen character}
+begin tail_append(new_disc);
+ at y
+procedure append_discretionary;
+var c:integer; {hyphen character}
+begin tail_append(new_disc); inhibit_glue_flag:=false;
+ at z
+
 @x pTeX: direction check in \discretionary 
 @!n:integer; {length of discretionary list}
 @y
@@ -5470,6 +5536,12 @@
   end;
 @z
 
+ at x pTeX: reset inhibit_glue_flag
+push_nest; mode:=-hmode; space_factor:=1000;
+ at y
+push_nest; mode:=-hmode; space_factor:=1000; inhibit_glue_flag:=false;
+ at z
+
 @x pTeX: direction check in \discretionary 
 else link(tail):=p;
 if n<=max_quarterword then replace_count(tail):=n
@@ -5538,7 +5610,7 @@
   link(tail):=p;
   if link(p)<>null then tail:=link(p) else tail:=p;
   @<Append |disp_node| at end of displace area@>;
-  space_factor:=1000;
+  space_factor:=1000; inhibit_glue_flag:=false;
 @z
 
 @x [47.1124] l.22180 - pTeX: make_accent Kanji, insert disp_node
@@ -5754,7 +5826,6 @@
     help1("IGNORE.");@/
     error;
   end;
-  inhibit_glue_flag:=false;
 @z
 
 @x [48.1158] l.22690 - pTeX: scan_math
@@ -5776,14 +5847,6 @@
 scan_math(nucleus(tail),kcode_noad(tail));
 @z
 
- at x [48.1167] pTeX: vcenter, inhibit_glue_flag
-mmode+vcenter: begin scan_spec(vcenter_group,false); normal_paragraph;
- at y
-mmode+vcenter: begin 
-  scan_spec(vcenter_group,false); normal_paragraph;
-  inhibit_glue_flag:=false;
- at z
-
 @x [48.1164] l.22790 - pTeX: vcenter : dir
 vcenter_group: begin end_graf; unsave; save_ptr:=save_ptr-2;
   p:=vpack(link(head),saved(1),saved(0)); pop_nest;
@@ -5800,19 +5863,6 @@
   end;
 @z
 
- at x [48.1176] pTeX: sub_sup, inhibit_glue_flag
-procedure sub_sup;
-var t:small_number; {type of previous sub/superscript}
-@!p:pointer; {field to be filled by |scan_math|}
-begin t:=empty; p:=null;
- at y
-procedure sub_sup;
-var t:small_number; {type of previous sub/superscript}
-@!p:pointer; {field to be filled by |scan_math|}
-begin t:=empty; p:=null;
-inhibit_glue_flag:=false;
- at z
-
 @x [48.1176] l.22864 - pTeX: scan_math
 scan_math(p);
 @y
@@ -5819,12 +5869,6 @@
 scan_math(p,null);
 @z
 
- at x [48.1181] pTeX: math_fraction, inhibit_glue_flag
-begin c:=cur_chr;
- at y
-begin c:=cur_chr; inhibit_glue_flag:=false;
- at z
-
 @x [48.1186] l.23006 - pTeX: copy kanji code
      if math_type(supscr(p))=empty then
       begin mem[saved(0)].hh:=mem[nucleus(p)].hh;
@@ -5833,12 +5877,6 @@
       begin mem[saved(0)].hh:=mem[nucleus(p)].hh;
 @z
 
- at x [48.1191] pTeX: math_left_right, inhibit_glue_flag
-begin t:=cur_chr;
- at y
-begin t:=cur_chr; inhibit_glue_flag:=false;
- at z
-
 @x [48.1194] l.23078 - pTeX: set cur_kanji_skip, cur_xkanji_skip
 var l:boolean; {`\.{\\leqno}' instead of `\.{\\eqno}'}
 @y
@@ -5876,7 +5914,7 @@
 while link(tail)<>null do tail:=link(tail);
 tail_append(new_math(math_surround,after));
 @<Append |disp_node| at end of displace area@>;
-space_factor:=1000; unsave;
+space_factor:=1000; inhibit_glue_flag:=false; unsave;
 end
 @z
 
@@ -5883,7 +5921,7 @@
 @x [48.1200] l.23203 - pTeX: adjust direction
 push_nest; mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang;
 @y
-push_nest; adjust_dir:=direction;
+push_nest; adjust_dir:=direction; inhibit_glue_flag:=false;
 mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang;
 @z
 
@@ -6251,6 +6289,15 @@
   ctype_base[null_font]:=0; char_base[null_font]:=0; width_base[null_font]:=0;
 @z
 
+ at x [53.????] do_extension, inhibit_glue_flag
+begin case cur_chr of
+open_node:@<Implement \.{\\openout}@>;
+ at y
+begin inhibit_glue_flag:=false;
+case cur_chr of
+open_node:@<Implement \.{\\openout}@>;
+ at z
+
 @x [53.1376] l.26309 - pTeX:
 @<Glob...@> =
 @!debug_format_file: boolean;
@@ -6419,23 +6466,20 @@
 @d new_pos=0
 @d cur_pos=1
 
-@<Global...@>=
-  inhibit_glue_flag:boolean;
-
-@ @<Set init...@>=
-  inhibit_glue_flag:=false;
-
 @ @<Cases of |main_control| that don't...@>=
-  any_mode(inhibit_glue): inhibit_glue_flag:=true;
+  any_mode(inhibit_glue): inhibit_glue_flag:=(cur_chr=0);
 
 @ @<Put each...@>=
 primitive("inhibitglue",inhibit_glue,0);
 @!@:inhibit_glue_}{\.{\\inhibitglue} primitive@>
+primitive("disinhibitglue",inhibit_glue,1);
+@!@:dis_inhibit_glue_}{\.{\\disinhibitglue} primitive@>
 primitive("inhibitxspcode",assign_inhibit_xsp_code,inhibit_xsp_code_base);
 @!@:inhibit_xsp_code_}{\.{\\inhibitxspcode} primitive@>
 
 @ @<Cases of |print_cmd_chr|...@>=
-inhibit_glue: print_esc("inhibitglue");
+inhibit_glue: if (chr_code>0) then print_esc("disinhibitglue")
+  else print_esc("inhibitglue");
 assign_inhibit_xsp_code: print_esc("inhibitxspcode");
 
 @ @<Declare procedures needed in |scan_something_internal|@>=
@@ -7121,7 +7165,6 @@
 procedure set_math_kchar(@!c:integer);
 var p:pointer; {the new noad}
 begin p:=new_noad; math_type(nucleus(p)):=math_jchar;
-inhibit_glue_flag:=false;
 character(nucleus(p)):=qi(0);
 math_kcode(p):=c; fam(nucleus(p)):=cur_jfam;
 if font_dir[fam_fnt(fam(nucleus(p))+cur_size)]=dir_default then
@@ -7201,9 +7244,9 @@
         end
       else cur_l:=qi(get_jfm_pos(KANJI(cur_chr),main_f));
       end;
-    inhibit_glue: begin inhibit_glue_flag:=true; goto again_2; end;
+    inhibit_glue: begin inhibit_glue_flag:=(cur_chr=0); goto again_2; end;
     othercases begin ins_kp:=max_halfword;
-      cur_l:=qi(0); cur_r:=non_char; lig_stack:=null;
+      cur_l:=qi(-1); cur_r:=non_char; lig_stack:=null;
       end;
   endcases;
 @#
@@ -7253,7 +7296,9 @@
 @ @<Look ahead for glue or kerning@>=
 cur_q:=tail;
 if inhibit_glue_flag<>true then
-  begin if (tail=link(head))and(not is_char_node(tail))and(type(tail)=disp_node) then
+  begin { print("IF");print_int(cur_l); }
+  if cur_l<qi(0) then cur_l:=qi(0) else inhibit_glue_flag:=false;
+  if (tail=link(head))and(not is_char_node(tail))and(type(tail)=disp_node) then
     goto skip_loop
   else begin if char_tag(main_i)=gk_tag then
     begin main_k:=glue_kern_start(main_f)(main_i);
@@ -7297,8 +7342,12 @@
     end;
   end;
   end;
-end;
-skip_loop: inhibit_glue_flag:=false;
+end
+else
+  begin { print("IT");print_int(cur_l); }
+  if cur_l<qi(0) then cur_l:=qi(0) else inhibit_glue_flag:=false;
+  end;
+skip_loop: do_nothing;
 
 @ @<Basic printing...@>=
 procedure print_kanji(@!s:KANJI_code); {prints a single character}

Added: trunk/Build/source/texk/web2c/ptexdir/tests/inhibitglue.tex
===================================================================
--- trunk/Build/source/texk/web2c/ptexdir/tests/inhibitglue.tex	                        (rev 0)
+++ trunk/Build/source/texk/web2c/ptexdir/tests/inhibitglue.tex	2019-02-06 11:00:54 UTC (rev 49958)
@@ -0,0 +1,220 @@
+%#!ptex2pdf -e inhibitglue.tex
+\parindent0pt
+\def\head#1{\par\noindent{\tentt ■\string#1}\par}
+\noautospacing \noautoxspacing
+
+%%% unexpandable tokens with non-discardable nodes
+
+\head{\null}
+あ)\inhibitglue (あ\par             % ベタ
+あ)\null\inhibitglue (あ\par        % 二分
+あ)\inhibitglue\null (あ\par        % 二分
+あ)\null\inhibitglue\null (あ\par   % 全角【TL17二分】
+あ)\null (あ\par                    % 全角
+
+\head{\unbox}
+\def\unbox{\unhcopy200 }
+\setbox200=\hbox{}
+あ)\inhibitglue (あ\par             % ベタ
+あ)\unbox\inhibitglue (あ\par       % 二分
+あ)\inhibitglue\unbox (あ\par       % ベタ【TL17二分】
+あ)\unbox\inhibitglue\unbox (あ\par % 二分
+あ)\unbox (あ\par                   % 全角
+\setbox200=\hbox{漢}
+あ)\inhibitglue (あ\par             % ベタ
+あ)\unbox\inhibitglue (あ\par       % 前二分
+あ)\inhibitglue\unbox (あ\par       % 後二分
+あ)\unbox\inhibitglue\unbox (あ\par % 前後二分【TL17前二分】
+あ)\unbox (あ\par                   % 前後二分
+
+\head{\vrule}
+あ)\inhibitglue (あ\par             % ベタ
+あ)\vrule\inhibitglue (あ\par       % 二分
+あ)\inhibitglue\vrule (あ\par       % 二分
+あ)\vrule\inhibitglue\vrule (あ\par % 全角【TL17二分】
+あ)\vrule (あ\par                   % 全角
+
+\head{\discretionary}
+\def\disc{\discretionary{}{}{}}
+あ)\inhibitglue (あ\par             % ベタ
+あ)\disc\inhibitglue (あ\par        % 二分
+あ)\inhibitglue\disc (あ\par        % 二分
+あ)\disc\inhibitglue\disc (あ\par   % 全角【TL17二分】
+あ)\disc (あ\par                    % 全角
+
+\head{\special}
+\def\spec{\special{}}
+あ)\inhibitglue (あ\par             % ベタ
+あ)\spec\inhibitglue (あ\par        % 二分
+あ)\inhibitglue\spec (あ\par        % 二分
+あ)\spec\inhibitglue\spec (あ\par   % 全角【TL17二分】
+あ)\spec (あ\par                    % 全角
+
+\head{\write-1}
+\def\tlog{\write-1{}}
+あ)\inhibitglue (あ\par             % ベタ
+あ)\tlog\inhibitglue (あ\par        % 二分
+あ)\inhibitglue\tlog (あ\par        % 二分
+あ)\tlog\inhibitglue\tlog (あ\par   % 全角【TL17二分】
+あ)\tlog (あ\par                    % 全角
+
+\head{\insert}
+\def\ins{\insert201{}}
+あ)\inhibitglue (あ\par             % ベタ
+あ)\inhibitglue\ins (あ\par         % 二分
+あ)\ins\inhibitglue (あ\par         % 二分
+あ)\ins\inhibitglue\ins (あ\par     % 全角【TL17二分】
+あ)\ins (あ\par                     % 全角
+
+\head{\mark}
+\def\mrk{\mark{}}
+あ)\inhibitglue (あ\par             % ベタ
+あ)\inhibitglue\mrk (あ\par         % 二分
+あ)\mrk\inhibitglue (あ\par         % 二分
+あ)\mrk\inhibitglue\mrk (あ\par     % 全角【TL17二分】
+あ)\mrk (あ\par                     % 全角
+
+\head{\vadjust}
+\def\adj{\vadjust{}}
+あ)\inhibitglue (あ\par             % ベタ
+あ)\inhibitglue\adj (あ\par         % 二分
+あ)\adj\inhibitglue (あ\par         % 二分
+あ)\adj\inhibitglue\adj (あ\par     % 全角【TL17二分】
+あ)\adj (あ\par                     % 全角
+
+\head{\math}
+\def\math{$ $}
+あ)\inhibitglue (あ\par             % ベタ
+あ)\inhibitglue\math (あ\par        % 二分
+あ)\math\inhibitglue (あ\par        % 二分
+あ)\math\inhibitglue\math (あ\par   % 全角【TL17二分】
+あ)\math (あ\par                    % 全角
+
+%%% unexpandable tokens with discardable nodes (glue, kern, penalty)
+
+\head{\hskip0pt}
+\def\zskip{\hskip0pt}
+あ)\inhibitglue (あ\par             % ベタ
+あ)\zskip\inhibitglue (あ\par       % 二分
+あ)\inhibitglue\zskip (あ\par       % 二分
+あ)\zskip\inhibitglue\zskip (あ\par % 全角
+あ)\zskip (あ\par                   % 全角
+
+\head{\kern0pt}
+\def\zkern{\kern0pt}
+あ)\inhibitglue (あ\par             % ベタ
+あ)\zkern\inhibitglue (あ\par       % 二分
+あ)\inhibitglue\zkern (あ\par       % 二分
+あ)\zkern\inhibitglue\zkern (あ\par % 全角
+あ)\zkern (あ\par                   % 全角
+
+\head{\penalty10000}
+\def\zpena{\penalty10000 }
+あ)\inhibitglue (あ\par             % ベタ
+あ)\zpena\inhibitglue (あ\par       % 二分
+あ)\inhibitglue\zpena (あ\par       % 二分
+あ)\zpena\inhibitglue\zpena (あ\par % 全角【TL17二分】
+あ)\zpena (あ\par                   % 全角
+
+%%% unexpandable tokens
+
+\head{\relax}
+あ)\inhibitglue (あ\par             % ベタ
+あ)\relax\inhibitglue (あ\par       % 二分
+あ)\inhibitglue\relax (あ\par       % ベタ【TL17二分】
+あ)\relax\inhibitglue\relax (あ\par % 二分
+あ)\relax (あ\par                   % 全角
+ああ\inhibitglue\relax (あ\par       % ベタ【TL17二分】
+ああ\relax\inhibitglue (あ\par       % ベタ
+あ)\relax\inhibitglue ああ\par       % 二分
+あ)\inhibitglue\relax ああ\par       % ベタ
+
+\head{\ignorespaces}
+\let\ignsp=\ignorespaces
+あ)\inhibitglue (あ\par             % ベタ
+あ)\ignsp\inhibitglue (あ\par       % 二分
+あ)\inhibitglue\ignsp (あ\par       % ベタ【TL17二分】
+あ)\ignsp\inhibitglue\ignsp (あ\par % 二分
+あ)\ignsp (あ\par                   % 全角
+
+\head{\spacefactor1000}
+\def\spf{\spacefactor1000 }
+あ)\inhibitglue (あ\par             % ベタ
+あ)\spf\inhibitglue (あ\par         % 二分
+あ)\inhibitglue\spf (あ\par         % ベタ【TL17二分】
+あ)\spf\inhibitglue\spf (あ\par     % 二分
+あ)\spf (あ\par                     % 全角
+
+\head{\let}
+\def\letab{\let\a\b}
+あ)\inhibitglue (あ\par             % ベタ
+あ)\letab\inhibitglue (あ\par       % 二分
+あ)\inhibitglue\letab (あ\par       % ベタ【TL17二分】
+あ)\letab\inhibitglue\letab (あ\par % 二分
+あ)\letab (あ\par                   % 全角
+
+%%% grouping
+
+\head{\group}
+あ)(あ\par                 % 一括
+あ){}(あ\par               % 別々
+あ){}\inhibitglue  (あ\par % 左
+あ)\inhibitglue  {}(あ\par % なし【TL17右】
+あ){}\inhibitglue{}(あ\par % 左
+あ){\inhibitglue  }(あ\par % 左
+あ)\inhibitglue    (あ\par % なし
+あ)・あ\par                 % 一括
+あ){}・あ\par               % 別々
+あ){}\inhibitglue  ・あ\par % 左
+あ)\inhibitglue  {}・あ\par % なし【TL17右】
+あ){}\inhibitglue{}・あ\par % 左
+あ){\inhibitglue  }・あ\par % 左
+あ)\inhibitglue    ・あ\par % なし
+あ・(あ\par                 % 一括
+あ・{}(あ\par               % 別々
+あ・{}\inhibitglue  (あ\par % 左
+あ・\inhibitglue  {}(あ\par % なし【TL17右】
+あ・{}\inhibitglue{}(あ\par % 左
+あ・{\inhibitglue  }(あ\par % 左
+あ・\inhibitglue    (あ\par % なし
+
+
+\head{\inhibitglue\ at 内側リスト}
+あ\inhibitglue\setbox0=\vbox{『}(\par % ベタ【TL17二分】
+あ\setbox0=\hbox{\inhibitglue}(\par   % 二分【TL17ベタ】
+)\setbox0=\hbox{\inhibitglue}(\par   % 全角【TL17二分】
+
+あ\setbox0=\vbox{\hsize10zw「}(い\box0\par % (前:二分,「前:二分
+あ\setbox0=\vbox{\hsize10zw「\inhibitglue}(い\box0\par % (前:二分,「前:二分
+あ\inhibitglue\setbox0=\vbox{\hsize10zw「}(い\box0\par % (前:ベタ【TL17二分】,「前:二分
+あ\setbox0=\vbox{\hsize10zw\leavevmode\inhibitglue 「}(い\box0\par % (前:二分,「前:ベタ
+
+
+%%% \unskip vs \inhibitglue (e-pTeX \lastnodesubtype is required)
+\ifx\lastnodesubtype\undefined \expandafter\end \fi
+
+\head{\inhibitglue\ test}
+\setbox200=\hbox{)\hskip10pt\unskip
+  \xdef\gluetype{\the\lastnodetype}%
+  \xdef\jfmgluesubtype{\the\lastnodesubtype}}
+\protected\def\removejfmglue{%
+  \ifnum\lastnodetype=\gluetype\relax
+    \ifnum\lastnodesubtype=\jfmgluesubtype\relax
+      \unskip
+    \fi
+  \fi}
+
+あ)\inhibitglue あ\par % 消える
+あ)\relax\inhibitglue あ\par % 消えない
+あ)\relax\removejfmglue あ\par % 消える【新設】
+%% for tabular environment
+あ)\hskip20pt\unskip\unskip あ\par % 消える
+あ)\hskip20pt\unskip\inhibitglue あ\par % 消えない
+あ)\hskip20pt\unskip\removejfmglue あ\par % 消える【新設】
+
+
+%% reset \inhibitglue at char_node
+\vrule\inhibitglue ;あ( % ;前ベタ,;後四分
+
+
+\bye


Property changes on: trunk/Build/source/texk/web2c/ptexdir/tests/inhibitglue.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property


More information about the tex-live-commits mailing list