texlive[67204] Build/source/texk/web2c/hitexdir: HINT adding

commits+mruckert at tug.org commits+mruckert at tug.org
Wed May 24 09:53:43 CEST 2023


Revision: 67204
          http://tug.org/svn/texlive?view=revision&revision=67204
Author:   mruckert
Date:     2023-05-24 09:53:43 +0200 (Wed, 24 May 2023)
Log Message:
-----------
HINT adding tracingstacklevels primitive

Modified Paths:
--------------
    trunk/Build/source/texk/web2c/hitexdir/doc/hiformat.hnt
    trunk/Build/source/texk/web2c/hitexdir/doc/hiformat.pdf
    trunk/Build/source/texk/web2c/hitexdir/hiformat.w
    trunk/Build/source/texk/web2c/hitexdir/hilexer.c
    trunk/Build/source/texk/web2c/hitexdir/hiparser.c
    trunk/Build/source/texk/web2c/hitexdir/hiparser.h
    trunk/Build/source/texk/web2c/hitexdir/hitex.w

Modified: trunk/Build/source/texk/web2c/hitexdir/doc/hiformat.hnt
===================================================================
(Binary files differ)

Modified: trunk/Build/source/texk/web2c/hitexdir/doc/hiformat.pdf
===================================================================
(Binary files differ)

Modified: trunk/Build/source/texk/web2c/hitexdir/hiformat.w
===================================================================
--- trunk/Build/source/texk/web2c/hitexdir/hiformat.w	2023-05-23 23:43:35 UTC (rev 67203)
+++ trunk/Build/source/texk/web2c/hitexdir/hiformat.w	2023-05-24 07:53:43 UTC (rev 67204)
@@ -5148,7 +5148,7 @@
 into a Type 1 PostScript font on the generator of \HINT\ files
 and keep the \HINT\ viewer as small and simple as possible.
 An alternative which would impose only a slight burden on the \HINT\ file
-viewer ist the use of the rsvg library.
+viewer is the use of the rsvg library.
 
 After having considered the various types of image files,
 we now determine width, height and aspect ratio  based on
@@ -5930,19 +5930,50 @@
 Colors could be specified as an optional parameter of a glyph node, but the
 amount of data necessary would be considerable. In texts, on the other hand,
 a color change control code would be possible because we parse texts only in forward
-direction. The current font  would then become a current color and font with the appropriate
-changes for positions.  
+direction. The current font  would then become a current color and font.
 
-A more attractive alternative would be to specify colored fonts. 
-This would require an optional
-color argument for a font. For example one could have a cmr10 font in black as
-font number 3, and a cmr10 font in blue as font number 4. Having 256 different fonts,
+An attractive alternative would be colored fonts. 
+This would require an optional color argument for a font. 
+For example one could have a cmr10 font in black as
+font number 3, and the same cmr10 font in blue as font number 4. Having 256 different fonts,
 this is definitely a possibility because rarely you would need that many fonts 
 or that many colors. If necessary and desired, one could allow 16 bit font numbers
 of overcome the problem.
 
 Background colors could be associated with boxes as an optional parameter.
+In addition to the background color, a frame color and frame thickness
+for a box could be desirable. Because pages are using a page template there
+would be no need to an extra page color. The page color could simply be
+given as the color of the outer box in the template.
+Even for extended boxes such aditional parameters can be implemented.
 
+Colored boxes, however, are not the perfect solution for highlighting text
+because boxes interfer with line breaking. Enclosing a phrase in a box just
+to give it a special background will make it impossible for the line breaking
+routine to insert line breaks. Therefore, paragraph nodes might benefit from
+a color change command for the background (and foreground) color.
+
+
+\subsection{Rotation}
+When it comes to rotation, there is a big difference between printed books and
+computer displays. For example, if a book contains a table that is rotated
+to fill a page in landscape mode, the reader can rotate the book and read
+the table. If you are looking at the same page displayed on a 
+big computer monitor, you will most likely not turn the whole monitor.
+Instead your viewing application will be able to perform the rotation for you
+before displaying the page. A smart phone, on the other hand, is
+easy to turn. But very likely, it will try to be smart and rerenders the
+content on the display to keep the same orientation. 
+
+Occasionaly, however, rotation of text is a desirable feature. For example,
+if a table has lots of tall columns with lenghty column headers. It might be
+usefull to rotate the column headers in order to keep the column width within
+reasonable limits.
+
+A simple solution therefore would be optional parameters for boxes
+specifying center and angle for rotating the box.
+
+
 \subsection{Unknown Extensions}
 Starting with the inclusion in the \TeX\ Live 2022 distribution, the \HINT\ file format
 became accessible to a wider audience which brought the constant rewrite and upgrade cycle

Modified: trunk/Build/source/texk/web2c/hitexdir/hilexer.c
===================================================================
--- trunk/Build/source/texk/web2c/hitexdir/hilexer.c	2023-05-23 23:43:35 UTC (rev 67203)
+++ trunk/Build/source/texk/web2c/hitexdir/hilexer.c	2023-05-24 07:53:43 UTC (rev 67204)
@@ -861,7 +861,7 @@
 #line 1 "lexer.l"
 /*533:*/
 #line 3 "lexer.l"
-	#line 11067 "format.w"
+	#line 11098 "format.w"
 	
 #include "hibasetypes.h"
 #include "hierror.h"
@@ -997,7 +997,7 @@
 	}
 	/*:62*/
 int yywrap(void){
-	#line 11078 "format.w"
+	#line 11109 "format.w"
 	return 1;}
 #ifdef _MSC_VER
 #pragma  warning( disable : 4267)

Modified: trunk/Build/source/texk/web2c/hitexdir/hiparser.c
===================================================================
--- trunk/Build/source/texk/web2c/hitexdir/hiparser.c	2023-05-23 23:43:35 UTC (rev 67203)
+++ trunk/Build/source/texk/web2c/hitexdir/hiparser.c	2023-05-24 07:53:43 UTC (rev 67204)
@@ -69,7 +69,7 @@
 /* First part of user prologue.  */
 #line 2 "parser.y"
 
