3 |
% Load plain if necessary, i.e., if running under initex. |
% Load plain if necessary, i.e., if running under initex. |
4 |
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi |
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi |
5 |
% |
% |
6 |
\def\texinfoversion{2002-03-01.06} |
\def\texinfoversion{2002-03-26.08} |
7 |
% |
% |
8 |
% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, |
% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, |
9 |
% 2000, 01, 02 Free Software Foundation, Inc. |
% 2000, 01, 02 Free Software Foundation, Inc. |
53 |
% texindex foo.?? |
% texindex foo.?? |
54 |
% tex foo.texi |
% tex foo.texi |
55 |
% tex foo.texi |
% tex foo.texi |
56 |
% dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps. |
% dvips foo.dvi -o # or whatever; this makes foo.ps. |
57 |
% The extra TeX runs get the cross-reference information correct. |
% The extra TeX runs get the cross-reference information correct. |
58 |
% Sometimes one run after texindex suffices, and sometimes you need more |
% Sometimes one run after texindex suffices, and sometimes you need more |
59 |
% than two; texi2dvi does it as many times as necessary. |
% than two; texi2dvi does it as many times as necessary. |
846 |
% @math gets a chance to work. This could perhaps be fixed, but for now |
% @math gets a chance to work. This could perhaps be fixed, but for now |
847 |
% at least we can have real math in the main text, where it's needed most. |
% at least we can have real math in the main text, where it's needed most. |
848 |
% |
% |
|
% |
|
849 |
\let\implicitmath = $%$ font-lock fix |
\let\implicitmath = $%$ font-lock fix |
850 |
% |
% |
851 |
% One complication: _ usually means subscripts, but it could also mean |
% One complication: _ usually means subscripts, but it could also mean |
856 |
{\catcode95 = \active % 95 = _ |
{\catcode95 = \active % 95 = _ |
857 |
\gdef\mathunderscore{% |
\gdef\mathunderscore{% |
858 |
\catcode95=\active |
\catcode95=\active |
859 |
\def_{\ifnum\fam=\slfam\_\else\sb\fi}% |
\def_{\ifnum\fam=\slfam \_\else\sb\fi}% |
860 |
}} |
}} |
861 |
% |
% |
862 |
\def\math{\tex\mathcode`\_="8000\mathunderscore \implicitmath\finishmath} |
% Another complication: we want \\ (and @\) to output a \ character. |
863 |
|
% FYI, plain.tex uses \\ as a temporary control sequence (why?), but |
864 |
|
% this is not advertised and we don't care. Texinfo does not |
865 |
|
% otherwise define @\. |
866 |
|
% |
867 |
|
% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. |
868 |
|
\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} |
869 |
|
% |
870 |
|
\def\math{% |
871 |
|
\tex |
872 |
|
\mathcode`\_="8000 \mathunderscore |
873 |
|
\let\\ = \mathbackslash |
874 |
|
\implicitmath\finishmath} |
875 |
\def\finishmath#1{#1\implicitmath\Etex} |
\def\finishmath#1{#1\implicitmath\Etex} |
876 |
|
|
877 |
% @bullet and @minus need the same treatment as @math, just above. |
% @bullet and @minus need the same treatment as @math, just above. |
998 |
\let\appendixentry = \chapentry |
\let\appendixentry = \chapentry |
999 |
\def\unnumbchapentry ##1##2{} |
\def\unnumbchapentry ##1##2{} |
1000 |
\def\secentry ##1##2##3##4{\advancenumber{chap##2}} |
\def\secentry ##1##2##3##4{\advancenumber{chap##2}} |
1001 |
\def\unnumbsecentry ##1##2{} |
\def\unnumbsecentry ##1##2##3{\advancenumber{chap##2}} |
1002 |
\def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}} |
\def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}} |
1003 |
\def\unnumbsubsecentry ##1##2{} |
\def\unnumbsubsecentry ##1##2##3##4{\advancenumber{sec##2.##3}} |
1004 |
\def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}} |
\def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}} |
1005 |
\def\unnumbsubsubsecentry ##1##2{} |
\def\unnumbsubsubsecentry ##1##2##3##4##5{\advancenumber{subsec##2.##3.##4}} |
1006 |
\input \jobname.toc |
\input \jobname.toc |
1007 |
\def\chapentry ##1##2##3{% |
\def\chapentry ##1##2##3{% |
1008 |
\pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} |
\pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} |
1011 |
\pdfoutline goto name{\pdfmkpgn{##2}}{##1}} |
\pdfoutline goto name{\pdfmkpgn{##2}}{##1}} |
1012 |
\def\secentry ##1##2##3##4{% |
\def\secentry ##1##2##3##4{% |
1013 |
\pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}} |
\pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}} |
1014 |
\def\unnumbsecentry ##1##2{% |
\def\unnumbsecentry ##1##2##3{% |
1015 |
\pdfoutline goto name{\pdfmkpgn{##2}}{##1}} |
\pdfoutline goto name{\pdfmkpgn{##3}}{##1}} |
1016 |
\def\subsecentry ##1##2##3##4##5{% |
\def\subsecentry ##1##2##3##4##5{% |
1017 |
\pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}} |
\pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}} |
1018 |
\def\unnumbsubsecentry ##1##2{% |
\def\unnumbsubsecentry ##1##2##3##4{% |
1019 |
\pdfoutline goto name{\pdfmkpgn{##2}}{##1}} |
\pdfoutline goto name{\pdfmkpgn{##4}}{##1}} |
1020 |
\def\subsubsecentry ##1##2##3##4##5##6{% |
\def\subsubsecentry ##1##2##3##4##5##6{% |
1021 |
\pdfoutline goto name{\pdfmkpgn{##6}}{##1}} |
\pdfoutline goto name{\pdfmkpgn{##6}}{##1}} |
1022 |
\def\unnumbsubsubsecentry ##1##2{% |
\def\unnumbsubsubsecentry ##1##2##3##4##5{% |
1023 |
\pdfoutline goto name{\pdfmkpgn{##2}}{##1}} |
\pdfoutline goto name{\pdfmkpgn{##5}}{##1}} |
1024 |
\input \jobname.toc |
\input \jobname.toc |
1025 |
\endgroup\fi |
\endgroup\fi |
1026 |
}} |
}} |
1442 |
|
|
1443 |
\def\realdash{-} |
\def\realdash{-} |
1444 |
\def\codedash{-\discretionary{}{}{}} |
\def\codedash{-\discretionary{}{}{}} |
1445 |
\def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}} |
\def\codeunder{% |
1446 |
|
% this is all so @math{@code{var_name}+1} can work. In math mode, _ |
1447 |
|
% is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) |
1448 |
|
% will therefore expand the active definition of _, which is us |
1449 |
|
% (inside @code that is), therefore an endless loop. |
1450 |
|
\ifusingtt{\ifmmode |
1451 |
|
\mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. |
1452 |
|
\else\normalunderscore \fi |
1453 |
|
\discretionary{}{}{}}% |
1454 |
|
{\_}% |
1455 |
|
} |
1456 |
\def\codex #1{\tclose{#1}\endgroup} |
\def\codex #1{\tclose{#1}\endgroup} |
1457 |
|
|
|
%\let\exp=\tclose %Was temporary |
|
|
|
|
1458 |
% @kbd is like @code, except that if the argument is just one @key command, |
% @kbd is like @code, except that if the argument is just one @key command, |
1459 |
% then @kbd has no effect. |
% then @kbd has no effect. |
1460 |
|
|
1656 |
\global\let\contents = \relax |
\global\let\contents = \relax |
1657 |
\global\let\shortcontents = \relax |
\global\let\shortcontents = \relax |
1658 |
\fi |
\fi |
|
% |
|
|
\ifpdf \pdfmakepagedesttrue \fi |
|
1659 |
} |
} |
1660 |
|
|
1661 |
\def\finishtitlepage{% |
\def\finishtitlepage{% |
2413 |
\let\item = \relax |
\let\item = \relax |
2414 |
} |
} |
2415 |
|
|
2416 |
% Ignore @ignore ... @end ignore. |
% Ignore @ignore, @ifhtml, @ifinfo, @ifplaintext, @ifnottex, @html, @menu, |
2417 |
|
% @direntry, and @documentdescription. |
2418 |
% |
% |
2419 |
\def\ignore{\doignore{ignore}} |
\def\ignore{\doignore{ignore}} |
|
|
|
|
% Also ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, |
|
|
% @documentdescription, and @direntry text. |
|
|
% |
|
|
\def\ifinfo{\doignore{ifinfo}} |
|
2420 |
\def\ifhtml{\doignore{ifhtml}} |
\def\ifhtml{\doignore{ifhtml}} |
2421 |
|
\def\ifinfo{\doignore{ifinfo}} |
2422 |
|
\def\ifplaintext{\doignore{ifplaintext}} |
2423 |
\def\ifnottex{\doignore{ifnottex}} |
\def\ifnottex{\doignore{ifnottex}} |
2424 |
\def\html{\doignore{html}} |
\def\html{\doignore{html}} |
2425 |
\def\menu{\doignore{menu}} |
\def\menu{\doignore{menu}} |
|
\def\documentdescription{\doignore{documentdescription}} |
|
2426 |
\def\direntry{\doignore{direntry}} |
\def\direntry{\doignore{direntry}} |
2427 |
|
\def\documentdescription{\doignore{documentdescription}} |
2428 |
|
\def\documentdescriptionword{documentdescription} |
2429 |
|
|
2430 |
% @dircategory CATEGORY -- specify a category of the dir file |
% @dircategory CATEGORY -- specify a category of the dir file |
2431 |
% which this file should belong to. Ignore this in TeX. |
% which this file should belong to. Ignore this in TeX. |
2452 |
% We must not have @c interpreted as a control sequence. |
% We must not have @c interpreted as a control sequence. |
2453 |
\catcode`\@ = 12 |
\catcode`\@ = 12 |
2454 |
% |
% |
2455 |
% Make the letter c a comment character so that the rest of the line |
\def\ignoreword{#1}% |
2456 |
% will be ignored. This way, the document can have (for example) |
\ifx\ignoreword\documentdescriptionword |
2457 |
% @c @end ifinfo |
% The c kludge breaks documentdescription, since |
2458 |
% and the @end ifinfo will be properly ignored. |
% `documentdescription' contains a `c'. Means not everything will |
2459 |
% (We've just changed @ to catcode 12.) |
% be ignored inside @documentdescription, but oh well... |
2460 |
\catcode`\c = 14 |
\else |
2461 |
|
% Make the letter c a comment character so that the rest of the line |
2462 |
|
% will be ignored. This way, the document can have (for example) |
2463 |
|
% @c @end ifinfo |
2464 |
|
% and the @end ifinfo will be properly ignored. |
2465 |
|
% (We've just changed @ to catcode 12.) |
2466 |
|
\catcode`\c = 14 |
2467 |
|
\fi |
2468 |
% |
% |
2469 |
% And now expand that command. |
% And now expand the command defined above. |
2470 |
\doignoretext |
\doignoretext |
2471 |
} |
} |
2472 |
|
|
2657 |
\def\ifclearfail{\nestedignore{ifclear}} |
\def\ifclearfail{\nestedignore{ifclear}} |
2658 |
\defineunmatchedend{ifclear} |
\defineunmatchedend{ifclear} |
2659 |
|
|
2660 |
% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text |
% @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we |
2661 |
% following, through the first @end iftex (etc.). Make `@end iftex' |
% read the text following, through the first @end iftex (etc.). Make |
2662 |
% (etc.) valid only after an @iftex. |
% `@end iftex' (etc.) valid only after an @iftex. |
2663 |
% |
% |
2664 |
\def\iftex{\conditionalsucceed{iftex}} |
\def\iftex{\conditionalsucceed{iftex}} |
2665 |
\def\ifnothtml{\conditionalsucceed{ifnothtml}} |
\def\ifnothtml{\conditionalsucceed{ifnothtml}} |
2666 |
\def\ifnotinfo{\conditionalsucceed{ifnotinfo}} |
\def\ifnotinfo{\conditionalsucceed{ifnotinfo}} |
2667 |
|
\def\ifnotplaintext{\conditionalsucceed{ifnotplaintext}} |
2668 |
\defineunmatchedend{iftex} |
\defineunmatchedend{iftex} |
2669 |
\defineunmatchedend{ifnothtml} |
\defineunmatchedend{ifnothtml} |
2670 |
\defineunmatchedend{ifnotinfo} |
\defineunmatchedend{ifnotinfo} |
2671 |
|
\defineunmatchedend{ifnotplaintext} |
2672 |
|
|
2673 |
% We can't just want to start a group at @iftex (for example) and end it |
% We can't just want to start a group at @iftex (etc.) and end it at |
2674 |
% at @end iftex, since then @set commands inside the conditional have no |
% @end iftex, since then @set commands inside the conditional have no |
2675 |
% effect (they'd get reverted at the end of the group). So we must |
% effect (they'd get reverted at the end of the group). So we must |
2676 |
% define \Eiftex to redefine itself to be its previous value. (We can't |
% define \Eiftex to redefine itself to be its previous value. (We can't |
2677 |
% just define it to fail again with an ``unmatched end'' error, since |
% just define it to fail again with an ``unmatched end'' error, since |
2886 |
|
|
2887 |
% If an index command is used in an @example environment, any spaces |
% If an index command is used in an @example environment, any spaces |
2888 |
% therein should become regular spaces in the raw index file, not the |
% therein should become regular spaces in the raw index file, not the |
2889 |
% expansion of \tie (\\leavevmode \penalty \@M \ ). |
% expansion of \tie (\leavevmode \penalty \@M \ ). |
2890 |
{\obeyspaces |
{\obeyspaces |
2891 |
\gdef\unsepspaces{\obeyspaces\let =\space}} |
\gdef\unsepspaces{\obeyspaces\let =\space}} |
2892 |
|
|
3638 |
\def\unnumberedseczzz #1{% |
\def\unnumberedseczzz #1{% |
3639 |
\plainsecheading {#1}\gdef\thissection{#1}% |
\plainsecheading {#1}\gdef\thissection{#1}% |
3640 |
\toks0 = {#1}% |
\toks0 = {#1}% |
3641 |
\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}% |
\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry% |
3642 |
|
{\the\toks0}{\the\chapno}}}% |
3643 |
\temp |
\temp |
3644 |
\unnumbnoderef |
\unnumbnoderef |
3645 |
\nobreak |
\nobreak |
3678 |
\plainsubsecheading {#1}\gdef\thissection{#1}% |
\plainsubsecheading {#1}\gdef\thissection{#1}% |
3679 |
\toks0 = {#1}% |
\toks0 = {#1}% |
3680 |
\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry% |
\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry% |
3681 |
{\the\toks0}}}% |
{\the\toks0}{\the\chapno}{\the\secno}}}% |
3682 |
\temp |
\temp |
3683 |
\unnumbnoderef |
\unnumbnoderef |
3684 |
\nobreak |
\nobreak |
3719 |
\plainsubsubsecheading {#1}\gdef\thissection{#1}% |
\plainsubsubsecheading {#1}\gdef\thissection{#1}% |
3720 |
\toks0 = {#1}% |
\toks0 = {#1}% |
3721 |
\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry% |
\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry% |
3722 |
{\the\toks0}}}% |
{\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}}}% |
3723 |
\temp |
\temp |
3724 |
\unnumbnoderef |
\unnumbnoderef |
3725 |
\nobreak |
\nobreak |
3931 |
% argument, which will end up as the last argument to the \...entry macro. |
% argument, which will end up as the last argument to the \...entry macro. |
3932 |
% |
% |
3933 |
% We open the .toc file here instead of at @setfilename or any other |
% We open the .toc file here instead of at @setfilename or any other |
3934 |
% given time so that @contents can be put in the document anywhere. |
% fixed time so that @contents can be put in the document anywhere. |
3935 |
% |
% |
3936 |
\newif\iftocfileopened |
\newif\iftocfileopened |
3937 |
\def\writetocentry#1{% |
\def\writetocentry#1{% |
3940 |
\global\tocfileopenedtrue |
\global\tocfileopenedtrue |
3941 |
\fi |
\fi |
3942 |
\iflinks \write\tocfile{#1{\folio}}\fi |
\iflinks \write\tocfile{#1{\folio}}\fi |
3943 |
|
% |
3944 |
|
% Tell \shipout to create a page destination if we're doing pdf, which |
3945 |
|
% will be the target of the links in the table of contents. We can't |
3946 |
|
% just do it on every page because the title pages are numbered 1 and |
3947 |
|
% 2 (the page numbers aren't printed), and so are the first two pages |
3948 |
|
% of the document. Thus, we'd have two destinations named `1', and |
3949 |
|
% two named `2'. |
3950 |
|
\ifpdf \pdfmakepagedesttrue \fi |
3951 |
} |
} |
3952 |
|
|
3953 |
\newskip\contentsrightmargin \contentsrightmargin=1in |
\newskip\contentsrightmargin \contentsrightmargin=1in |
4012 |
\hyphenpenalty = 10000 |
\hyphenpenalty = 10000 |
4013 |
\advance\baselineskip by 1pt % Open it up a little. |
\advance\baselineskip by 1pt % Open it up a little. |
4014 |
\def\secentry ##1##2##3##4{} |
\def\secentry ##1##2##3##4{} |
4015 |
\def\unnumbsecentry ##1##2{} |
\def\unnumbsecentry ##1##2##3{} |
4016 |
\def\subsecentry ##1##2##3##4##5{} |
\def\subsecentry ##1##2##3##4##5{} |
4017 |
\def\unnumbsubsecentry ##1##2{} |
\def\unnumbsubsecentry ##1##2##3##4{} |
4018 |
\def\subsubsecentry ##1##2##3##4##5##6{} |
\def\subsubsecentry ##1##2##3##4##5##6{} |
4019 |
\def\unnumbsubsubsecentry ##1##2{} |
\def\unnumbsubsubsecentry ##1##2##3##4##5{} |
4020 |
\openin 1 \jobname.toc |
\openin 1 \jobname.toc |
4021 |
\ifeof 1 \else |
\ifeof 1 \else |
4022 |
\closein 1 |
\closein 1 |
4078 |
|
|
4079 |
% Sections. |
% Sections. |
4080 |
\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} |
\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} |
4081 |
\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}} |
\def\unnumbsecentry#1#2#3{\dosecentry{#1}{#3}} |
4082 |
|
|
4083 |
% Subsections. |
% Subsections. |
4084 |
\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}} |
\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}} |
4085 |
\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}} |
\def\unnumbsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} |
4086 |
|
|
4087 |
% And subsubsections. |
% And subsubsections. |
4088 |
\def\subsubsecentry#1#2#3#4#5#6{% |
\def\subsubsecentry#1#2#3#4#5#6{% |
4089 |
\dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} |
\dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} |
4090 |
\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}} |
\def\unnumbsubsubsecentry#1#2#3#4#5{\dosubsubsecentry{#1}{#5}} |
4091 |
|
|
4092 |
% This parameter controls the indentation of the various levels. |
% This parameter controls the indentation of the various levels. |
4093 |
\newdimen\tocindent \tocindent = 3pc |
\newdimen\tocindent \tocindent = 3pc |
4148 |
\message{environments,} |
\message{environments,} |
4149 |
% @foo ... @end foo. |
% @foo ... @end foo. |
4150 |
|
|
4151 |
|
% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. |
4152 |
|
% |
4153 |
% Since these characters are used in examples, it should be an even number of |
% Since these characters are used in examples, it should be an even number of |
4154 |
% \tt widths. Each \tt character is 1en, so two makes it 1em. |
% \tt widths. Each \tt character is 1en, so two makes it 1em. |
4155 |
% Furthermore, these definitions must come after we define our fonts. |
% |
|
\newbox\dblarrowbox \newbox\longdblarrowbox |
|
|
\newbox\pushcharbox \newbox\bullbox |
|
|
\newbox\equivbox \newbox\errorbox |
|
|
|
|
|
%{\tentt |
|
|
%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil} |
|
|
%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil} |
|
|
%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil} |
|
|
%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil} |
|
|
% Adapted from the manmac format (p.420 of TeXbook) |
|
|
%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex |
|
|
% depth .1ex\hfil} |
|
|
%} |
|
|
|
|
|
% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. |
|
4156 |
\def\point{$\star$} |
\def\point{$\star$} |
4157 |
\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} |
\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} |
4158 |
\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} |
\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} |
4159 |
\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} |
\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} |
4160 |
\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} |
\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} |
4161 |
|
|
4162 |
|
% The @error{} command. |
4163 |
% Adapted from the TeXbook's \boxit. |
% Adapted from the TeXbook's \boxit. |
4164 |
|
% |
4165 |
|
\newbox\errorbox |
4166 |
|
% |
4167 |
{\tentt \global\dimen0 = 3em}% Width of the box. |
{\tentt \global\dimen0 = 3em}% Width of the box. |
4168 |
\dimen2 = .55pt % Thickness of rules |
\dimen2 = .55pt % Thickness of rules |
4169 |
% The text. (`r' is open on the right, `e' somewhat less so on the left.) |
% The text. (`r' is open on the right, `e' somewhat less so on the left.) |
4170 |
\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt} |
\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt} |
4171 |
|
% |
4172 |
\global\setbox\errorbox=\hbox to \dimen0{\hfil |
\global\setbox\errorbox=\hbox to \dimen0{\hfil |
4173 |
\hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. |
\hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. |
4174 |
\advance\hsize by -2\dimen2 % Rules. |
\advance\hsize by -2\dimen2 % Rules. |
4179 |
\kern3pt\vrule width\dimen2}% Space to right. |
\kern3pt\vrule width\dimen2}% Space to right. |
4180 |
\hrule height\dimen2} |
\hrule height\dimen2} |
4181 |
\hfil} |
\hfil} |
4182 |
|
% |
|
% The @error{} command. |
|
4183 |
\def\error{\leavevmode\lower.7ex\copy\errorbox} |
\def\error{\leavevmode\lower.7ex\copy\errorbox} |
4184 |
|
|
4185 |
% @tex ... @end tex escapes into raw Tex temporarily. |
% @tex ... @end tex escapes into raw Tex temporarily. |
4219 |
\def\@{@}% |
\def\@{@}% |
4220 |
\let\Etex=\endgroup} |
\let\Etex=\endgroup} |
4221 |
|
|
4222 |
% Define @lisp ... @endlisp. |
% Define @lisp ... @end lisp. |
4223 |
% @lisp does a \begingroup so it can rebind things, |
% @lisp does a \begingroup so it can rebind things, |
4224 |
% including the definition of @endlisp (which normally is erroneous). |
% including the definition of @end lisp (which normally is erroneous). |
4225 |
|
|
4226 |
% Amount to narrow the margins by for @lisp. |
% Amount to narrow the margins by for @lisp. |
4227 |
\newskip\lispnarrowing \lispnarrowing=0.4in |
\newskip\lispnarrowing \lispnarrowing=0.4in |
4619 |
\endgroup\nonfillfinish\endgroup |
\endgroup\nonfillfinish\endgroup |
4620 |
} |
} |
4621 |
|
|
4622 |
|
% @copying ... @end copying. |
4623 |
|
% Save the text away for @insertcopying later. |
4624 |
|
% |
4625 |
|
\newbox\copyingbox |
4626 |
|
% |
4627 |
|
\def\copying{\begingroup |
4628 |
|
\parindent = 0pt % looks wrong on title page |
4629 |
|
\def\Ecopying{\egroup\endgroup}% |
4630 |
|
\global\setbox\copyingbox = \vbox\bgroup |
4631 |
|
} |
4632 |
|
|
4633 |
|
% @insertcopying. |
4634 |
|
% |
4635 |
|
\def\insertcopying{\unvcopy\copyingbox} |
4636 |
|
|
4637 |
|
|
4638 |
\message{defuns,} |
\message{defuns,} |
4639 |
% @defun etc. |
% @defun etc. |
5312 |
\message{Warning: redefining \the\macname}% |
\message{Warning: redefining \the\macname}% |
5313 |
\else |
\else |
5314 |
\expandafter\ifx\csname \the\macname\endcsname \relax |
\expandafter\ifx\csname \the\macname\endcsname \relax |
5315 |
\else \errmessage{The name \the\macname\space is reserved}\fi |
\else \errmessage{Macro name \the\macname\space already defined}\fi |
5316 |
\global\cslet{macsave.\the\macname}{\the\macname}% |
\global\cslet{macsave.\the\macname}{\the\macname}% |
5317 |
\global\expandafter\let\csname ismacro.\the\macname\endcsname=1% |
\global\expandafter\let\csname ismacro.\the\macname\endcsname=1% |
5318 |
% Add the macroname to \macrolist |
% Add the macroname to \macrolist |