home *** CD-ROM | disk | FTP | other *** search
- /* @<Constants...@>= */
-
- #include "help.h"
-
- /* Nummern der String-Konstanten: ... */
- #define STR_ENDWRITE 260 /* 1286 */
-
- #define STR_OPENOUT 265 /* 1276 */
- #define STR_CLOSEOUT 266 /* 1277 */
- #define STR_SPECIAL 267 /* 1278 */
- #define STR_IMMEDIATE 268 /* 1279 */
- #define STR_SETLANGUAGE 269 /* 1280 */
- #define STR_WRITE 590 /* */
-
- #define STR_INITEX 271 /* 1248 */
-
- #define STR_SHOW 312 /* 1230 */
- #define STR_SHOWBOX 313 /* 1231 */
- #define STR_SHOWTHE 314 /* 1232 */
- #define STR_SHOWLISTS 315 /* 1233 */
-
- #define STR_LOWERCASE 285 /* 1228 */
- #define STR_UPPERCASE 286 /* 1229 */
-
- #define STR_MESSAGE 324 /* 1221 */
- #define STR_ERRMESSAGE 325 /* 1222 */
-
- #define STR_OPENIN 322 /* 1219 */
- #define STR_CLOSEIN 323 /* 1220 */
-
- #define STR_ERRORSTOPMODE 263 /* 1218 */
-
- #define STR_AT 341 /* 1211 */
- #define STR_SCALED 342 /* 1212 */
-
- #define STR_FONT_ 289 /* 1210 */
-
- #define STR_HYPHENCHAR 304 /* 1208 */
- #define STR_SKEWCHAR 305 /* 1209 */
-
- #define STR_BY 291 /* 1199 */
-
- #define STR_CHARDEF 350 /* 1186 */
- #define STR_MATHCHARDEF 351 /* 1187 */
- #define STR_COUNTDEF 352 /* 1188 */
- #define STR_DIMENDEF 353 /* 1189 */
- #define STR_SKIPDEF 354 /* 1190 */
- #define STR_MUSKIPDEF 355 /* 1191 */
- #define STR_TOKSDEF 356 /* 1192 */
-
- #define STR_LET 357 /* 1184 */
- #define STR_FUTURELET 358 /* 1185 */
-
- #define STR_INACCESSIBLE 347 /* 1183 */
-
- #define STR_LONG 539 /* 1164 */
- #define STR_OUTER 540 /* 1165 */
- #define STR_GLOBAL 541 /* 1166 */
- #define STR_DEF 542 /* 1167 */
- #define STR_GDEF 543 /* 1168 */
- #define STR_EDEF 544 /* 1169 */
- #define STR_XDEF 545 /* 1170 */
-
- #define STR_ABOVE 558 /* 1140 */
- #define STR_OVER 559 /* 1141 */
- #define STR_ATOP 560 /* 1142 */
- #define STR_ABOVEWITHDELIMS 561 /* 1143 */
- #define STR_OVERWITHDELIMS 562 /* 1144 */
- #define STR_ATOPWITHDELIMS 563 /* 1145 */
-
- #define STR_FIL 309 /* */
- #define STR_PLUS_ 310 /* */
- #define STR_MINUS_ 311 /* */
-
- /* --- */
- /* STR ohne Aenderung muessen noch ueberprueft werden, ob alle
- Vorkommen ersetzt wurden
- */
-
- #define STR_INSERT 327 /* */
- #define STR_MU 334 /* */
- #define STR_KERN 337
- #define STR_MATH 340
- #define STR_DISCRETIONARY 346
- #define STR_SKIP 391 /* */
- #define STR_PT 393 /* */
-
- #define STR_BOX 405 /* */
-
- #define STR_ENDCSNAME 501 /* */
- #define STR_ENDGROUP 512 /* */
- #define STR_HRULE 517
- #define STR_MATHACCENT 519
- #define STR_NOALIGN 523
- #define STR_OMIT 526
- #define STR_PENALTY 527
- #define STR_PREVGRAF 528
- #define STR_READ 530 /* */
- #define STR_THE 533
- #define STR_PAR 593 /* */
-
- #define STR_SPACEFACTOR 256 /* 664 */
- #define STR_PREVDEPTH 371 /* 665 */
- #define STR_DEADCYCLES 495 /* 666 */
- #define STR_INSERTPENALTIES 497 /* 667 */
-
- #define STR_WD 499 /* 668 */
- #define STR_HT 502 /* 669 */
- #define STR_DP 503 /* 670 */
-
- #define STR_LASTPENALTY 556 /* 671 */
- #define STR_LASTKERN 557 /* 672 */
- #define STR_LASTSKIP 567 /* 673 */
- #define STR_INPUTLINENO 587 /* 674 */
- #define STR_BADNESS 588 /* 675 */
-
- #define STR_TRUE 407 /* 700 */
- #define STR_EM 546 /* 704 */
- #define STR_EX 547 /* 705 */
- #define STR_IN 548 /* 711 */
- #define STR_PC 549 /* 712 */
- #define STR_CM 550 /* 713 */
- #define STR_MM 551 /* 714 */
- #define STR_BP 552 /* 715 */
- #define STR_DD 553 /* 716 */
- #define STR_CC 554 /* 717 */
- #define STR_SP 555 /* 718 */
-
- #define STR_PLUS 537 /* 726 */
- #define STR_MINUS 538 /* 727 */
- #define STR_WIDTH 564 /* 728 */
- #define STR_HEIGHT 565 /* 729 */
- #define STR_DEPTH 566 /* 730 */
-
- #define STR_NUMBER 365 /* 731 */
- #define STR_ROMANNUMERAL 366 /* 732 */
- #define STR_STRING 367 /* 733 */
- #define STR_MEANING 368 /* 734 */
- #define STR_FONTNAME 369 /* 735 */
- #define STR_JOBNAME 370 /* 736 */
-
- #define STR_AT_ 406 /* 737 */
-
- #define STR_IF 594 /* 752 */
- #define STR_IFCAT 595 /* 753 */
- #define STR_IFNUM 596 /* 754 */
- #define STR_IFDIM 597 /* 755 */
- #define STR_IFODD 598 /* 756 */
- #define STR_IFVMODE 599 /* 757 */
- #define STR_IFHMODE 600 /* 758 */
- #define STR_IFMMODE 601 /* 759 */
- #define STR_IFINNER 602 /* 760 */
- #define STR_IFVOID 603 /* 761 */
- #define STR_IFHBOX 604 /* 762 */
- #define STR_IFVBOX 605 /* 763 */
- #define STR_IFX 606 /* 764 */
- #define STR_IFEOF 607 /* 765 */
- #define STR_IFTRUE 608 /* 766 */
- #define STR_IFFALSE 609 /* 767 */
- #define STR_IFCASE 610 /* 768 */
- #define STR_FI 611 /* 769 */
- #define STR_OR 612 /* 770 */
- #define STR_ELSE 613 /* 771 */
-
- #define STR_DOT_FMT 359 /* 779 */
- #define STR_DOT_TEX 360 /* 784 */
- #define STR_DOT_DVI 361 /* 787 */
- #define STR_TEXPUT 471 /* 789 */
-
- #define STR_DOT_LOG 264 /* 790 */
- #define STR_NULLFONT 303 /* 794 */
- #define STR_DOT_TFM 326 /* 804 */
-
- #define STR_TO 290 /* 835 */
- #define STR_SPREAD 297 /* 836 */
-
- #define STR_DISPLAYSTYLE 299 /* 854 */
- #define STR_TEXTSTYLE 300 /* 855 */
- #define STR_SCRIPTSTYLE 301 /* 856 */
- #define STR_SCRIPTSCRIPTSTYLE 302 /* 857 */
-
- #define STR_MATHORD 276 /* 859 */
- #define STR_MATHOP 277 /* 860 */
- #define STR_MATHBIN 278 /* 861 */
- #define STR_MATHREL 279 /* 862 */
- #define STR_MATHOPEN 280 /* 863 */
- #define STR_MATHCLOSE 281 /* 864 */
- #define STR_MATHPUNCT 282 /* 865 */
- #define STR_MATHINNER 283 /* 866 */
- #define STR_OVERLINE 259 /* 867 */
- #define STR_UNDERLINE 261 /* 868 */
-
- #define STR_LEFT 292 /* 869 */
- #define STR_RIGHT 293 /* 870 */
-
- #define STR_LIMITS 295 /* 871 */
- #define STR_NOLIMITS 296 /* 872 */
-
- #define STR_SPAN 306 /* 891 */
- #define STR_CR 307 /* 892 */
- #define STR_CRCR 308 /* 893 */
- #define STR_ENDTEMPLATE 316 /* 894 */
-
- #define STR_HYPHENATION 284 /* 934 */
- #define STR_PATTERNS 270 /* 946 */
-
- #define STR_VSPLIT 294 /* 958 */
- #define STR_VBOX 298 /* 960 */
-
- #define STR_END 343 /* 1018 */
- #define STR_DUMP 344 /* 1019 */
-
- #define STR_PAGEGOAL 317 /* 963 */
- #define STR_PAGETOTAL 318 /* 964 */
- #define STR_PAGESTRETCH 319 /* 965 */
- #define STR_PAGEFILSTRETCH 320 /* 966 */
- #define STR_PAGEFILLSTRETCH 321 /* 967 */
- #define STR_PAGEFILLLSTRETCH 328 /* 968 */
- #define STR_PAGESHRINK 329 /* 969 */
- #define STR_PAGEDEPTH 330 /* 970 */
-
- #define STR_HSKIP 589 /* 1020 */
- #define STR_HFIL 591 /* 1021 */
- #define STR_HFILL 592 /* 1022 */
- #define STR_HSS 614 /* 1023 */
- #define STR_HFILNEG 615 /* 1024 */
- #define STR_VSKIP 616 /* 1025 */
- #define STR_VFIL 617 /* 1026 */
- #define STR_VFILL 618 /* 1027 */
- #define STR_VSS 619 /* 1028 */
- #define STR_VFILNEG 620 /* 1029 */
-
- #define STR_MOVELEFT 575 /* 1047 */
- #define STR_MOVERIGHT 576 /* 1048 */
- #define STR_RAISE 577 /* 1049 */
- #define STR_LOWER 578 /* 1050 */
- #define STR_COPY 579 /* 1051 */
- #define STR_LASTBOX 580 /* 1052 */
- #define STR_VTOP 581 /* 1053 */
- #define STR_HBOX 582 /* 1054 */
- #define STR_SHIPOUT 583 /* 1055 */
- #define STR_LEADERS 584 /* 1056 */
- #define STR_CLEADERS 585 /* 1057 */
- #define STR_XLEADERS 586 /* 1058 */
-
- #define STR_INDENT 336 /* 1073 */
- #define STR_NOINDENT 338 /* 1074 */
-
- #define STR_UNPENALTY 568 /* 1083 */
- #define STR_UNKERN 569 /* 1084 */
- #define STR_UNSKIP 570 /* 1085 */
- #define STR_UNHBOX 571 /* 1086 */
- #define STR_UNHCOPY 572 /* 1087 */
- #define STR_UNVBOX 573 /* 1088 */
- #define STR_UNVCOPY 574 /* 1089 */
-
- #define STR_EQNO 362 /* 1120 */
- #define STR_LEQNO 363 /* 1121 */
- #define STR_DISPLAYLIMITS 364 /* 1122 */
-
- /* */
- /* STR_MAX_ALL = last string in tex.pool */
- #define STR_MAX_ALL 631 /* 914 */ /* 1290 */
-
- #ifdef MLTEX
- #define STR_CHARSUBDEFMAX (STR_MAX_ALL+1)
- #define STR_TRACING_CHARSUBDEF (STR_CHARSUBDEFMAX+1)
- #define STR_CHARSUBDEF (STR_TRACING_CHARSUBDEF+1)
-
- # ifdef ERW_INTERACTION
- #define STR_INTERACTION_MODE (STR_CHARSUBDEF+1)
- #define STR_MAX (STR_INTERACTION_MODE+1)
- # else
- #define STR_MAX (STR_CHARSUBDEF+1)
- # endif
- #else
- # ifdef ERW_INTERACTION
- #define STR_INTERACTION_MODE (STR_MAX_ALL+1)
- #define STR_MAX (STR_INTERACTION_MODE+1)
- # else
- #define STR_MAX (STR_MAX_ALL+1)
- # endif
- #endif
-
- #ifdef TEXXET
- #define STR_BEGINL (STR_MAX+1)
- #define STR_BEGINR (STR_BEGINL+1)
- #define STR_ENDL (STR_BEGINR+1)
- #define STR_ENDR (STR_ENDL+1)
- #endif
-
-
- #ifdef MLTEX
- # if 0
- # define effective_char(inchr) \
- ( (is_ML_TeX && char_list_exists(inchr) && (inchr) <= char_sub_def_max) \
- ? (eqtb[char_sub_base + (inchr)].qqqq.b1) \
- : (inchr) )
- # endif
- #else
- # define effective_char(inchr) (inchr)
- #endif
-
- /* bei aelteren GCC's wird *10 mit mulX #10,dX uebersetzt */
- #if 0
- /* besser als "muls #10,d0" : */
- #define TEN_MULT(X) ((((X) << 2) + (X)) << 1)
- #else
- #define TEN_MULT(X) (10 * (X))
- #endif
-
-
- #ifdef FONTSTRUCT
- #define charbase(f) fontdesc[f].charbase
- #define widthbase(f) fontdesc[f].widthbase
- #define heightbase(f) fontdesc[f].heightbase
- #define depthbase(f) fontdesc[f].depthbase
- #define italicbase(f) fontdesc[f].italicbase
- #define ligkernbase(f) fontdesc[f].ligkernbase
- #define kernbase(f) fontdesc[f].kernbase
- #define extenbase(f) fontdesc[f].extenbase
- #define parambase(f) fontdesc[f].parambase
-
- #define fontbc(f) fontdesc[f].fontbc
- #define fontec(f) fontdesc[f].fontec
- #define fontcheck(f) fontdesc[f].fontcheck
- #define fontparams(f) fontdesc[f].fontparams
- #define fontglue(f) fontdesc[f].fontglue
- #define hyphenchar(f) fontdesc[f].hyphenchar
- #define skewchar(f) fontdesc[f].skewchar
- #define bcharlabel(f) fontdesc[f].bcharlabel
- #define fontbchar(f) fontdesc[f].fontbchar
- #define fontfalsebchar(f) fontdesc[f].fontfalsebchar
-
- #else
-
- #define charbase(f) charbase[f]
- #define widthbase(f) widthbase[f]
- #define heightbase(f) heightbase[f]
- #define depthbase(f) depthbase[f]
- #define italicbase(f) italicbase[f]
- #define ligkernbase(f) ligkernbase[f]
- #define kernbase(f) kernbase[f]
- #define extenbase(f) extenbase[f]
- #define parambase(f) parambase[f]
-
- #ifdef FONTPTR
- #define fontbc(f) font_bcec[f].bc
- #define fontec(f) font_bcec[f].ec
- #else
- #define fontbc(f) fontbc[f]
- #define fontec(f) fontec[f]
- #endif
- #define fontcheck(f) fontcheck[f]
- #define fontparams(f) fontparams[f]
- #define fontglue(f) fontglue[f]
- #define hyphenchar(f) hyphenchar[f]
- #define skewchar(f) skewchar[f]
- #define bcharlabel(f) bcharlabel[f]
- #define fontbchar(f) fontbchar[f]
- #define fontfalsebchar(f) fontfalsebchar[f]
-
- #endif
-
- #define fontused(f) fontused[f]
- #define fontsize(f) fontsize[f]
- #define fontdsize(f) fontdsize[f]
- #define fontname(f) fontname[f]
- #define fontarea(f) fontarea[f]
-
-
-
- #ifdef TEXXET
- #define push_LR(ptr) \
- do { \
- register long_halfword LR_tmp = getavail(); \
- info(LR_tmp) = LR_type(ptr); \
- link(LR_tmp) = LR_ptr; \
- LR_ptr = LR_tmp; \
- } while(0)
-
- #define pop_LR \
- do { \
- register long_halfword LR_tmp = LR_ptr; \
- LR_ptr = link(LR_tmp); \
- freeavail(LR_tmp); \
- } while(0)
- #endif
-
-
- #define minquarterword 0
- #define tokentype (curinput.indexfield)
- #define paramstart (curinput.limitfield)
-
- #ifdef NEW_HELP
-
- #define help0 \
- do { static short tmp[] = { 0 }; helpptr = tmp; } while(0)
- #define zhelp1(s1) \
- do { static short tmp[] = { s1 , 0 }; helpptr = tmp; } while(0)
- #define zhelp2(s2,s1) \
- do { static short tmp[] = { s2 , s1 , 0 }; helpptr = tmp; } while(0)
- #define zhelp3(s3,s2,s1) \
- do { static short tmp[] = { s3 , s2 , s1 , 0 }; helpptr = tmp; } while(0)
- #define zhelp4(s4,s3,s2,s1) \
- do { static short tmp[] = { s4 , s3 , s2 , s1 , 0 }; \
- helpptr = tmp; } while(0)
- #define zhelp5(s5,s4,s3,s2,s1) \
- do { static short tmp[] = { s5 , s4 , s3 , s2 , s1 , 0 }; \
- helpptr = tmp; } while(0)
- #define zhelp6(s6,s5,s4,s3,s2,s1) \
- do { static short tmp[] = { s6 , s5 , s4 , s3 , s2 , s1 , 0 }; \
- helpptr = tmp; } while(0)
-
- #else
-
- #define help0 helpptr = 0
- #define zhelp1(s1) do { helpptr = 1; helpline[0] = s1; } while(0)
- #define zhelp2(s2,s1) \
- do { helpptr = 2; helpline[0] = s1; helpline[1] = s2; } while(0)
- #define zhelp3(s3,s2,s1) \
- do { helpptr = 3; helpline[0] = s1; helpline[1] = s2;\
- helpline[2] = s3; } while(0)
- #define zhelp4(s4,s3,s2,s1) \
- do { helpptr = 4; helpline[0] = s1; helpline[1] = s2; helpline[2] = s3; \
- helpline[3] = s4; } while(0)
- #define zhelp5(s5,s4,s3,s2,s1) \
- do { helpptr = 5; helpline[0] = s1; helpline[1] = s2; helpline[2] = s3; \
- helpline[3] = s4; helpline[4] = s5;} while (0)
- #define zhelp6(s6,s5,s4,s3,s2,s1) \
- do { helpptr = 6; helpline[0] = s1; helpline[1] = s2; helpline[2] = s3; \
- helpline[3] = s4; helpline[4] = s5; helpline[5] = s6;} while(0)
-
- #endif
-
-
- #define link(s) (mem[s].hh.v.RH) /* the |link| field of a memory word */
- #define info(s) (mem[s].hh.v.LH) /* the |info| field of a memory word */
-
- #define isempty(s) (link(s) == emptyflag) /* tests for empty node */
- /* left link in doubly-linked list of empty nodes */
- #define llink(s) info((s)+1)
- /* right link in doubly-linked list of empty nodes */
- #define rlink(s) link((s)+1)
-
-
- #define length(s) (strstart[(s)+1]-strstart[s])
- /* the number of characters in string number |s| */
- #define curlength (poolptr - strstart[strptr])
-
- /* put |ASCII_code| # at the end of |str_pool| */
- #define appendchar(c) \
- strpool[poolptr++] = (c)
- /* forget the last character in the pool */
- #define flushchar decr(poolptr)
- /* make sure that the pool hasn't overflowed */
- #define strroom(s) \
- do { if (poolptr + (s) > poolsize) \
- overflow(0, poolsize-initpoolptr); /* "pool size" */ \
- } while(0)
-
- #define flushstring do { decr(strptr); poolptr=strstart[strptr]; } while(0)
-
-
- #define str_eq_str(s,t) \
- ( (length(s) == length(t)) && \
- !strncmp( (char *) &strpool[strstart[(s)]], \
- (char *) &strpool[strstart[(t)]], length(s)) )
-
-
- /* Achtung: freeavail direkt verwendet in flush_node_list() */
- #ifdef STAT
- /* single-word node liberation */
- #define freeavail(s) \
- do { \
- register halfword *availPTR = &avail; \
- link(s) = *availPTR; *availPTR = (s); \
- decr(dynused); \
- } while(0)
- #else
- #define freeavail(s) \
- do { \
- register halfword *availPTR = &avail; \
- link(s) = *availPTR; *availPTR = (s); \
- } while(0)
- #endif
-
- #ifdef STAT
- #define fastgetavail(s) \
- do { register halfword *availPTR = &avail; \
- (s)=*availPTR; /*avoid |get_avail| if possible, to save time */ \
- if( (s)==0 ) { \
- (s)=getavail(); \
- } else { \
- *availPTR=link(s); link(s)=0; \
- incr(dynused); \
- } \
- } while(0)
- #else
- #define fastgetavail(s) \
- do { (s)=avail; /*avoid |get_avail| if possible, to save time */ \
- if( (s)==0 ) { (s)=getavail(); \
- } else { avail=link(s); link(s)=0; } } while(0)
- #endif
-
- #define ztype(s) mem[s].hh.b0 /* identifies what kind of node this is */
- #define subtype(s) mem[s].hh.b1 /* secondary identification in some cases */
- /* (br) added this for all functions new...() with const s1,s2 */
- #define set_type_subtype(s,s1,s2) \
- mem[s].hh.w.LH = ((s1) * 256) + (s2)
-
- #define ischarnode(s) ((s)>=himemmin)
- /* does the argument point to a |char_node|? */
- /* (br) added this all functions new...() */
- #define set_font_character(s,s1,s2) set_type_subtype((s),(s1),(s2))
-
- #define width(s) mem[(s)+widthoffset].cint /* width of the box, in sp */
- #define depth(s) mem[(s)+depthoffset].cint /* depth of the box, in sp */
- #define height(s) mem[(s)+heightoffset].cint /* height of the box, in sp */
- #define shiftamount(s) mem[(s)+4].cint /* repositioning distance, in sp */
- #define listptr(s) link((s)+listoffset)
- /* beginning of the list inside the box */
- #define glueorder(s) subtype((s)+listoffset)
- /* applicable order of infinity */
- #define gluesign(s) ztype((s)+listoffset)
- /* stretching or shrinking */
- #define glueset(s) mem[(s)+glueoffset].gr
- /* a word of type |glue_ratio| for glue setting */
- /* (br) added this all functions new...() */
- #define set_gluesign_order(s,s1,s2) \
- set_type_subtype((s)+listoffset,(s1),(s2))
-
-
- #define isrunning(s) ((s)==nullflag) /* tests for a running dimension */
-
- #define floatcost(s) mem[(s)+1].cint /* the |floating_penalty| to be used */
- #define insptr(s) info((s)+4) /* the vertical list to be inserted */
- #define splittopptr(s) link((s)+4) /* the |split_top_skip| to be used */
-
- #define markptr(s) mem[(s)+1].cint /* head of the token list for a mark */
- #define adjustptr(s) markptr(s)
-
- #define ligchar(s) (s)+1 /* the word where the ligature is to be found */
- #define ligptr(s) link(ligchar(s)) /* the list of characters */
-
- #define replacecount(s) subtype(s) /* how many subsequent nodes to replace */
- /* (br) added this all functions new...() */
- #define set_type_replacecount(s,s1,s2) set_type_subtype((s),(s1),(s2))
- #define prebreak(s) llink(s) /* text that precedes a discretionary break */
- #define postbreak(s) rlink(s) /* text that follows a discretionary break */
-
- #define precedesbreak(s) (ztype(s)<mathnode)
- #define nondiscardable(s) (ztype(s)<mathnode)
-
- #define glueptr(s) llink(s) /* pointer to a glue specification */
- #define leaderptr(s) rlink(s) /* pointer to box or rule node for leaders */
-
- #define gluerefcount(s) link(s) /* reference count of a glue specification */
- #define stretch(s) mem[(s)+2].cint /*the stretchability of this glob of glue*/
- #define shrink(s) mem[(s)+3].cint /*the shrinkability of this glob of glue*/
-
- #define stretchorder(s) ztype(s) /* order of infinity for stretching */
- #define shrinkorder(s) subtype(s) /* order of infinity for shrinking */
- /* (br) added this all functions new...() */
- #define set_stretch_shrinkorder(s,s1,s2) set_type_subtype(s,(s1),(s2))
-
- #define penalty(s) mem[(s)+1].cint /*the added cost of breaking a list here*/
-
- #define glueshrink(s) shiftamount(s) /* total shrink in an unset node */
- #define spancount(s) subtype(s) /* indicates the number of spanned columns */
-
- #define gluestretch(s) mem[(s)+glueoffset].cint
- /* total stretch in an unset node */
-
-
- #define fastdeleteglueref(s) \
- do { if (gluerefcount(s)==0) freenode(s,gluespecsize); \
- else decr(gluerefcount(s)); } while(0)
-
- #define addtokenref(s) incr(tokenrefcount(s))
- /* new reference to a token list */
- #define addglueref(s) incr(gluerefcount(s))
- /* new reference to a glue spec */
-
- #define tailappend(s) \
- do { \
- register halfword *tailfPTR = &(curlist.tailfield); \
- link( (*tailfPTR) ) = (s); \
- *tailfPTR = link( (*tailfPTR) ); \
- } while(0)
-
-
- #define eqlevelfield(s) (s).hh.b1
- #define eqtypefield(s) (s).hh.b0
- #define equivfield(s) (s).hh.v.RH
- #define eqlevel(s) eqlevelfield(eqtb[s]) /* level of definition */
- #define eqtype(s) eqtypefield(eqtb[s]) /* command code for equivalent */
- #define equiv(s) equivfield(eqtb[s]) /* equivalent value */
-
-
- #define skip(s) equiv((s)+skipbase) /*|mem| location of glue specification*/
- #define muskip(s) equiv((s)+muskipbase) /*|mem| location of math glue spec*/
- #define gluepar(s) equiv((s)+gluebase) /*|mem| location of glue specification*/
-
- #define lineskip gluepar(lineskipcode)
- #define baselineskip gluepar(baselineskipcode)
- #define parskip gluepar(parskipcode)
- #define abovedisplayskip gluepar(abovedisplayskipcode)
- #define belowdisplayskip gluepar(belowdisplayskipcode)
- #define abovedisplayshortskip gluepar(abovedisplayshortskipcode)
- #define belowdisplayshortskip gluepar(belowdisplayshortskipcode)
- #define leftskip gluepar(leftskipcode)
- #define rightskip gluepar(rightskipcode)
- #define topskip gluepar(topskipcode)
- #define splittopskip gluepar(splittopskipcode)
- #define tabskip gluepar(tabskipcode)
- #define spaceskip gluepar(spaceskipcode)
- #define xspaceskip gluepar(xspaceskipcode)
- #define parfillskip gluepar(parfillskipcode)
- #define thinmuskip gluepar(thinmuskipcode)
- #define medmuskip gluepar(medmuskipcode)
- #define thickmuskip gluepar(thickmuskipcode)
-
- #define parshapeptr equiv(parshapeloc)
- #define outputroutine equiv(outputroutineloc)
- #define everypar equiv(everyparloc)
- #define everymath equiv(everymathloc)
- #define everydisplay equiv(everydisplayloc)
- #define everyhbox equiv(everyhboxloc)
- #define everyvbox equiv(everyvboxloc)
- #define everyjob equiv(everyjobloc)
- #define everycr equiv(everycrloc)
- #define errhelp equiv(errhelploc)
- #define toks(s) equiv((s)+toksbase)
- #define box(s) equiv((s)+boxbase)
- #define curfont equiv(curfontloc)
- #define famfnt(s) equiv((s)+mathfontbase)
- #define catcode(s) equiv((s)+catcodebase)
- #define lccode(s) equiv((s)+lccodebase)
- #define uccode(s) equiv((s)+uccodebase)
- #define sfcode(s) equiv((s)+sfcodebase)
- #define mathcode(s) equiv((s)+mathcodebase)
- /* Note: |mathcode(c)| is the true math code plus |minhalfword| */
-
- #define delcode(s) eqtb[(s)+delcodebase].cint
- #define count(s) eqtb[(s)+countbase].cint
- #define intpar(s) eqtb[(s)+intbase].cint /* an integer parameter */
- #define pretolerance intpar(pretolerancecode)
- #define tolerance intpar(tolerancecode)
- #define linepenalty intpar(linepenaltycode)
- #define hyphenpenalty intpar(hyphenpenaltycode)
- #define exhyphenpenalty intpar(exhyphenpenaltycode)
- #define clubpenalty intpar(clubpenaltycode)
- #define widowpenalty intpar(widowpenaltycode)
- #define displaywidowpenalty intpar(displaywidowpenaltycode)
- #define brokenpenalty intpar(brokenpenaltycode)
- #define binoppenalty intpar(binoppenaltycode)
- #define relpenalty intpar(relpenaltycode)
- #define predisplaypenalty intpar(predisplaypenaltycode)
- #define postdisplaypenalty intpar(postdisplaypenaltycode)
- #define interlinepenalty intpar(interlinepenaltycode)
- #define doublehyphendemerits intpar(doublehyphendemeritscode)
- #define finalhyphendemerits intpar(finalhyphendemeritscode)
- #define adjdemerits intpar(adjdemeritscode)
- #define mag intpar(magcode)
- #define delimiterfactor intpar(delimiterfactorcode)
- #define looseness intpar(loosenesscode)
- #define ztime intpar(timecode)
- #define zday intpar(daycode)
- #define zmonth intpar(monthcode)
- #define zyear intpar(yearcode)
- #define showboxbreadth intpar(showboxbreadthcode)
- #define showboxdepth intpar(showboxdepthcode)
- #define hbadness intpar(hbadnesscode)
- #define vbadness intpar(vbadnesscode)
- #define pausing intpar(pausingcode)
- #define tracingonline intpar(tracingonlinecode)
- #define tracingmacros intpar(tracingmacroscode)
- #define tracingstats intpar(tracingstatscode)
- #define tracingparagraphs intpar(tracingparagraphscode)
- #define tracingpages intpar(tracingpagescode)
- #define tracingoutput intpar(tracingoutputcode)
- #define tracinglostchars intpar(tracinglostcharscode)
- #define tracingcommands intpar(tracingcommandscode)
- #define tracingrestores intpar(tracingrestorescode)
- #define uchyph intpar(uchyphcode)
- #define outputpenalty intpar(outputpenaltycode)
- #define maxdeadcycles intpar(maxdeadcyclescode)
- #define hangafter intpar(hangaftercode)
- #define floatingpenalty intpar(floatingpenaltycode)
- #define globaldefs intpar(globaldefscode)
- #define curfam intpar(curfamcode)
- #define escapechar intpar(escapecharcode)
- #define defaulthyphenchar intpar(defaulthyphencharcode)
- #define defaultskewchar intpar(defaultskewcharcode)
- #define endlinechar intpar(endlinecharcode)
- #define newlinechar intpar(newlinecharcode)
- #define language intpar(languagecode)
- #define lefthyphenmin intpar(lefthyphenmincode)
- #define righthyphenmin intpar(righthyphenmincode)
- #define holdinginserts intpar(holdinginsertscode)
- #define errorcontextlines intpar(errorcontextlinescode)
- #ifdef MLTEX
- #define char_sub_def_max intpar(char_sub_def_max_code)
- #define tracing_char_sub_def intpar(tracing_char_sub_def_code)
- #endif
- #ifdef ERW_INTERACTION
- #define interaction intpar(interactionmodecode)
- #endif
-
- #define dimen(s) eqtb[(s)+scaledbase].cint
- #define dimenpar(s) eqtb[(s)+dimenbase].cint /* a scaled quantity */
- #define parindent dimenpar(parindentcode)
- #define mathsurround dimenpar(mathsurroundcode)
- #define lineskiplimit dimenpar(lineskiplimitcode)
- #define hsize dimenpar(hsizecode)
- #define vsize dimenpar(vsizecode)
- #define maxdepth dimenpar(maxdepthcode)
- #define splitmaxdepth dimenpar(splitmaxdepthcode)
- #define boxmaxdepth dimenpar(boxmaxdepthcode)
- #define hfuzz dimenpar(hfuzzcode)
- #define vfuzz dimenpar(vfuzzcode)
- #define delimitershortfall dimenpar(delimitershortfallcode)
- #define nulldelimiterspace dimenpar(nulldelimiterspacecode)
- #define scriptspace dimenpar(scriptspacecode)
- #define predisplaysize dimenpar(predisplaysizecode)
- #define displaywidth dimenpar(displaywidthcode)
- #define displayindent dimenpar(displayindentcode)
- #define overfullrule dimenpar(overfullrulecode)
- #define hangindent dimenpar(hangindentcode)
- #define hoffset dimenpar(hoffsetcode)
- #define voffset dimenpar(voffsetcode)
- #define emergencystretch dimenpar(emergencystretchcode)
-
-
- #define next(s) hash[s].v.LH
- /* link for coalesced lists */
- #define ztext(s) hash[s].v.RH
- /* string number for control sequence name */
- /* #define text(s) ztext(h) */
- #define hashisfull (hashused==hashbase)
- /* test if all positions are occupied */
- #define fontidtext(s) ztext((s)+fontidbase)
- /* a frozen font identifier's name */
-
- #define savetype(s) savestack[s].hh.b0
- /* classifies a |savestack| entry */
- #define savelevel(s) savestack[s].hh.b1
- /* saved level for regions 5 and 6, or group code */
- #define saveindex(s) savestack[s].hh.v.RH
- /* |eqtb| location or |savestack| location */
-
- #define saved(s) savestack[(s)+saveptr].cint
-
- #define endlinecharinactive() ((endlinechar < 0) || (endlinechar > 255))
-
- #define storenewtoken(s) \
- do { register long_halfword q; \
- q = getavail(); link(p)=q; info(q)=(s); \
- p=q; /* |link(p)| is |null| */ } while(0)
- #define faststorenewtoken(s) \
- do { register long_halfword q; \
- fastgetavail(q); link(p)=q; info(q)=(s); \
- p=q; /* |link(p)| is |null| */ } while(0)
-
-
- #define topmark curmark[topmarkcode]
- #define firstmark curmark[firstmarkcode]
- #define botmark curmark[botmarkcode]
- #define splitfirstmark curmark[splitfirstmarkcode]
- #define splitbotmark curmark[splitbotmarkcode]
-
-
- #define iflinefield(s) mem[(s)+1].cint
-
- #define getxtokenoractivechar \
- do { \
- r_curcmd = getxtoken(); \
- if ( r_curcmd == relax && curchr == noexpandflag ) { \
- r_curcmd = 13; /* active_char */ \
- curchr = curtok - cstokenflag - activebase; \
- } \
- } while(0)
-
-
- #define dviout(s) \
- do { dvibuf[dviptr] = (s); incr(dviptr); \
- if (dviptr == dvilimit) dviswap(); } while(0)
-
- #define location(s) mem[(s)+2].cint
- /* \.{DVI} byte number for a movement command */
-
-
- #define nucleus(s) ((s)+1) /* the |nucleus| field of a noad */
- #define supscr(s) ((s)+2) /* the |supscr| field of a noad */
- #define subscr(s) ((s)+3) /* the |subscr| field of a noad */
- #define mathtype(s) link(s) /* a |halfword| in |mem| */
- #define fam(s) font(s) /* a |quarterword| in |mem| */
-
- #define leftdelimiter(s) ((s)+4) /* first delimiter field of a noad */
- #define rightdelimiter(s) ((s)+5)
- /* second delimiter field of a fraction noad */
- #define smallfam(s) mem[s].qqqq.b0 /* |fam| for ``small'' delimiter */
- #define smallchar(s) mem[s].qqqq.b1 /* |character| for ``small'' delimiter */
- #define largefam(s) mem[s].qqqq.b2 /* |fam| for ``large'' delimiter */
- #define largechar(s) mem[s].qqqq.b3 /* |character| for ``large'' delimiter */
- #define thickness(s) width(s) /* |thickness| field in a fraction noad */
- #define numerator(s) supscr(s) /* |numerator| field in a fraction noad */
- #define denominator(s) subscr(s) /* |denominator| field in a fraction noad */
-
- #define accentchr(s) ((s)+4) /* the |accent_chr| field of an accent noad */
- #define delimiter(s) nucleus(s) /* |delimiter| field in left and right noads */
- #define scriptsallowed(s) ((ztype(s)>=ordnoad)&&(ztype(s)<leftnoad))
-
- #define displaymlist(s) info((s)+1)
- /* mlist to be used in display style */
- #define textmlist(s) link((s)+1)
- /* mlist to be used in text style */
- #define scriptmlist(s) info((s)+2)
- /* mlist to be used in script style */
- #define scriptscriptmlist(s) link((s)+2)
- /* mlist to be used in scriptscript style */
-
-
- #if 0
- #define skipbyte(s) ((s).b0)
- #define nextchar(s) ((s).b1)
- #define opbyte(s) ((s).b2)
- #define rembyte(s) ((s).b3)
- #else
- #define skipbyte(s) *((quarterword *) &((s).b0))
- #define nextchar(s) *( ((quarterword *) &((s).b0)) + 1 )
- #define opbyte(s) *( ((quarterword *) &((s).b0)) + 2 )
- #define rembyte(s) ((s).b3)
- /* *( ((quarterword *) &((s).b0)) + 3 ) */
- #endif
-
- #define exttop(s) ((s).b0) /* |top| piece in a recipe */
- #define extmid(s) ((s).b1) /* |mid| piece in a recipe */
- #define extbot(s) ((s).b2) /* |bot| piece in a recipe */
- #define extrep(s) ((s).b3) /* |rep| piece in a recipe */
-
-
- #ifdef MLTEX
- #define char_list_exists(s) (equiv((s)+char_sub_base) > 0) /* min_halfword */
- #endif
-
- /* CharInfo() nur verwendet in readfontinfo() */
- #ifdef FONTPTR
- #ifdef MLTEX
- #define zcharinfo(s1,s2) (*(charbase(s1)+effective_char(s2))).qqqq
- #else
- #define zcharinfo(s1,s2) (*(charbase(s1)+(s2))).qqqq
- #endif
- #define CharInfo(s1,s2) (*(charbase(s1)+(s2))).qqqq
- #define zcharwidth(s1,s2) (*(widthbase(s1)+(s2).b0)).cint
- #else
- #ifdef MLTEX
- #define zcharinfo(s1,s2) fontinfo[charbase(s1)+effective_char(s2)].qqqq
- #else
- #define zcharinfo(s1,s2) fontinfo[charbase(s1)+(s2)].qqqq
- #endif
- #define CharInfo(s1,s2) fontinfo[charbase(s1)+(s2)].qqqq
- #define zcharwidth(s1,s2) fontinfo[widthbase(s1)+((s2).b0)].cint
- #endif
-
- #if 0
- #define charexists(s) (((s).b0) > minquarterword)
- #else /* minquarterword = 0 */
- #define charexists(s) (((s).cint) > 0x00ffffff)
- #endif
-
- #ifdef FONTPTR
- #define zcharitalic(s1,s2) (*(italicbase(s1)+(((s2).b2)/4))).cint
- #define zcharheight(s1,s2) (*(heightbase(s1)+((s2)/16))).cint
- #define zchardepth(s1,s2) (*(depthbase(s1)+((s2)%16))).cint
- #else
- #define zcharitalic(s1,s2) fontinfo[italicbase(s1) + (((s2).b2)/4)].cint
- #define zcharheight(s1,s2) fontinfo[heightbase(s1) + ((s2)/16)].cint
- #define zchardepth(s1,s2) fontinfo[depthbase(s1) + ((s2)%16)].cint
- #endif
- #if 0
- #define heightdepth(s) ((s).b1)
- #else
- #define heightdepth(s) (*( ((quarterword *) &((s).b0)) + 1 ))
- #endif
-
- /* Tag field in char_info word: ... */
- #define notag 0 /* wird nirgends verwendet */
- #define ligtag 1
- #define listtag 2
- #define exttag 3
- #define chartag(s) (((s).b2) % 4)
- #define mychartag(s) ((unsigned short) ((s).cint & 0x00000300))
- /* Vergleich dann mit (..tag << 8) */
-
- #ifdef FONTPTR
-
- #define zcharkern(s1,s2) \
- (*(kernbase(s1) + *( ((unsigned short *) &((s2).b0)) + 1 ))).cint
-
- #define zligkernstart(s1,s2) (ligkernbase(s1)+rembyte(s2))
- /* beginning of lig/kern program */
-
- #define zligkernrestart(s1,s2) \
- (ligkernbase(s1)+ *( ((unsigned short *) &((s2).b0)) + 1) + \
- (32768L-kernbaseoffset))
-
- #else
-
- #define zcharkern(s1,s2) \
- fontinfo[kernbase(s1) + *( ((unsigned short *) &((s2).b0)) + 1 )].cint
- /* not +2, because sizeof(u_short) = 2 !! */
- /* fontinfo[kernbase(s1) + 256*opbyte(s2)+rembyte(s2)].cint */
-
- #define zligkernstart(s1,s2) (ligkernbase(s1)+rembyte(s2))
- /* beginning of lig/kern program */
-
- #define zligkernrestart(s1,s2) \
- (ligkernbase(s1)+ *( ((unsigned short *) &((s2).b0)) + 1) + \
- (32768L-kernbaseoffset))
- /* (ligkernbase(s1)+(256*opbyte(s2))+rembyte(s2)+(32768L-kernbaseoffset)) */
-
- #endif
-
-
- #define zparam(s1,s2) fontinfo[(s1) + parambase(s2)].cint
- #define param(s1,s2) zparam(s1,s2)
-
- #define slant(s) param(slantcode,s)
- /* slant to the right, per unit distance upward*/
- #define space(s) param(spacecode,s) /* normal space between words*/
- #define spacestretch(s) param(spacestretchcode,s) /* stretch between words*/
- #define spaceshrink(s) param(spaceshrinkcode,s) /* shrink between words*/
- #define xheight(s) param(xheightcode,s) /* one ex*/
- #define quad(s) param(quadcode,s) /* one em*/
- #define extraspace(s) param(extraspacecode,s)
- /* additional space at end of sentence*/
-
- #define zmathsy(s1,s2) fontinfo[(s1)+parambase(famfnt((s2)+2))].cint
- #define mathsy(s1,s2) zmathsy((s1),(s2))
- #define mathxheight(s) mathsy(5,s) /* height of `\.x' */
- #define mathquad(s) mathsy(6,s) /* \.{18mu} */
- #define num1(s) mathsy(8,s) /* numerator shift-up in display styles */
- #define num2(s) mathsy(9,s) /* numerator shift-up in non-display, non-\.{\\atop} */
- #define num3(s) mathsy(10,s) /* numerator shift-up in non-display \.{\\atop} */
- #define denom1(s) mathsy(11,s) /* denominator shift-down in display styles */
- #define denom2(s) mathsy(12,s) /* denominator shift-down in non-display styles */
- #define sup1(s) mathsy(13,s) /* superscript shift-up in uncramped display style */
- #define sup2(s) mathsy(14,s) /* superscript shift-up in uncramped non-display */
- #define sup3(s) mathsy(15,s) /* superscript shift-up in cramped styles */
- #define sub1(s) mathsy(16,s) /* subscript shift-down if superscript is absent */
- #define sub2(s) mathsy(17,s) /* subscript shift-down if superscript is present */
- #define supdrop(s) mathsy(18,s) /* superscript baseline below top of large box */
- #define subdrop(s) mathsy(19,s) /* subscript baseline below bottom of large box */
- #define delim1(s) mathsy(20,s)
- /* size of \.{\\atopwithdelims} delimiters in display styles */
- #define delim2(s) mathsy(21,s)
- /* size of \.{\\atopwithdelims} delimiters in non-displays */
- #define axisheight(s) mathsy(22,s)
- /* height of fraction lines above the baseline */
-
- #define mathex(s) fontinfo[(s)+parambase(famfnt(cursize+3))].cint
- #define defaultrulethickness mathex(8) /* thickness of \.{\\over} bars */
- #define bigopspacing1 mathex(9) /* minimum clearance above a displayed op */
- #define bigopspacing2 mathex(10) /* minimum clearance below a displayed op */
- #define bigopspacing3 mathex(11) /* minimum baselineskip above displayed op */
- #define bigopspacing4 mathex(12) /* minimum baselineskip below displayed op */
- #define bigopspacing5 mathex(13) /* padding above and below displayed limits */
-
- #define crampedstyle(s) (((s)&~1)+cramped) /* cramp the style */
- #if 1
- #define substyle(s) ((((s)/2)&~1)+scriptstyle+cramped) /* smaller and cramped */
- #define supstyle(s) ((((s)/2)&~1)+scriptstyle+((s)&1)) /* smaller */
- #define numstyle(s) ((s)+2-(((s)/3)&~1)) /* smaller unless already script-script */
- #define denomstyle(s) (((s)&~1)+cramped+2-(((s)/3)&~1)) /* smaller, cramped */
- #else
- #define substyle(s) (2*((s)/4)+scriptstyle+cramped) /* smaller and cramped */
- #define supstyle(s) (2*((s)/4)+scriptstyle+((s)%2)) /* smaller */
- #define numstyle(s) ((s)+2-2*((s)/6)) /* smaller unless already script-script */
- #define denomstyle(s) (2*((s)/2)+cramped+2-2*((s)/6)) /* smaller, cramped */
- #endif
-
- #define newhlist(s) mem[nucleus(s)].cint /* the translation of an mlist */
-
-
- #define upart(s) mem[(s)+heightoffset].cint /* pointer to \<u_j> token list */
- #define vpart(s) mem[(s)+depthoffset].cint /* pointer to \<v_j> token list */
- #define extrainfo(s) info((s)+listoffset) /* info to remember during template */
-
- #define preamble link(alignhead) /* the current preamble list */
-
-
- #define fitness(s) subtype(s)
- /* |very_loose_fit..tight_fit| on final line for this break */
- #define breaknode(s) rlink(s) /* pointer to the corresponding passive node */
- #define zlinenumber(s) llink(s) /* line that begins at this breakpoint */
- #define totaldemerits(s) mem[(s)+2].cint
- /* the quantity that \TeX\ minimizes */
-
- #define curbreak(s) rlink(s)
- /* in passive node, points to position of this breakpoint */
- #define prevbreak(s) llink(s)
- /* points to passive node that should precede this one */
- #define serial(s) info(s) /* serial number for symbolic identification */
-
-
- /* -------- BEGIN: Achtung, die Makros werden direkt in trybreak() verwendet */
- #define converttobreakwidth(s) \
- mem[prevr+(s)].cint = mem[prevr+(s)].cint-curactivewidth[s]+breakwidth[(s)-1]
- #define storebreakwidth(s) activewidth[s]=breakwidth[(s)-1]
- #define newdeltatobreakwidth(s) \
- mem[q+(s)].cint = breakwidth[(s)-1]-curactivewidth[s]
-
- #define newdeltafrombreakwidth(s) \
- mem[q+(s)].cint = curactivewidth[s]-breakwidth[(s)-1]
-
- #define combinetwodeltas(s) \
- mem[prevr+(s)].cint = mem[prevr+(s)].cint+mem[r+(s)].cint
- #define downdatewidth(s) \
- curactivewidth[s] = curactivewidth[s] - mem[prevr+(s)].cint
-
- #define updateactive(s) activewidth[s]=activewidth[s]+mem[r+(s)].cint
- /* -------- END: Achtung, die Makros werden direkt in trybreak() verwendet */
-
-
- #define brokenptr(s) link((s)+1)
- /* an insertion for this class will break here if anywhere */
- #define brokenins(s) info((s)+1) /* this insertion might break at |broken_ptr| */
- #define lastinsptr(s) link((s)+2) /* the most recent insertion for this |subtype| */
- #define bestinsptr(s) info((s)+2) /* the optimum most recent insertion */
-
-
- #ifdef TEXXET
- #define L_code 2
- #define begin_L_code (L_code+before)
- #define end_L_code (L_code+after)
-
- #define R_code 4
- #define begin_R_code (R_code+before)
- #define end_R_code (R_code+after)
-
- #define end_LR(s) odd(subtype(s))
- #define end_LR_type(s) (subtype(s)+after-before)
- #define begin_LR_type(s) (subtype(s)-after+before)
-
- #define edge_node stylenode
- #define edge_node_size stylenodesize
- #define edge_dist(s) depth(s)
-
- #define LR_save curlist.LRs_field
-
- #define R_node unsetnode
- #define left_to_right 0
- #define right_to_left 1
- #define reflected (1-cur_dir)
-
- #define safe_info(p) (((p) == 0L) ? 0L : info(p))
- #endif
-
-
- #define whatlang(s) link((s)+1) /* language number, in the range |0..255| */
- #define whatlhm(s) ztype((s)+1) /* minimum left fragment, in the range |1..63| */
- #define whatrhm(s) subtype((s)+1) /* minimum right fragment, in the range |1..63| */
- #define writetokens(s) link((s)+1) /* reference count of token list to write */
- #define writestream(s) info((s)+1) /* stream number (0 to 17) */
- #define openname(s) link((s)+1) /* string number of file name to open */
- #define openarea(s) info((s)+2) /* string number of file area for |open_name| */
- #define openext(s) link((s)+2) /* string number of file extension for |open_name| */
-
- /* -- end -- */
-