-	#line 11108 "format.w"
+	#line 11139 "format.w"
 	
 #include "hibasetypes.h"
 #include <string.h>
@@ -81,7 +81,7 @@
 
 	/*375:*/
 uint32_t definition_bits[0x100/32][32]= {
-	#line 8310 "format.w"
+	#line 8341 "format.w"
 	{0}};
 
 #define SET_DBIT(N,K) ((N)>0xFF?1:(definition_bits[N/32][K]	|= (1<<((N)&(32-1)))))
@@ -113,7 +113,7 @@
 	/*371:*/
 void hset_max(Kind k,int n)
 {
-	#line 8152 "format.w"
+	#line 8183 "format.w"
 	DBG(DBGDEF,"Setting max %s to %d\n",definition_name[k],n);
 	RNG("Maximum",n,max_fixed[k]+1,MAX_REF(k));
 	if(n>max_ref[k])
@@ -122,7 +122,7 @@
 	/*:371*/	/*382:*/
 void check_param_def(Ref*df)
 {
-	#line 8463 "format.w"
+	#line 8494 "format.w"
 	if(df->k!=int_kind&&df->k!=dimen_kind&&df->k!=glue_kind)
 	QUIT("Kind %s not allowed in parameter list",definition_name[df->k]);
 	if(df->n<=max_fixed[df->k]||max_default[df->k]<df->n)
@@ -132,7 +132,7 @@
 extern int yylineno;
 int yyerror(const char*msg)
 {
-	#line 9603 "format.w"
+	#line 9634 "format.w"
 	QUIT(" in line %d %s",yylineno,msg);
 	return 0;
 	}
@@ -3264,7 +3264,7 @@
   case 167: /* def_node: start "unknown" UNSIGNED UNSIGNED ">"  */
 #line 805 "parser.y"
                                             {
-	#line 5982 "format.w"
+	#line 6013 "format.w"
 	hput_tags((yyvsp[-4].u),hput_unknown_def((yyvsp[-2].u),(yyvsp[-1].u),0));}
 #line 3270 "parser.c"
     break;
@@ -3272,7 +3272,7 @@
   case 168: /* def_node: start "unknown" UNSIGNED UNSIGNED UNSIGNED ">"  */
 #line 808 "parser.y"
                                                      {
-	#line 5983 "format.w"
+	#line 6014 "format.w"
 	hput_tags((yyvsp[-5].u),hput_unknown_def((yyvsp[-3].u),(yyvsp[-2].u),(yyvsp[-1].u)));}
 #line 3278 "parser.c"
     break;
@@ -3280,7 +3280,7 @@
   case 169: /* content_node: start "unknown" UNSIGNED unknown_bytes unknown_nodes ">"  */
 #line 812 "parser.y"
                                                                    {
-	#line 5995 "format.w"
+	#line 6026 "format.w"
 	hput_tags((yyvsp[-5].u),hput_unknown((yyvsp[-5].u),(yyvsp[-3].u),(yyvsp[-2].u),(yyvsp[-1].u)));}
 #line 3286 "parser.c"
     break;
@@ -3288,7 +3288,7 @@
   case 170: /* unknown_bytes: %empty  */
 #line 815 "parser.y"
               {
-	#line 5996 "format.w"
+	#line 6027 "format.w"
 	(yyval.u)= 0;}
 #line 3294 "parser.c"
     break;
@@ -3296,7 +3296,7 @@
   case 171: /* unknown_bytes: unknown_bytes UNSIGNED  */
 #line 817 "parser.y"
                                        {
-	#line 5996 "format.w"
+	#line 6027 "format.w"
 	RNG("byte",(yyvsp[0].u),0,0xFF);HPUT8((yyvsp[0].u));(yyval.u)= (yyvsp[-1].u)+1;}
 #line 3302 "parser.c"
     break;
@@ -3304,7 +3304,7 @@
   case 176: /* unknown_nodes: %empty  */
 #line 821 "parser.y"
               {
-	#line 5998 "format.w"
+	#line 6029 "format.w"
 	(yyval.u)= 0;}
 #line 3310 "parser.c"
     break;
@@ -3312,7 +3312,7 @@
   case 177: /* unknown_nodes: unknown_nodes unknown_node  */
 #line 823 "parser.y"
                                            {
-	#line 5998 "format.w"
+	#line 6029 "format.w"
 	RNG("unknown subnodes",(yyvsp[-1].u),0,3);(yyval.u)= (yyvsp[-1].u)+1;}
 #line 3318 "parser.c"
     break;
@@ -3320,7 +3320,7 @@
   case 178: /* stream_link: ref  */
 #line 827 "parser.y"
                {
-	#line 6433 "format.w"
+	#line 6464 "format.w"
 	REF_RNG(stream_kind,(yyvsp[0].u));}
 #line 3326 "parser.c"
     break;
@@ -3328,7 +3328,7 @@
   case 179: /* stream_link: "*"  */
 #line 829 "parser.y"
                                                     {
-	#line 6433 "format.w"
+	#line 6464 "format.w"
 	HPUT8(255);}
 #line 3334 "parser.c"
     break;
@@ -3336,7 +3336,7 @@
   case 180: /* stream_split: stream_link stream_link UNSIGNED  */
 #line 832 "parser.y"
                                              {
-	#line 6434 "format.w"
+	#line 6465 "format.w"
 	RNG("split ratio",(yyvsp[0].u),0,1000);HPUT16((yyvsp[0].u));}
 #line 3342 "parser.c"
     break;
@@ -3344,7 +3344,7 @@
   case 181: /* $@8: %empty  */
 #line 835 "parser.y"
                                 {
-	#line 6435 "format.w"
+	#line 6466 "format.w"
 	RNG("magnification factor",(yyvsp[0].u),0,1000);HPUT16((yyvsp[0].u));}
 #line 3350 "parser.c"
     break;
@@ -3352,7 +3352,7 @@
   case 183: /* stream_type: stream_info  */
 #line 839 "parser.y"
                        {
-	#line 6437 "format.w"
+	#line 6468 "format.w"
 	(yyval.info)= 0;}
 #line 3358 "parser.c"
     break;
@@ -3360,7 +3360,7 @@
   case 184: /* stream_type: "first"  */
 #line 841 "parser.y"
                       {
-	#line 6437 "format.w"
+	#line 6468 "format.w"
 	(yyval.info)= 1;}
 #line 3366 "parser.c"
     break;
@@ -3368,7 +3368,7 @@
   case 185: /* stream_type: "last"  */
 #line 843 "parser.y"
                      {
-	#line 6437 "format.w"
+	#line 6468 "format.w"
 	(yyval.info)= 2;}
 #line 3374 "parser.c"
     break;
@@ -3376,7 +3376,7 @@
   case 186: /* stream_type: "top"  */
 #line 845 "parser.y"
                     {
-	#line 6437 "format.w"
+	#line 6468 "format.w"
 	(yyval.info)= 3;}
 #line 3382 "parser.c"
     break;
@@ -3384,7 +3384,7 @@
   case 187: /* stream_def_node: start "stream (definition)" ref stream_type list xdimen_node glue_node list glue_node ">"  */
 #line 851 "parser.y"
 {
-	#line 6441 "format.w"
+	#line 6472 "format.w"
 	DEF((yyval.rf),stream_kind,(yyvsp[-7].u));hput_tags((yyvsp[-9].u),TAG(stream_kind,(yyvsp[-6].info)	|b100));}
 #line 3390 "parser.c"
     break;
@@ -3392,7 +3392,7 @@
   case 188: /* stream_ins_node: start "stream (definition)" ref ">"  */
 #line 856 "parser.y"
 {
-	#line 6444 "format.w"
+	#line 6475 "format.w"
 	RNG("Stream insertion",(yyvsp[-1].u),0,max_ref[stream_kind]);hput_tags((yyvsp[-3].u),TAG(stream_kind,b100));}
 #line 3398 "parser.c"
     break;
@@ -3400,7 +3400,7 @@
   case 191: /* stream: param_list list  */
 #line 862 "parser.y"
                       {
-	#line 6539 "format.w"
+	#line 6570 "format.w"
 	(yyval.info)= b010;}
 #line 3406 "parser.c"
     break;
@@ -3408,7 +3408,7 @@
   case 192: /* stream: param_ref list  */
 #line 865 "parser.y"
                        {
-	#line 6540 "format.w"
+	#line 6571 "format.w"
 	(yyval.info)= b000;}
 #line 3414 "parser.c"
     break;
@@ -3416,7 +3416,7 @@
   case 193: /* content_node: start "stream" stream_ref stream ">"  */
 #line 869 "parser.y"
 {
-	#line 6542 "format.w"
+	#line 6573 "format.w"
 	hput_tags((yyvsp[-4].u),TAG(stream_kind,(yyvsp[-1].info)));}
 #line 3422 "parser.c"
     break;
@@ -3424,7 +3424,7 @@
   case 194: /* page_priority: %empty  */
 #line 873 "parser.y"
               {
-	#line 6645 "format.w"
+	#line 6676 "format.w"
 	HPUT8(1);}
 #line 3430 "parser.c"
     break;
@@ -3432,7 +3432,7 @@
   case 195: /* page_priority: UNSIGNED  */
 #line 876 "parser.y"
                  {
-	#line 6646 "format.w"
+	#line 6677 "format.w"
 	RNG("page priority",(yyvsp[0].u),0,255);HPUT8((yyvsp[0].u));}
 #line 3438 "parser.c"
     break;
@@ -3440,7 +3440,7 @@
   case 198: /* $@9: %empty  */
 #line 882 "parser.y"
            {
-	#line 6650 "format.w"
+	#line 6681 "format.w"
 	hput_string((yyvsp[0].s));}
 #line 3446 "parser.c"
     break;
@@ -3448,7 +3448,7 @@
   case 199: /* $@10: %empty  */
 #line 884 "parser.y"
                                                           {
-	#line 6650 "format.w"
+	#line 6681 "format.w"
 	HPUT32((yyvsp[0].d));}
 #line 3454 "parser.c"
     break;
@@ -3456,7 +3456,7 @@
   case 201: /* content_node: "<" "range" REFERENCE "on" ">"  */
 #line 891 "parser.y"
                                          {
-	#line 6763 "format.w"
+	#line 6794 "format.w"
 	REF(page_kind,(yyvsp[-2].u));hput_range((yyvsp[-2].u),true);}
 #line 3462 "parser.c"
     break;
@@ -3464,7 +3464,7 @@
   case 202: /* content_node: "<" "range" REFERENCE "off" ">"  */
 #line 894 "parser.y"
                                       {
-	#line 6764 "format.w"
+	#line 6795 "format.w"
 	REF(page_kind,(yyvsp[-2].u));hput_range((yyvsp[-2].u),false);}
 #line 3470 "parser.c"
     break;
@@ -3472,7 +3472,7 @@
   case 204: /* $@11: %empty  */
 #line 900 "parser.y"
                                           {
-	#line 7462 "format.w"
+	#line 7493 "format.w"
 	new_directory((yyvsp[0].u)+1);new_output_buffers();}
 #line 3478 "parser.c"
     break;
@@ -3480,7 +3480,7 @@
   case 208: /* entry: "<" "entry" UNSIGNED string ">"  */
 #line 905 "parser.y"
 {
-	#line 7465 "format.w"
+	#line 7496 "format.w"
 	RNG("Section number",(yyvsp[-2].u),3,max_section_no);hset_entry(&(dir[(yyvsp[-2].u)]),(yyvsp[-2].u),0,0,(yyvsp[-1].s));}
 #line 3486 "parser.c"
     break;
@@ -3488,7 +3488,7 @@
   case 209: /* $@12: %empty  */
 #line 909 "parser.y"
                                     {
-	#line 8008 "format.w"
+	#line 8039 "format.w"
 	hput_definitions_start();}
 #line 3494 "parser.c"
     break;
@@ -3496,7 +3496,7 @@
   case 210: /* definition_section: "<" "definitions" $@12 max_definitions definition_list ">"  */
 #line 913 "parser.y"
    {
-	#line 8010 "format.w"
+	#line 8041 "format.w"
 	hput_definitions_end();}
 #line 3502 "parser.c"
     break;
@@ -3504,7 +3504,7 @@
   case 213: /* max_definitions: "<" "max" max_list ">"  */
 #line 919 "parser.y"
 {
-	#line 8126 "format.w"
+	#line 8157 "format.w"
 		/*253:*/
 	if(max_ref[label_kind]>=0)
 	ALLOCATE(labels,max_ref[label_kind]+1,Label);
@@ -3534,7 +3534,7 @@
   case 216: /* max_value: "font" UNSIGNED  */
 #line 947 "parser.y"
                        {
-	#line 8130 "format.w"
+	#line 8161 "format.w"
 	hset_max(font_kind,(yyvsp[0].u));}
 #line 3540 "parser.c"
     break;
@@ -3542,7 +3542,7 @@
   case 217: /* max_value: "int" UNSIGNED  */
 #line 950 "parser.y"
                          {
-	#line 8131 "format.w"
+	#line 8162 "format.w"
 	hset_max(int_kind,(yyvsp[0].u));}
 #line 3548 "parser.c"
     break;
@@ -3550,7 +3550,7 @@
   case 218: /* max_value: "dimen" UNSIGNED  */
 #line 953 "parser.y"
                        {
-	#line 8132 "format.w"
+	#line 8163 "format.w"
 	hset_max(dimen_kind,(yyvsp[0].u));}
 #line 3556 "parser.c"
     break;
@@ -3558,7 +3558,7 @@
   case 219: /* max_value: "ligature" UNSIGNED  */
 #line 956 "parser.y"
                           {
-	#line 8133 "format.w"
+	#line 8164 "format.w"
 	hset_max(ligature_kind,(yyvsp[0].u));}
 #line 3564 "parser.c"
     break;
@@ -3566,7 +3566,7 @@
   case 220: /* max_value: "disc" UNSIGNED  */
 #line 959 "parser.y"
                       {
-	#line 8134 "format.w"
+	#line 8165 "format.w"
 	hset_max(disc_kind,(yyvsp[0].u));}
 #line 3572 "parser.c"
     break;
@@ -3574,7 +3574,7 @@
   case 221: /* max_value: "glue" UNSIGNED  */
 #line 962 "parser.y"
                       {
-	#line 8135 "format.w"
+	#line 8166 "format.w"
 	hset_max(glue_kind,(yyvsp[0].u));}
 #line 3580 "parser.c"
     break;
@@ -3582,7 +3582,7 @@
   case 222: /* max_value: "language" UNSIGNED  */
 #line 965 "parser.y"
                           {
-	#line 8136 "format.w"
+	#line 8167 "format.w"
 	hset_max(language_kind,(yyvsp[0].u));}
 #line 3588 "parser.c"
     break;
@@ -3590,7 +3590,7 @@
   case 223: /* max_value: "rule" UNSIGNED  */
 #line 968 "parser.y"
                       {
-	#line 8137 "format.w"
+	#line 8168 "format.w"
 	hset_max(rule_kind,(yyvsp[0].u));}
 #line 3596 "parser.c"
     break;
@@ -3598,7 +3598,7 @@
   case 224: /* max_value: "image" UNSIGNED  */
 #line 971 "parser.y"
                        {
-	#line 8138 "format.w"
+	#line 8169 "format.w"
 	hset_max(image_kind,(yyvsp[0].u));}
 #line 3604 "parser.c"
     break;
@@ -3606,7 +3606,7 @@
   case 225: /* max_value: "leaders" UNSIGNED  */
 #line 974 "parser.y"
                          {
-	#line 8139 "format.w"
+	#line 8170 "format.w"
 	hset_max(leaders_kind,(yyvsp[0].u));}
 #line 3612 "parser.c"
     break;
@@ -3614,7 +3614,7 @@
   case 226: /* max_value: "baseline" UNSIGNED  */
 #line 977 "parser.y"
                           {
-	#line 8140 "format.w"
+	#line 8171 "format.w"
 	hset_max(baseline_kind,(yyvsp[0].u));}
 #line 3620 "parser.c"
     break;
@@ -3622,7 +3622,7 @@
   case 227: /* max_value: "xdimen" UNSIGNED  */
 #line 980 "parser.y"
                         {
-	#line 8141 "format.w"
+	#line 8172 "format.w"
 	hset_max(xdimen_kind,(yyvsp[0].u));}
 #line 3628 "parser.c"
     break;
@@ -3630,7 +3630,7 @@
   case 228: /* max_value: "param" UNSIGNED  */
 #line 983 "parser.y"
                        {
-	#line 8142 "format.w"
+	#line 8173 "format.w"
 	hset_max(param_kind,(yyvsp[0].u));}
 #line 3636 "parser.c"
     break;
@@ -3638,7 +3638,7 @@
   case 229: /* max_value: "stream (definition)" UNSIGNED  */
 #line 986 "parser.y"
                            {
-	#line 8143 "format.w"
+	#line 8174 "format.w"
 	hset_max(stream_kind,(yyvsp[0].u));}
 #line 3644 "parser.c"
     break;
@@ -3646,7 +3646,7 @@
   case 230: /* max_value: "page" UNSIGNED  */
 #line 989 "parser.y"
                       {
-	#line 8144 "format.w"
+	#line 8175 "format.w"
 	hset_max(page_kind,(yyvsp[0].u));}
 #line 3652 "parser.c"
     break;
@@ -3654,7 +3654,7 @@
   case 231: /* max_value: "range" UNSIGNED  */
 #line 992 "parser.y"
                        {
-	#line 8145 "format.w"
+	#line 8176 "format.w"
 	hset_max(range_kind,(yyvsp[0].u));}
 #line 3660 "parser.c"
     break;
@@ -3662,7 +3662,7 @@
   case 232: /* max_value: "label" UNSIGNED  */
 #line 995 "parser.y"
                        {
-	#line 8146 "format.w"
+	#line 8177 "format.w"
 	hset_max(label_kind,(yyvsp[0].u));}
 #line 3668 "parser.c"
     break;
@@ -3670,7 +3670,7 @@
   case 233: /* def_node: start "font" ref font ">"  */
 #line 1001 "parser.y"
                        {
-	#line 8346 "format.w"
+	#line 8377 "format.w"
 	DEF((yyval.rf),font_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),(yyvsp[-1].info));}
 #line 3676 "parser.c"
     break;
@@ -3678,7 +3678,7 @@
   case 234: /* def_node: start "int" ref integer ">"  */
 #line 1004 "parser.y"
                                       {
-	#line 8347 "format.w"
+	#line 8378 "format.w"
 	DEF((yyval.rf),int_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_int((yyvsp[-1].i)));}
 #line 3684 "parser.c"
     break;
@@ -3686,7 +3686,7 @@
   case 235: /* def_node: start "dimen" ref dimension ">"  */
 #line 1007 "parser.y"
                                       {
-	#line 8348 "format.w"
+	#line 8379 "format.w"
 	DEF((yyval.rf),dimen_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_dimen((yyvsp[-1].d)));}
 #line 3692 "parser.c"
     break;
@@ -3694,7 +3694,7 @@
   case 236: /* def_node: start "language" ref string ">"  */
 #line 1010 "parser.y"
                                       {
-	#line 8349 "format.w"
+	#line 8380 "format.w"
 	DEF((yyval.rf),language_kind,(yyvsp[-2].u));hput_string((yyvsp[-1].s));hput_tags((yyvsp[-4].u),TAG(language_kind,0));}
 #line 3700 "parser.c"
     break;
@@ -3702,7 +3702,7 @@
   case 237: /* def_node: start "glue" ref glue ">"  */
 #line 1013 "parser.y"
                                 {
-	#line 8350 "format.w"
+	#line 8381 "format.w"
 	DEF((yyval.rf),glue_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_glue(&((yyvsp[-1].g))));}
 #line 3708 "parser.c"
     break;
@@ -3710,7 +3710,7 @@
   case 238: /* def_node: start "xdimen" ref xdimen ">"  */
 #line 1016 "parser.y"
                                     {
-	#line 8351 "format.w"
+	#line 8382 "format.w"
 	DEF((yyval.rf),xdimen_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_xdimen(&((yyvsp[-1].xd))));}
 #line 3716 "parser.c"
     break;
@@ -3718,7 +3718,7 @@
   case 239: /* def_node: start "rule" ref rule ">"  */
 #line 1019 "parser.y"
                                 {
-	#line 8352 "format.w"
+	#line 8383 "format.w"
 	DEF((yyval.rf),rule_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_rule(&((yyvsp[-1].r))));}
 #line 3724 "parser.c"
     break;
@@ -3726,7 +3726,7 @@
   case 240: /* def_node: start "leaders" ref leaders ">"  */
 #line 1022 "parser.y"
                                       {
-	#line 8353 "format.w"
+	#line 8384 "format.w"
 	DEF((yyval.rf),leaders_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),TAG(leaders_kind,(yyvsp[-1].info)));}
 #line 3732 "parser.c"
     break;
@@ -3734,7 +3734,7 @@
   case 241: /* def_node: start "baseline" ref baseline ">"  */
 #line 1025 "parser.y"
                                         {
-	#line 8354 "format.w"
+	#line 8385 "format.w"
 	DEF((yyval.rf),baseline_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),TAG(baseline_kind,(yyvsp[-1].info)));}
 #line 3740 "parser.c"
     break;
