diff options
Diffstat (limited to 'doc/misc')
| -rw-r--r-- | doc/misc/texinfo.tex | 314 |
1 files changed, 278 insertions, 36 deletions
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex index a7f94f96daa..3298298bb9d 100644 --- a/doc/misc/texinfo.tex +++ b/doc/misc/texinfo.tex | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | % Load plain if necessary, i.e., if running under initex. | 3 | % Load plain if necessary, i.e., if running under initex. |
| 4 | \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi | 4 | \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi |
| 5 | % | 5 | % |
| 6 | \def\texinfoversion{2011-08-14.17} | 6 | \def\texinfoversion{2011-09-23.09} |
| 7 | % | 7 | % |
| 8 | % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, | 8 | % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, |
| 9 | % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, | 9 | % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, |
| @@ -3955,13 +3955,13 @@ end | |||
| 3955 | % If so, set to same dimension as multitablelinespace. | 3955 | % If so, set to same dimension as multitablelinespace. |
| 3956 | \ifdim\multitableparskip>\multitablelinespace | 3956 | \ifdim\multitableparskip>\multitablelinespace |
| 3957 | \global\multitableparskip=\multitablelinespace | 3957 | \global\multitableparskip=\multitablelinespace |
| 3958 | \global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller | 3958 | \global\advance\multitableparskip-7pt % to keep parskip somewhat smaller |
| 3959 | %% than skip between lines in the table. | 3959 | % than skip between lines in the table. |
| 3960 | \fi% | 3960 | \fi% |
| 3961 | \ifdim\multitableparskip=0pt | 3961 | \ifdim\multitableparskip=0pt |
| 3962 | \global\multitableparskip=\multitablelinespace | 3962 | \global\multitableparskip=\multitablelinespace |
| 3963 | \global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller | 3963 | \global\advance\multitableparskip-7pt % to keep parskip somewhat smaller |
| 3964 | %% than skip between lines in the table. | 3964 | % than skip between lines in the table. |
| 3965 | \fi} | 3965 | \fi} |
| 3966 | 3966 | ||
| 3967 | 3967 | ||
| @@ -7247,9 +7247,15 @@ end | |||
| 7247 | \def\macroxxx#1{% | 7247 | \def\macroxxx#1{% |
| 7248 | \getargs{#1}% now \macname is the macname and \argl the arglist | 7248 | \getargs{#1}% now \macname is the macname and \argl the arglist |
| 7249 | \ifx\argl\empty % no arguments | 7249 | \ifx\argl\empty % no arguments |
| 7250 | \paramno=0 | 7250 | \paramno=0\relax |
| 7251 | \else | 7251 | \else |
| 7252 | \expandafter\parsemargdef \argl;% | 7252 | \expandafter\parsemargdef \argl;% |
| 7253 | \if\paramno>256\relax | ||
| 7254 | \ifx\eTeXversion\thisisundefined | ||
| 7255 | \errhelp = \EMsimple | ||
| 7256 | \errmessage{You need eTeX to compile a file with macros with more than 256 arguments} | ||
| 7257 | \fi | ||
| 7258 | \fi | ||
| 7253 | \fi | 7259 | \fi |
| 7254 | \if1\csname ismacro.\the\macname\endcsname | 7260 | \if1\csname ismacro.\the\macname\endcsname |
| 7255 | \message{Warning: redefining \the\macname}% | 7261 | \message{Warning: redefining \the\macname}% |
| @@ -7299,9 +7305,17 @@ end | |||
| 7299 | \def\getmacname#1 #2\relax{\macname={#1}} | 7305 | \def\getmacname#1 #2\relax{\macname={#1}} |
| 7300 | \def\getmacargs#1{\def\argl{#1}} | 7306 | \def\getmacargs#1{\def\argl{#1}} |
| 7301 | 7307 | ||
| 7308 | % For macro processing make @ a letter so that we can make Texinfo private macro names. | ||
| 7309 | \edef\texiatcatcode{\the\catcode`\@} | ||
| 7310 | \catcode `@=11\relax | ||
| 7311 | |||
| 7302 | % Parse the optional {params} list. Set up \paramno and \paramlist | 7312 | % Parse the optional {params} list. Set up \paramno and \paramlist |
| 7303 | % so \defmacro knows what to do. Define \macarg.blah for each blah | 7313 | % so \defmacro knows what to do. Define \macarg.BLAH for each BLAH |
| 7304 | % in the params list to be ##N where N is the position in that list. | 7314 | % in the params list to some hook where the argument si to be expanded. If |
| 7315 | % there are less than 10 arguments that hook is to be replaced by ##N where N | ||
| 7316 | % is the position in that list, that is to say the macro arguments are to be | ||
| 7317 | % defined `a la TeX in the macro body. | ||
| 7318 | % | ||
| 7305 | % That gets used by \mbodybackslash (above). | 7319 | % That gets used by \mbodybackslash (above). |
| 7306 | % | 7320 | % |
| 7307 | % We need to get `macro parameter char #' into several definitions. | 7321 | % We need to get `macro parameter char #' into several definitions. |
| @@ -7311,12 +7325,33 @@ end | |||
| 7311 | % | 7325 | % |
| 7312 | % The same technique is used to protect \eatspaces till just before | 7326 | % The same technique is used to protect \eatspaces till just before |
| 7313 | % the macro is used. | 7327 | % the macro is used. |
| 7314 | 7328 | % | |
| 7329 | % If there are 10 or more arguments, a different technique is used, where the | ||
| 7330 | % hook remains in the body, and when macro is to be expanded the body is | ||
| 7331 | % processed again to replace the arguments. | ||
| 7332 | % | ||
| 7333 | % In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the | ||
| 7334 | % argument N value and then \edef the body (nothing else will expand because of | ||
| 7335 | % the catcode regime underwhich the body was input). | ||
| 7336 | % | ||
| 7337 | % If you compile with TeX (not eTeX), and you have macros with 10 or more | ||
| 7338 | % arguments, you need that no macro has more than 256 arguments, otherwise an | ||
| 7339 | % error is produced. | ||
| 7315 | \def\parsemargdef#1;{% | 7340 | \def\parsemargdef#1;{% |
| 7316 | \paramno=0\def\paramlist{}% | 7341 | \paramno=0\def\paramlist{}% |
| 7317 | \let\hash\relax | 7342 | \let\hash\relax |
| 7318 | \let\xeatspaces\relax | 7343 | \let\xeatspaces\relax |
| 7319 | \parsemargdefxxx#1,;,% | 7344 | \parsemargdefxxx#1,;,% |
| 7345 | % In case that there are 10 or more arguments we parse again the arguments | ||
| 7346 | % list to set new definitions for the \macarg.BLAH macros corresponding to | ||
| 7347 | % each BLAH argument. It was anyhow needed to parse already once this list | ||
| 7348 | % in order to count the arguments, and as macros with at most 9 arguments | ||
| 7349 | % are by far more frequent than macro with 10 or more arguments, defining | ||
| 7350 | % twice the \macarg.BLAH macros does not cost too much processing power. | ||
| 7351 | \ifnum\paramno<10\relax\else | ||
| 7352 | \paramno0\relax | ||
| 7353 | \parsemmanyargdef@@#1,;,% 10 or more arguments | ||
| 7354 | \fi | ||
| 7320 | } | 7355 | } |
| 7321 | \def\parsemargdefxxx#1,{% | 7356 | \def\parsemargdefxxx#1,{% |
| 7322 | \if#1;\let\next=\relax | 7357 | \if#1;\let\next=\relax |
| @@ -7327,16 +7362,205 @@ end | |||
| 7327 | \edef\paramlist{\paramlist\hash\the\paramno,}% | 7362 | \edef\paramlist{\paramlist\hash\the\paramno,}% |
| 7328 | \fi\next} | 7363 | \fi\next} |
| 7329 | 7364 | ||
| 7365 | \def\parsemmanyargdef@@#1,{% | ||
| 7366 | \if#1;\let\next=\relax | ||
| 7367 | \else | ||
| 7368 | \let\next=\parsemmanyargdef@@ | ||
| 7369 | \edef\tempb{\eatspaces{#1}}% | ||
| 7370 | \expandafter\def\expandafter\tempa | ||
| 7371 | \expandafter{\csname macarg.\tempb\endcsname}% | ||
| 7372 | % Note that we need some extra \noexpand\noexpand, this is because we | ||
| 7373 | % don't want \the to be expanded in the \parsermacbody as it uses an | ||
| 7374 | % \xdef . | ||
| 7375 | \expandafter\edef\tempa | ||
| 7376 | {\noexpand\noexpand\noexpand\the\toks\the\paramno}% | ||
| 7377 | \advance\paramno by 1\relax | ||
| 7378 | \fi\next} | ||
| 7379 | |||
| 7330 | % These two commands read recursive and nonrecursive macro bodies. | 7380 | % These two commands read recursive and nonrecursive macro bodies. |
| 7331 | % (They're different since rec and nonrec macros end differently.) | 7381 | % (They're different since rec and nonrec macros end differently.) |
| 7332 | % | 7382 | % |
| 7383 | |||
| 7384 | \catcode `\@\texiatcatcode | ||
| 7333 | \long\def\parsemacbody#1@end macro% | 7385 | \long\def\parsemacbody#1@end macro% |
| 7334 | {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% | 7386 | {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% |
| 7335 | \long\def\parsermacbody#1@end rmacro% | 7387 | \long\def\parsermacbody#1@end rmacro% |
| 7336 | {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% | 7388 | {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% |
| 7389 | \catcode `\@=11\relax | ||
| 7390 | |||
| 7391 | \let\endargs@\relax | ||
| 7392 | \let\nil@\relax | ||
| 7393 | \def\nilm@{\nil@}% | ||
| 7394 | \long\def\nillm@{\nil@}% | ||
| 7395 | |||
| 7396 | % This macro is expanded during the Texinfo macro expansion, not during its | ||
| 7397 | % definition. It gets all the arguments values and assigns them to macros | ||
| 7398 | % macarg.ARGNAME | ||
| 7399 | % | ||
| 7400 | % #1 is the macro name | ||
| 7401 | % #2 is the list of argument names | ||
| 7402 | % #3 is the list of argument values | ||
| 7403 | \def\getargvals@#1#2#3{% | ||
| 7404 | \def\macargdeflist@{}% | ||
| 7405 | \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion. | ||
| 7406 | \def\paramlist{#2,\nil@}% | ||
| 7407 | \def\macroname{#1}% | ||
| 7408 | \begingroup | ||
| 7409 | \macroargctxt | ||
| 7410 | \def\argvaluelist{#3,\nil@}% | ||
| 7411 | \def\@tempa{#3}% | ||
| 7412 | \ifx\@tempa\empty | ||
| 7413 | \setemptyargvalues@ | ||
| 7414 | \else | ||
| 7415 | \getargvals@@ | ||
| 7416 | \fi | ||
| 7417 | } | ||
| 7337 | 7418 | ||
| 7338 | % This defines the macro itself. There are six cases: recursive and | 7419 | % |
| 7339 | % nonrecursive macros of zero, one, and many arguments. | 7420 | \def\getargvals@@{% |
| 7421 | \ifx\paramlist\nilm@ | ||
| 7422 | % Some sanity check needed here that \argvaluelist is also empty. | ||
| 7423 | \ifx\argvaluelist\nillm@ | ||
| 7424 | \else | ||
| 7425 | \errhelp = \EMsimple | ||
| 7426 | \errmessage{Too many arguments in macro `\macroname'!}% | ||
| 7427 | \fi | ||
| 7428 | \let\next\macargexpandinbody@ | ||
| 7429 | \else | ||
| 7430 | \ifx\argvaluelist\nillm@ | ||
| 7431 | % No more arguments values passed to macro. Set remaining named-arg | ||
| 7432 | % macros to empty. | ||
| 7433 | \let\next\setemptyargvalues@ | ||
| 7434 | \else | ||
| 7435 | % pop current arg name into \@tempb | ||
| 7436 | \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}% | ||
| 7437 | \expandafter\@tempa\expandafter{\paramlist}% | ||
| 7438 | % pop current argument value into \@tempc | ||
| 7439 | \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}% | ||
| 7440 | \expandafter\@tempa\expandafter{\argvaluelist}% | ||
| 7441 | % Here \@tempb is the current arg name and \@tempc is the current arg value. | ||
| 7442 | % First place the new argument macro definition into \@tempd | ||
| 7443 | \expandafter\macname\expandafter{\@tempc}% | ||
| 7444 | \expandafter\let\csname macarg.\@tempb\endcsname\relax | ||
| 7445 | \expandafter\def\expandafter\@tempe\expandafter{% | ||
| 7446 | \csname macarg.\@tempb\endcsname}% | ||
| 7447 | \edef\@tempd{\long\def\@tempe{\the\macname}}% | ||
| 7448 | \push@\@tempd\macargdeflist@ | ||
| 7449 | \let\next\getargvals@@ | ||
| 7450 | \fi | ||
| 7451 | \fi | ||
| 7452 | \next | ||
| 7453 | } | ||
| 7454 | |||
| 7455 | \def\push@#1#2{% | ||
| 7456 | \expandafter\expandafter\expandafter\def | ||
| 7457 | \expandafter\expandafter\expandafter#2% | ||
| 7458 | \expandafter\expandafter\expandafter{% | ||
| 7459 | \expandafter#1#2}% | ||
| 7460 | } | ||
| 7461 | |||
| 7462 | % Replace arguments by their values in the macro body, and place the result | ||
| 7463 | % in macro \@tempa | ||
| 7464 | \def\macvalstoargs@{% | ||
| 7465 | % To do this we use the property that token registers that are \the'ed | ||
| 7466 | % within an \edef expand only once. So we are going to place all argument | ||
| 7467 | % values into respective token registers. | ||
| 7468 | % | ||
| 7469 | % First we save the token context, and initialize argument numbering. | ||
| 7470 | \begingroup | ||
| 7471 | \paramno0\relax | ||
| 7472 | % Then, for each argument number #N, we place the corresponding argument | ||
| 7473 | % value into a new token list register \toks#N | ||
| 7474 | \expandafter\putargsintokens@\saveparamlist@,;,% | ||
| 7475 | % Then, we expand the body so that argument are replaced by their | ||
| 7476 | % values. The trick for values not to be expanded themselves is that they | ||
| 7477 | % are within tokens and that tokens expand only once in an \edef . | ||
| 7478 | \edef\@tempc{\csname mac.\macroname .body\endcsname}% | ||
| 7479 | % Now we restore the token stack pointer to free the token list registers | ||
| 7480 | % which we have used, but we make sure that expanded body is saved after | ||
| 7481 | % group. | ||
| 7482 | \expandafter | ||
| 7483 | \endgroup | ||
| 7484 | \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% | ||
| 7485 | } | ||
| 7486 | |||
| 7487 | \def\macargexpandinbody@{% | ||
| 7488 | %% Define the named-macro outside of this group and then close this group. | ||
| 7489 | \expandafter | ||
| 7490 | \endgroup | ||
| 7491 | \macargdeflist@ | ||
| 7492 | % First the replace in body the macro arguments by their values, the result | ||
| 7493 | % is in \@tempa . | ||
| 7494 | \macvalstoargs@ | ||
| 7495 | % Then we point at the \norecurse or \gobble (for recursive) macro value | ||
| 7496 | % with \@tempb . | ||
| 7497 | \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname | ||
| 7498 | % Depending on whether it is recursive or not, we need some tailing | ||
| 7499 | % \egroup . | ||
| 7500 | \ifx\@tempb\gobble | ||
| 7501 | \let\@tempc\relax | ||
| 7502 | \else | ||
| 7503 | \let\@tempc\egroup | ||
| 7504 | \fi | ||
| 7505 | % And now we do the real job: | ||
| 7506 | \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}% | ||
| 7507 | \@tempd | ||
| 7508 | } | ||
| 7509 | |||
| 7510 | \def\putargsintokens@#1,{% | ||
| 7511 | \if#1;\let\next\relax | ||
| 7512 | \else | ||
| 7513 | \let\next\putargsintokens@ | ||
| 7514 | % First we allocate the new token list register, and give it a temporary | ||
| 7515 | % alias \@tempb . | ||
| 7516 | \toksdef\@tempb\the\paramno | ||
| 7517 | % Then we place the argument value into that token list register. | ||
| 7518 | \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname | ||
| 7519 | \expandafter\@tempb\expandafter{\@tempa}% | ||
| 7520 | \advance\paramno by 1\relax | ||
| 7521 | \fi | ||
| 7522 | \next | ||
| 7523 | } | ||
| 7524 | |||
| 7525 | % Save the token stack pointer into macro #1 | ||
| 7526 | \def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}} | ||
| 7527 | % Restore the token stack pointer from number in macro #1 | ||
| 7528 | \def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax} | ||
| 7529 | % newtoks that can be used non \outer . | ||
| 7530 | \def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi} | ||
| 7531 | |||
| 7532 | % Tailing missing arguments are set to empty | ||
| 7533 | \def\setemptyargvalues@{% | ||
| 7534 | \ifx\paramlist\nilm@ | ||
| 7535 | \let\next\macargexpandinbody@ | ||
| 7536 | \else | ||
| 7537 | \expandafter\setemptyargvaluesparser@\paramlist\endargs@ | ||
| 7538 | \let\next\setemptyargvalues@ | ||
| 7539 | \fi | ||
| 7540 | \next | ||
| 7541 | } | ||
| 7542 | |||
| 7543 | \def\setemptyargvaluesparser@#1,#2\endargs@{% | ||
| 7544 | \expandafter\def\expandafter\@tempa\expandafter{% | ||
| 7545 | \expandafter\def\csname macarg.#1\endcsname{}}% | ||
| 7546 | \push@\@tempa\macargdeflist@ | ||
| 7547 | \def\paramlist{#2}% | ||
| 7548 | } | ||
| 7549 | |||
| 7550 | % #1 is the element target macro | ||
| 7551 | % #2 is the list macro | ||
| 7552 | % #3,#4\endargs@ is the list value | ||
| 7553 | \def\pop@#1#2#3,#4\endargs@{% | ||
| 7554 | \def#1{#3}% | ||
| 7555 | \def#2{#4}% | ||
| 7556 | } | ||
| 7557 | \long\def\longpop@#1#2#3,#4\endargs@{% | ||
| 7558 | \long\def#1{#3}% | ||
| 7559 | \long\def#2{#4}% | ||
| 7560 | } | ||
| 7561 | |||
| 7562 | % This defines a Texinfo @macro. There are eight cases: recursive and | ||
| 7563 | % nonrecursive macros of zero, one, up to nine, and many arguments. | ||
| 7340 | % Much magic with \expandafter here. | 7564 | % Much magic with \expandafter here. |
| 7341 | % \xdef is used so that macro definitions will survive the file | 7565 | % \xdef is used so that macro definitions will survive the file |
| 7342 | % they're defined in; @include reads the file inside a group. | 7566 | % they're defined in; @include reads the file inside a group. |
| @@ -7355,17 +7579,25 @@ end | |||
| 7355 | \expandafter\noexpand\csname\the\macname xxx\endcsname}% | 7579 | \expandafter\noexpand\csname\the\macname xxx\endcsname}% |
| 7356 | \expandafter\xdef\csname\the\macname xxx\endcsname##1{% | 7580 | \expandafter\xdef\csname\the\macname xxx\endcsname##1{% |
| 7357 | \egroup\noexpand\scanmacro{\temp}}% | 7581 | \egroup\noexpand\scanmacro{\temp}}% |
| 7358 | \else % many | 7582 | \else |
| 7359 | \expandafter\xdef\csname\the\macname\endcsname{% | 7583 | \ifnum\paramno<10\relax % at most 9 |
| 7360 | \bgroup\noexpand\macroargctxt | 7584 | \expandafter\xdef\csname\the\macname\endcsname{% |
| 7361 | \noexpand\csname\the\macname xx\endcsname}% | 7585 | \bgroup\noexpand\macroargctxt |
| 7362 | \expandafter\xdef\csname\the\macname xx\endcsname##1{% | 7586 | \noexpand\csname\the\macname xx\endcsname}% |
| 7363 | \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% | 7587 | \expandafter\xdef\csname\the\macname xx\endcsname##1{% |
| 7364 | \expandafter\expandafter | 7588 | \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% |
| 7365 | \expandafter\xdef | 7589 | \expandafter\expandafter |
| 7366 | \expandafter\expandafter | 7590 | \expandafter\xdef |
| 7367 | \csname\the\macname xxx\endcsname | 7591 | \expandafter\expandafter |
| 7368 | \paramlist{\egroup\noexpand\scanmacro{\temp}}% | 7592 | \csname\the\macname xxx\endcsname |
| 7593 | \paramlist{\egroup\noexpand\scanmacro{\temp}}% | ||
| 7594 | \else % 10 or more | ||
| 7595 | \expandafter\xdef\csname\the\macname\endcsname{% | ||
| 7596 | \noexpand\getargvals@{\the\macname}{\argl}% | ||
| 7597 | }% | ||
| 7598 | \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp | ||
| 7599 | \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble | ||
| 7600 | \fi | ||
| 7369 | \fi | 7601 | \fi |
| 7370 | \else | 7602 | \else |
| 7371 | \ifcase\paramno | 7603 | \ifcase\paramno |
| @@ -7382,23 +7614,33 @@ end | |||
| 7382 | \egroup | 7614 | \egroup |
| 7383 | \noexpand\norecurse{\the\macname}% | 7615 | \noexpand\norecurse{\the\macname}% |
| 7384 | \noexpand\scanmacro{\temp}\egroup}% | 7616 | \noexpand\scanmacro{\temp}\egroup}% |
| 7385 | \else % many | 7617 | \else % at most 9 |
| 7386 | \expandafter\xdef\csname\the\macname\endcsname{% | 7618 | \ifnum\paramno<10\relax |
| 7387 | \bgroup\noexpand\macroargctxt | 7619 | \expandafter\xdef\csname\the\macname\endcsname{% |
| 7388 | \expandafter\noexpand\csname\the\macname xx\endcsname}% | 7620 | \bgroup\noexpand\macroargctxt |
| 7389 | \expandafter\xdef\csname\the\macname xx\endcsname##1{% | 7621 | \expandafter\noexpand\csname\the\macname xx\endcsname}% |
| 7390 | \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% | 7622 | \expandafter\xdef\csname\the\macname xx\endcsname##1{% |
| 7391 | \expandafter\expandafter | 7623 | \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% |
| 7392 | \expandafter\xdef | 7624 | \expandafter\expandafter |
| 7393 | \expandafter\expandafter | 7625 | \expandafter\xdef |
| 7394 | \csname\the\macname xxx\endcsname | 7626 | \expandafter\expandafter |
| 7395 | \paramlist{% | 7627 | \csname\the\macname xxx\endcsname |
| 7396 | \egroup | 7628 | \paramlist{% |
| 7397 | \noexpand\norecurse{\the\macname}% | 7629 | \egroup |
| 7398 | \noexpand\scanmacro{\temp}\egroup}% | 7630 | \noexpand\norecurse{\the\macname}% |
| 7631 | \noexpand\scanmacro{\temp}\egroup}% | ||
| 7632 | \else % 10 or more: | ||
| 7633 | \expandafter\xdef\csname\the\macname\endcsname{% | ||
| 7634 | \noexpand\getargvals@{\the\macname}{\argl}% | ||
| 7635 | }% | ||
| 7636 | \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp | ||
| 7637 | \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse | ||
| 7638 | \fi | ||
| 7399 | \fi | 7639 | \fi |
| 7400 | \fi} | 7640 | \fi} |
| 7401 | 7641 | ||
| 7642 | \catcode `\@\texiatcatcode\relax | ||
| 7643 | |||
| 7402 | \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} | 7644 | \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} |
| 7403 | 7645 | ||
| 7404 | % \braceorline decides whether the next nonwhitespace character is a | 7646 | % \braceorline decides whether the next nonwhitespace character is a |