@@ -3742,7 +3742,7 @@
   case 242: /* def_node: start "ligature" ref ligature ">"  */
 #line 1028 "parser.y"
                                         {
-	#line 8355 "format.w"
+	#line 8386 "format.w"
 	DEF((yyval.rf),ligature_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_ligature(&((yyvsp[-1].lg))));}
 #line 3748 "parser.c"
     break;
@@ -3750,7 +3750,7 @@
   case 243: /* def_node: start "disc" ref disc ">"  */
 #line 1031 "parser.y"
                                 {
-	#line 8356 "format.w"
+	#line 8387 "format.w"
 	DEF((yyval.rf),disc_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_disc(&((yyvsp[-1].dc))));}
 #line 3756 "parser.c"
     break;
@@ -3758,7 +3758,7 @@
   case 244: /* def_node: start "image" ref image ">"  */
 #line 1034 "parser.y"
                                   {
-	#line 8357 "format.w"
+	#line 8388 "format.w"
 	DEF((yyval.rf),image_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),TAG(image_kind,(yyvsp[-1].info)));}
 #line 3764 "parser.c"
     break;
@@ -3766,7 +3766,7 @@
   case 245: /* def_node: start "param" ref parameters ">"  */
 #line 1037 "parser.y"
                                        {
-	#line 8358 "format.w"
+	#line 8389 "format.w"
 	DEF((yyval.rf),param_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_list((yyvsp[-4].u)+2,&((yyvsp[-1].l))));}
 #line 3772 "parser.c"
     break;
@@ -3774,7 +3774,7 @@
   case 246: /* def_node: start "page" ref page ">"  */
 #line 1040 "parser.y"
                                 {
-	#line 8359 "format.w"
+	#line 8390 "format.w"
 	DEF((yyval.rf),page_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),TAG(page_kind,0));}
 #line 3780 "parser.c"
     break;
@@ -3782,7 +3782,7 @@
   case 247: /* def_node: start "int" ref ref ">"  */
 #line 1045 "parser.y"
                          {
-	#line 8378 "format.w"
+	#line 8409 "format.w"
 	DEF_REF((yyval.rf),int_kind,(yyvsp[-2].u),(yyvsp[-1].u));hput_tags((yyvsp[-4].u),TAG(int_kind,0));}
 #line 3788 "parser.c"
     break;
@@ -3790,7 +3790,7 @@
   case 248: /* def_node: start "dimen" ref ref ">"  */
 #line 1048 "parser.y"
                                 {
-	#line 8379 "format.w"
+	#line 8410 "format.w"
 	DEF_REF((yyval.rf),dimen_kind,(yyvsp[-2].u),(yyvsp[-1].u));hput_tags((yyvsp[-4].u),TAG(dimen_kind,0));}
 #line 3796 "parser.c"
     break;
@@ -3798,7 +3798,7 @@
   case 249: /* def_node: start "glue" ref ref ">"  */
 #line 1051 "parser.y"
                                {
-	#line 8380 "format.w"
+	#line 8411 "format.w"
 	DEF_REF((yyval.rf),glue_kind,(yyvsp[-2].u),(yyvsp[-1].u));hput_tags((yyvsp[-4].u),TAG(glue_kind,0));}
 #line 3804 "parser.c"
     break;
@@ -3806,7 +3806,7 @@
   case 251: /* def_list: def_list def_node  */
 #line 1056 "parser.y"
                           {
-	#line 8496 "format.w"
+	#line 8527 "format.w"
 	check_param_def(&((yyvsp[0].rf)));}
 #line 3812 "parser.c"
     break;
@@ -3814,7 +3814,7 @@
   case 252: /* parameters: estimate def_list  */
 #line 1059 "parser.y"
                             {
-	#line 8497 "format.w"
+	#line 8528 "format.w"
 	(yyval.l).p= (yyvsp[0].u);(yyval.l).t= TAG(param_kind,b001);(yyval.l).s= (hpos-hstart)-(yyvsp[0].u);}
 #line 3820 "parser.c"
     break;
@@ -3822,7 +3822,7 @@
   case 253: /* named_param_list: start "param" parameters ">"  */
 #line 1064 "parser.y"
 {
-	#line 8510 "format.w"
+	#line 8541 "format.w"
 	hput_tags((yyvsp[-3].u),hput_list((yyvsp[-3].u)+1,&((yyvsp[-1].l))));}
 #line 3828 "parser.c"
     break;
@@ -3830,7 +3830,7 @@
   case 255: /* param_list: start parameters ">"  */
 #line 1068 "parser.y"
 {
-	#line 8512 "format.w"
+	#line 8543 "format.w"
 	hput_tags((yyvsp[-2].u),hput_list((yyvsp[-2].u)+1,&((yyvsp[-1].l))));}
 #line 3836 "parser.c"
     break;
@@ -3838,7 +3838,7 @@
   case 257: /* font_head: string dimension UNSIGNED UNSIGNED  */
 #line 1076 "parser.y"
 {
-	#line 8658 "format.w"
+	#line 8689 "format.w"
 	uint8_t f= (yyvsp[-4].u);SET_DBIT(f,font_kind);hfont_name[f]= strdup((yyvsp[-3].s));(yyval.info)= hput_font_head(f,hfont_name[f],(yyvsp[-2].d),(yyvsp[-1].u),(yyvsp[0].u));}
 #line 3844 "parser.c"
     break;
@@ -3846,7 +3846,7 @@
   case 260: /* font_param: start "penalty" fref penalty ">"  */
 #line 1083 "parser.y"
                               {
-	#line 8663 "format.w"
+	#line 8694 "format.w"
 	hput_tags((yyvsp[-4].u),hput_int((yyvsp[-1].i)));}
 #line 3852 "parser.c"
     break;
@@ -3854,7 +3854,7 @@
   case 261: /* font_param: start "kern" fref kern ">"  */
 #line 1086 "parser.y"
                                  {
-	#line 8664 "format.w"
+	#line 8695 "format.w"
 	hput_tags((yyvsp[-4].u),hput_kern(&((yyvsp[-1].kt))));}
 #line 3860 "parser.c"
     break;
@@ -3862,7 +3862,7 @@
   case 262: /* font_param: start "ligature" fref ligature ">"  */
 #line 1089 "parser.y"
                                          {
-	#line 8665 "format.w"
+	#line 8696 "format.w"
 	hput_tags((yyvsp[-4].u),hput_ligature(&((yyvsp[-1].lg))));}
 #line 3868 "parser.c"
     break;
@@ -3870,7 +3870,7 @@
   case 263: /* font_param: start "disc" fref disc ">"  */
 #line 1092 "parser.y"
                                  {
-	#line 8666 "format.w"
+	#line 8697 "format.w"
 	hput_tags((yyvsp[-4].u),hput_disc(&((yyvsp[-1].dc))));}
 #line 3876 "parser.c"
     break;
@@ -3878,7 +3878,7 @@
   case 264: /* font_param: start "glue" fref glue ">"  */
 #line 1095 "parser.y"
                                  {
-	#line 8667 "format.w"
+	#line 8698 "format.w"
 	hput_tags((yyvsp[-4].u),hput_glue(&((yyvsp[-1].g))));}
 #line 3884 "parser.c"
     break;
@@ -3886,7 +3886,7 @@
   case 265: /* font_param: start "language" fref string ">"  */
 #line 1098 "parser.y"
                                        {
-	#line 8668 "format.w"
+	#line 8699 "format.w"
 	hput_string((yyvsp[-1].s));hput_tags((yyvsp[-4].u),TAG(language_kind,0));}
 #line 3892 "parser.c"
     break;
@@ -3894,7 +3894,7 @@
   case 266: /* font_param: start "rule" fref rule ">"  */
 #line 1101 "parser.y"
                                  {
-	#line 8669 "format.w"
+	#line 8700 "format.w"
 	hput_tags((yyvsp[-4].u),hput_rule(&((yyvsp[-1].r))));}
 #line 3900 "parser.c"
     break;
@@ -3902,7 +3902,7 @@
   case 267: /* font_param: start "image" fref image ">"  */
 #line 1104 "parser.y"
                                    {
-	#line 8670 "format.w"
+	#line 8701 "format.w"
 	hput_tags((yyvsp[-4].u),TAG(image_kind,(yyvsp[-1].info)));}
 #line 3908 "parser.c"
     break;
@@ -3910,7 +3910,7 @@
   case 268: /* fref: ref  */
 #line 1108 "parser.y"
         {
-	#line 8672 "format.w"
+	#line 8703 "format.w"
 	RNG("Font parameter",(yyvsp[0].u),0,MAX_FONT_PARAMS);}
 #line 3916 "parser.c"
     break;
@@ -3918,7 +3918,7 @@
   case 269: /* xdimen_ref: ref  */
 #line 1112 "parser.y"
               {
-	#line 8749 "format.w"
+	#line 8780 "format.w"
 	REF(xdimen_kind,(yyvsp[0].u));}
 #line 3924 "parser.c"
     break;
@@ -3926,7 +3926,7 @@
   case 270: /* param_ref: ref  */
 #line 1115 "parser.y"
              {
-	#line 8750 "format.w"
+	#line 8781 "format.w"
 	REF(param_kind,(yyvsp[0].u));}
 #line 3932 "parser.c"
     break;
@@ -3934,7 +3934,7 @@
   case 271: /* stream_ref: ref  */
 #line 1118 "parser.y"
               {
-	#line 8751 "format.w"
+	#line 8782 "format.w"
 	REF_RNG(stream_kind,(yyvsp[0].u));}
 #line 3940 "parser.c"
     break;
@@ -3942,7 +3942,7 @@
   case 272: /* content_node: start "penalty" ref ">"  */
 #line 1124 "parser.y"
                      {
-	#line 8755 "format.w"
+	#line 8786 "format.w"
 	REF(penalty_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(penalty_kind,0));}
 #line 3948 "parser.c"
     break;
@@ -3950,7 +3950,7 @@
   case 273: /* content_node: start "kern" explicit ref ">"  */
 #line 1128 "parser.y"
 {
-	#line 8757 "format.w"
+	#line 8788 "format.w"
 	REF(dimen_kind,(yyvsp[-1].u));hput_tags((yyvsp[-4].u),TAG(kern_kind,((yyvsp[-2].b))?b100:b000));}
 #line 3956 "parser.c"
     break;
@@ -3958,7 +3958,7 @@
   case 274: /* content_node: start "kern" explicit "xdimen" ref ">"  */
 #line 1132 "parser.y"
 {
-	#line 8759 "format.w"
+	#line 8790 "format.w"
 	REF(xdimen_kind,(yyvsp[-1].u));hput_tags((yyvsp[-5].u),TAG(kern_kind,((yyvsp[-3].b))?b101:b001));}
 #line 3964 "parser.c"
     break;
@@ -3966,7 +3966,7 @@
   case 275: /* content_node: start "glue" ref ">"  */
 #line 1135 "parser.y"
                            {
-	#line 8760 "format.w"
+	#line 8791 "format.w"
 	REF(glue_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(glue_kind,0));}
 #line 3972 "parser.c"
     break;
@@ -3974,7 +3974,7 @@
   case 276: /* content_node: start "ligature" ref ">"  */
 #line 1138 "parser.y"
                                {
-	#line 8761 "format.w"
+	#line 8792 "format.w"
 	REF(ligature_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(ligature_kind,0));}
 #line 3980 "parser.c"
     break;
@@ -3982,7 +3982,7 @@
   case 277: /* content_node: start "disc" ref ">"  */
 #line 1141 "parser.y"
                            {
-	#line 8762 "format.w"
+	#line 8793 "format.w"
 	REF(disc_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(disc_kind,0));}
 #line 3988 "parser.c"
     break;
@@ -3990,7 +3990,7 @@
   case 278: /* content_node: start "rule" ref ">"  */
 #line 1144 "parser.y"
                            {
-	#line 8763 "format.w"
+	#line 8794 "format.w"
 	REF(rule_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(rule_kind,0));}
 #line 3996 "parser.c"
     break;
@@ -3998,7 +3998,7 @@
   case 279: /* content_node: start "image" ref ">"  */
 #line 1147 "parser.y"
                             {
-	#line 8764 "format.w"
+	#line 8795 "format.w"
 	REF(image_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(image_kind,0));}
 #line 4004 "parser.c"
     break;
@@ -4006,7 +4006,7 @@
   case 280: /* content_node: start "leaders" ref ">"  */
 #line 1150 "parser.y"
                               {
-	#line 8765 "format.w"
+	#line 8796 "format.w"
 	REF(leaders_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(leaders_kind,0));}
 #line 4012 "parser.c"
     break;
@@ -4014,7 +4014,7 @@
   case 281: /* content_node: start "baseline" ref ">"  */
 #line 1153 "parser.y"
                                {
-	#line 8766 "format.w"
+	#line 8797 "format.w"
 	REF(baseline_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(baseline_kind,0));}
 #line 4020 "parser.c"
     break;
@@ -4022,7 +4022,7 @@
   case 282: /* content_node: start "language" REFERENCE ">"  */
 #line 1156 "parser.y"
                                      {
-	#line 8767 "format.w"
+	#line 8798 "format.w"
 	REF(language_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),hput_language((yyvsp[-1].u)));}
 #line 4028 "parser.c"
     break;
@@ -4030,7 +4030,7 @@
   case 283: /* glue_node: start "glue" ref ">"  */
 #line 1160 "parser.y"
                             {
-	#line 8769 "format.w"
+	#line 8800 "format.w"
 	REF(glue_kind,(yyvsp[-1].u));
 	if((yyvsp[-1].u)==zero_skip_no){hpos= hpos-2;(yyval.b)= false;}
 	else{hput_tags((yyvsp[-3].u),TAG(glue_kind,0));(yyval.b)= true;}}
@@ -4040,7 +4040,7 @@
   case 284: /* $@13: %empty  */
 #line 1167 "parser.y"
                              {
-	#line 9216 "format.w"
+	#line 9247 "format.w"
 	hput_content_start();}
 #line 4046 "parser.c"
     break;
@@ -4048,7 +4048,7 @@
   case 285: /* content_section: "<" "content" $@13 content_list ">"  */
 #line 1170 "parser.y"
 {
-	#line 9217 "format.w"
+	#line 9248 "format.w"
 	hput_content_end();hput_range_defs();hput_label_defs();}
 #line 4054 "parser.c"
     break;

Modified: trunk/Build/source/texk/web2c/hitexdir/hiparser.h
===================================================================
--- trunk/Build/source/texk/web2c/hitexdir/hiparser.h	2023-05-23 23:43:35 UTC (rev 67203)
+++ trunk/Build/source/texk/web2c/hitexdir/hiparser.h	2023-05-24 07:53:43 UTC (rev 67204)
@@ -150,7 +150,7 @@
 {
 #line 79 "parser.y"
 
-	#line 11133 "format.w"
+	#line 11164 "format.w"
 	uint32_t u;  int32_t i;  char *s;  float64_t f;  Glyph c;
 	Dimen d;Stretch st;Xdimen xd;Kern kt;
 	Rule r;Glue g;Image x;

Modified: trunk/Build/source/texk/web2c/hitexdir/hitex.w
===================================================================
--- trunk/Build/source/texk/web2c/hitexdir/hitex.w	2023-05-23 23:43:35 UTC (rev 67203)
+++ trunk/Build/source/texk/web2c/hitexdir/hitex.w	2023-05-24 07:53:43 UTC (rev 67204)
@@ -5169,7 +5169,8 @@
 @d right_hyphen_min_code 52 /*minimum right hyphenation fragment size*/
 @d holding_inserts_code 53 /*do not remove insertion nodes from \.{\\box255}*/
 @d error_context_lines_code 54 /*maximum intermediate line pairs shown*/
- at d tex_int_pars 55 /*total number of \TeX's integer parameters*/
+ at d tracing_stack_levels_code 55 /*tracing |input_stack| level if |tracingmacros| positive*/
+ at d tex_int_pars 56 /*total number of \TeX's integer parameters*/
 @#
 @d etex_int_base tex_int_pars /*base for \eTeX's integer parameters*/
 @d tracing_assigns_code etex_int_base /*show assignments*/
@@ -5246,6 +5247,7 @@
 @d right_hyphen_min int_par(right_hyphen_min_code)
 @d holding_inserts int_par(holding_inserts_code)
 @d error_context_lines int_par(error_context_lines_code)
+ at d tracing_stack_levels int_par(tracing_stack_levels_code)
 @#
 @d tracing_assigns int_par(tracing_assigns_code)
 @d tracing_groups int_par(tracing_groups_code)
@@ -5319,6 +5321,7 @@
 case right_hyphen_min_code: print_esc("righthyphenmin");@+break;
 case holding_inserts_code: print_esc("holdinginserts");@+break;
 case error_context_lines_code: print_esc("errorcontextlines");@+break;
+case tracing_stack_levels_code: print_esc("tracingstacklevels");@+break;
 @/@<Cases for |print_param|@>@/
 default:print("[unknown integer parameter!]");
 }
@@ -5440,6 +5443,8 @@
 @!@:holding\_inserts\_}{\.{\\holdinginserts} primitive@>
 primitive("errorcontextlines", assign_int, int_base+error_context_lines_code);@/
 @!@:error\_context\_lines\_}{\.{\\errorcontextlines} primitive@>
+primitive("tracingstacklevels", assign_int, int_base+tracing_stack_levels_code);@/
+@!@:tracing\_stack\_levels_}{\.{\\tracingstacklevels} primitive@>
 
 @ @<Cases of |print_cmd_chr|...@>=
 case assign_int: if (chr_code < count_base) print_param(chr_code-int_base);
@@ -8648,6 +8653,7 @@
 else pstack[n]=link(temp_head);
 incr(n);
 if (tracing_macros > 0)
+  if ((tracing_stack_levels==0)||(input_ptr < tracing_stack_levels))
   {@+begin_diagnostic();print_nl("");printn(match_chr);print_int(n);
   print("<-");show_token_list(pstack[n-1], null, 1000);
   end_diagnostic(false);
@@ -8655,8 +8661,19 @@
 }
 
 @ @<Show the text of the macro being expanded@>=
-{@+begin_diagnostic();print_ln();print_cs(warning_index);
-token_show(ref_count);end_diagnostic(false);
+{@+begin_diagnostic();
+  if (tracing_stack_levels > 0)
+  { if (input_ptr < tracing_stack_levels)
+      {@+
+        int v=input_ptr;
+        print_ln();print_char('~');
+        while (v-- > 0) print_char('.');
+        print_cs(warning_index);token_show(ref_count);
+      }
+    else{@+print_char('~');print_char('~');print_cs(warning_index);}
+  }
+  else{@+print_ln();print_cs(warning_index);token_show(ref_count);}
+  end_diagnostic(false);
 }
 
 @* Basic scanning subroutines.
@@ -10977,6 +10994,17 @@
 if (term_offset+length(name) > max_print_line-2) print_ln();
 else if ((term_offset > 0)||(file_offset > 0)) print_char(' ');
 print_char('(');incr(open_parens);slow_print(name);update_terminal;
+if (tracing_stack_levels > 0)
+{@+int v;
+  begin_diagnostic();print_ln();
+  print_char('~');
+  v=input_ptr-1;
+  if (v < tracing_stack_levels)
+    while (v-- > 0) print_char('.');
+  else print_char('~');
+  print("INPUT ");slow_print(cur_name);slow_print(cur_ext);print_ln();
+  end_diagnostic(false);
+}
 state=new_line;
 if (name==str_ptr-1)  /*conserve string pool space (but see note above)*/
   {@+flush_string;name=cur_name;



More information about the tex-live-commits mailing list.