version 1.1.1.1, 2025/01/19 02:04:04
|
version 1.5, 2025/05/13 20:03:53
|
Line 3
|
Line 3
|
% Load plain if necessary, i.e., if running under initex. |
% Load plain if necessary, i.e., if running under initex. |
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi |
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi |
% |
% |
\def\texinfoversion{2021-04-25.21} |
\def\texinfoversion{2020-02-11.09} |
% |
% |
% Copyright 1985, 1986, 1988, 1990-2021 Free Software Foundation, Inc. |
% Copyright 1985, 1986, 1988, 1990-2019 Free Software Foundation, Inc. |
% |
% |
% This texinfo.tex file is free software: you can redistribute it and/or |
% This texinfo.tex file is free software: you can redistribute it and/or |
% modify it under the terms of the GNU General Public License as |
% modify it under the terms of the GNU General Public License as |
Line 33
|
Line 33
|
% The texinfo.tex in any given distribution could well be out |
% The texinfo.tex in any given distribution could well be out |
% of date, so if that's what you're using, please check. |
% of date, so if that's what you're using, please check. |
% |
% |
% Send bug reports to bug-texinfo@gnu.org. Please include a |
% Send bug reports to bug-texinfo@gnu.org. Please include including a |
% complete document in each bug report with which we can reproduce the |
% complete document in each bug report with which we can reproduce the |
% problem. Patches are, of course, greatly appreciated. |
% problem. Patches are, of course, greatly appreciated. |
% |
% |
Line 349
|
Line 349
|
\ifodd\pageno \advance\hoffset by \bindingoffset |
\ifodd\pageno \advance\hoffset by \bindingoffset |
\else \advance\hoffset by -\bindingoffset\fi |
\else \advance\hoffset by -\bindingoffset\fi |
% |
% |
\checkchapterpage |
|
% |
|
% Retrieve the information for the headings from the marks in the page, |
% Retrieve the information for the headings from the marks in the page, |
% and call Plain TeX's \makeheadline and \makefootline, which use the |
% and call Plain TeX's \makeheadline and \makefootline, which use the |
% values in \headline and \footline. |
% values in \headline and \footline. |
% |
% |
|
% This is used to check if we are on the first page of a chapter. |
|
\ifcase1\the\savedtopmark\fi |
|
\let\prevchaptername\thischaptername |
|
\ifcase0\firstmark\fi |
|
\let\curchaptername\thischaptername |
|
% |
|
\ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi |
|
% |
|
\ifx\curchaptername\prevchaptername |
|
\let\thischapterheading\thischapter |
|
\else |
|
% \thischapterheading is the same as \thischapter except it is blank |
|
% for the first page of a chapter. This is to prevent the chapter name |
|
% being shown twice. |
|
\def\thischapterheading{}% |
|
\fi |
|
% |
% Common context changes for both heading and footing. |
% Common context changes for both heading and footing. |
% Do this outside of the \shipout so @code etc. will be expanded in |
% Do this outside of the \shipout so @code etc. will be expanded in |
% the headline as they should be, not taken literally (outputting ''code). |
% the headline as they should be, not taken literally (outputting ''code). |
\def\commonheadfootline{\let\hsize=\txipagewidth \texinfochars} |
\def\commonheadfootline{\let\hsize=\txipagewidth \texinfochars} |
% |
% |
\ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi |
|
\global\setbox\headlinebox = \vbox{\commonheadfootline \makeheadline}% |
\global\setbox\headlinebox = \vbox{\commonheadfootline \makeheadline}% |
|
% |
\ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi |
\ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi |
\global\setbox\footlinebox = \vbox{\commonheadfootline \makefootline}% |
\global\setbox\footlinebox = \vbox{\commonheadfootline \makefootline}% |
% |
% |
Line 408
|
Line 423
|
\ifr@ggedbottom \kern-\dimen@ \vfil \fi} |
\ifr@ggedbottom \kern-\dimen@ \vfil \fi} |
} |
} |
|
|
% Check if we are on the first page of a chapter. Used for printing headings. |
|
\newif\ifchapterpage |
|
\def\checkchapterpage{% |
|
% Get the chapter that was current at the end of the last page |
|
\ifcase1\the\savedtopmark\fi |
|
\let\prevchaptername\thischaptername |
|
% |
|
\ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi |
|
\let\curchaptername\thischaptername |
|
% |
|
\ifx\curchaptername\prevchaptername |
|
\chapterpagefalse |
|
\else |
|
\chapterpagetrue |
|
\fi |
|
} |
|
|
|
% Argument parsing |
% Argument parsing |
|
|
Line 572
|
Line 571
|
\fi |
\fi |
} |
} |
|
|
|
% @end foo executes the definition of \Efoo. |
% @end foo calls \checkenv and executes the definition of \Efoo. |
% But first, it executes a specialized version of \checkenv |
|
% |
\parseargdef\end{% |
\parseargdef\end{% |
\if 1\csname iscond.#1\endcsname |
\if 1\csname iscond.#1\endcsname |
\else |
\else |
Line 1002 where each line of input produces a line
|
Line 1002 where each line of input produces a line
|
\global\everypar = {}% |
\global\everypar = {}% |
} |
} |
|
|
% leave vertical mode without cancelling any first paragraph indent |
|
\gdef\imageindent{% |
|
\toks0=\everypar |
|
\everypar={}% |
|
\ptexnoindent |
|
\global\everypar=\toks0 |
|
} |
|
|
|
|
|
% @refill is a no-op. |
% @refill is a no-op. |
\let\refill=\relax |
\let\refill=\relax |
Line 1018 where each line of input produces a line
|
Line 1010 where each line of input produces a line
|
\let\setfilename=\comment |
\let\setfilename=\comment |
|
|
% @bye. |
% @bye. |
\outer\def\bye{\chappager\pagelabels\tracingstats=1\ptexend} |
\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} |
|
|
|
|
\message{pdf,} |
\message{pdf,} |
Line 1145 where each line of input produces a line
|
Line 1137 where each line of input produces a line
|
\fi |
\fi |
|
|
|
|
% Output page labels information. |
|
% See PDF reference v.1.7 p.594, section 8.3.1. |
|
\ifpdf |
|
\def\pagelabels{% |
|
\def\title{0 << /P (T-) /S /D >>}% |
|
\edef\roman{\the\romancount << /S /r >>}% |
|
\edef\arabic{\the\arabiccount << /S /D >>}% |
|
% |
|
% Page label ranges must be increasing. Remove any duplicates. |
|
% (There is a slight chance of this being wrong if e.g. there is |
|
% a @contents but no @titlepage, etc.) |
|
% |
|
\ifnum\romancount=0 \def\roman{}\fi |
|
\ifnum\arabiccount=0 \def\title{}% |
|
\else |
|
\ifnum\romancount=\arabiccount \def\roman{}\fi |
|
\fi |
|
% |
|
\ifnum\romancount<\arabiccount |
|
\pdfcatalog{/PageLabels << /Nums [\title \roman \arabic ] >> }\relax |
|
\else |
|
\pdfcatalog{/PageLabels << /Nums [\title \arabic \roman ] >> }\relax |
|
\fi |
|
} |
|
\else |
|
\let\pagelabels\relax |
|
\fi |
|
|
|
\newcount\pagecount \pagecount=0 |
|
\newcount\romancount \romancount=0 |
|
\newcount\arabiccount \arabiccount=0 |
|
\ifpdf |
|
\let\ptxadvancepageno\advancepageno |
|
\def\advancepageno{% |
|
\ptxadvancepageno\global\advance\pagecount by 1 |
|
} |
|
\fi |
|
|
|
|
|
% PDF uses PostScript string constants for the names of xref targets, |
% PDF uses PostScript string constants for the names of xref targets, |
% for display in the outlines, and in other places. Thus, we have to |
% for display in the outlines, and in other places. Thus, we have to |
% double any backslashes. Otherwise, a name like "\node" will be |
% double any backslashes. Otherwise, a name like "\node" will be |
Line 1474 output) for that.)}
|
Line 1427 output) for that.)}
|
% subentries, which we calculated on our first read of the .toc above. |
% subentries, which we calculated on our first read of the .toc above. |
% |
% |
% We use the node names as the destinations. |
% We use the node names as the destinations. |
% |
|
% Currently we prefix the section name with the section number |
|
% for chapter and appendix headings only in order to avoid too much |
|
% horizontal space being required in the PDF viewer. |
|
\def\numchapentry##1##2##3##4{% |
\def\numchapentry##1##2##3##4{% |
\dopdfoutline{##2 ##1}{count-\expnumber{chap##2}}{##3}{##4}}% |
|
\def\unnchapentry##1##2##3##4{% |
|
\dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% |
\dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% |
\def\numsecentry##1##2##3##4{% |
\def\numsecentry##1##2##3##4{% |
\dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% |
\dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% |
Line 1722 output) for that.)}
|
Line 1669 output) for that.)}
|
% Therefore, we read toc only once. |
% Therefore, we read toc only once. |
% |
% |
% We use node names as destinations. |
% We use node names as destinations. |
% |
|
% Currently we prefix the section name with the section number |
|
% for chapter and appendix headings only in order to avoid too much |
|
% horizontal space being required in the PDF viewer. |
|
\def\partentry##1##2##3##4{}% ignore parts in the outlines |
\def\partentry##1##2##3##4{}% ignore parts in the outlines |
\def\numchapentry##1##2##3##4{% |
\def\numchapentry##1##2##3##4{% |
\dopdfoutline{##2 ##1}{1}{##3}{##4}}% |
\dopdfoutline{##1}{1}{##3}{##4}}% |
\def\numsecentry##1##2##3##4{% |
\def\numsecentry##1##2##3##4{% |
\dopdfoutline{##1}{2}{##3}{##4}}% |
\dopdfoutline{##1}{2}{##3}{##4}}% |
\def\numsubsecentry##1##2##3##4{% |
\def\numsubsecentry##1##2##3##4{% |
Line 1740 output) for that.)}
|
Line 1683 output) for that.)}
|
\let\appsecentry\numsecentry% |
\let\appsecentry\numsecentry% |
\let\appsubsecentry\numsubsecentry% |
\let\appsubsecentry\numsubsecentry% |
\let\appsubsubsecentry\numsubsubsecentry% |
\let\appsubsubsecentry\numsubsubsecentry% |
\def\unnchapentry##1##2##3##4{% |
\let\unnchapentry\numchapentry% |
\dopdfoutline{##1}{1}{##3}{##4}}% |
|
\let\unnsecentry\numsecentry% |
\let\unnsecentry\numsecentry% |
\let\unnsubsecentry\numsubsecentry% |
\let\unnsubsecentry\numsubsecentry% |
\let\unnsubsubsecentry\numsubsubsecentry% |
\let\unnsubsubsecentry\numsubsubsecentry% |
Line 1870 output) for that.)}
|
Line 1812 output) for that.)}
|
\closein 1 |
\closein 1 |
\endgroup |
\endgroup |
% |
% |
% Putting an \hbox around the image can prevent an over-long line |
\def\xetexpdfext{pdf}% |
% after the image. |
\ifx\xeteximgext\xetexpdfext |
\hbox\bgroup |
\XeTeXpdffile "#1".\xeteximgext "" |
\def\xetexpdfext{pdf}% |
\else |
|
\def\xetexpdfext{PDF}% |
\ifx\xeteximgext\xetexpdfext |
\ifx\xeteximgext\xetexpdfext |
\XeTeXpdffile "#1".\xeteximgext "" |
\XeTeXpdffile "#1".\xeteximgext "" |
\else |
\else |
\def\xetexpdfext{PDF}% |
\XeTeXpicfile "#1".\xeteximgext "" |
\ifx\xeteximgext\xetexpdfext |
|
\XeTeXpdffile "#1".\xeteximgext "" |
|
\else |
|
\XeTeXpicfile "#1".\xeteximgext "" |
|
\fi |
|
\fi |
\fi |
\ifdim \wd0 >0pt width \xeteximagewidth \fi |
\fi |
\ifdim \wd2 >0pt height \xeteximageheight \fi \relax |
\ifdim \wd0 >0pt width \xeteximagewidth \fi |
\egroup |
\ifdim \wd2 >0pt height \xeteximageheight \fi \relax |
} |
} |
\fi |
\fi |
|
|
Line 2558 end
|
Line 2496 end
|
\def\it{\fam=\itfam \setfontstyle{it}} |
\def\it{\fam=\itfam \setfontstyle{it}} |
\def\sl{\fam=\slfam \setfontstyle{sl}} |
\def\sl{\fam=\slfam \setfontstyle{sl}} |
\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} |
\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} |
\def\tt{\fam=\ttfam \setfontstyle{tt}}\def\ttstylename{tt} |
\def\tt{\fam=\ttfam \setfontstyle{tt}} |
|
|
% Texinfo sort of supports the sans serif font style, which plain TeX does not. |
% Texinfo sort of supports the sans serif font style, which plain TeX does not. |
% So we set up a \sf. |
% So we set up a \sf. |
Line 2684 end
|
Line 2622 end
|
\definetextfontsizexi |
\definetextfontsizexi |
|
|
|
|
|
\message{markup,} |
|
|
% Check if we are currently using a typewriter font. Since all the |
% Check if we are currently using a typewriter font. Since all the |
% Computer Modern typewriter fonts have zero interword stretch (and |
% Computer Modern typewriter fonts have zero interword stretch (and |
% shrink), and it is reasonable to expect all typewriter fonts to have |
% shrink), and it is reasonable to expect all typewriter fonts to have |
Line 2691 end
|
Line 2631 end
|
% |
% |
\def\ifmonospace{\ifdim\fontdimen3\font=0pt } |
\def\ifmonospace{\ifdim\fontdimen3\font=0pt } |
|
|
|
% Markup style infrastructure. \defmarkupstylesetup\INITMACRO will |
|
% define and register \INITMACRO to be called on markup style changes. |
|
% \INITMACRO can check \currentmarkupstyle for the innermost |
|
% style. |
|
|
|
\let\currentmarkupstyle\empty |
|
|
|
\def\setupmarkupstyle#1{% |
|
\def\currentmarkupstyle{#1}% |
|
\markupstylesetup |
|
} |
|
|
|
\let\markupstylesetup\empty |
|
|
|
\def\defmarkupstylesetup#1{% |
|
\expandafter\def\expandafter\markupstylesetup |
|
\expandafter{\markupstylesetup #1}% |
|
\def#1% |
|
} |
|
|
|
% Markup style setup for left and right quotes. |
|
\defmarkupstylesetup\markupsetuplq{% |
|
\expandafter\let\expandafter \temp |
|
\csname markupsetuplq\currentmarkupstyle\endcsname |
|
\ifx\temp\relax \markupsetuplqdefault \else \temp \fi |
|
} |
|
|
|
\defmarkupstylesetup\markupsetuprq{% |
|
\expandafter\let\expandafter \temp |
|
\csname markupsetuprq\currentmarkupstyle\endcsname |
|
\ifx\temp\relax \markupsetuprqdefault \else \temp \fi |
|
} |
|
|
{ |
{ |
\catcode`\'=\active |
\catcode`\'=\active |
\catcode`\`=\active |
\catcode`\`=\active |
|
|
\gdef\setcodequotes{\let`\codequoteleft \let'\codequoteright} |
\gdef\markupsetuplqdefault{\let`\lq} |
\gdef\setregularquotes{\let`\lq \let'\rq} |
\gdef\markupsetuprqdefault{\let'\rq} |
|
|
|
\gdef\markupsetcodequoteleft{\let`\codequoteleft} |
|
\gdef\markupsetcodequoteright{\let'\codequoteright} |
} |
} |
|
|
|
\let\markupsetuplqcode \markupsetcodequoteleft |
|
\let\markupsetuprqcode \markupsetcodequoteright |
|
% |
|
\let\markupsetuplqexample \markupsetcodequoteleft |
|
\let\markupsetuprqexample \markupsetcodequoteright |
|
% |
|
\let\markupsetuplqkbd \markupsetcodequoteleft |
|
\let\markupsetuprqkbd \markupsetcodequoteright |
|
% |
|
\let\markupsetuplqsamp \markupsetcodequoteleft |
|
\let\markupsetuprqsamp \markupsetcodequoteright |
|
% |
|
\let\markupsetuplqverb \markupsetcodequoteleft |
|
\let\markupsetuprqverb \markupsetcodequoteright |
|
% |
|
\let\markupsetuplqverbatim \markupsetcodequoteleft |
|
\let\markupsetuprqverbatim \markupsetcodequoteright |
|
|
% Allow an option to not use regular directed right quote/apostrophe |
% Allow an option to not use regular directed right quote/apostrophe |
% (char 0x27), but instead the undirected quote from cmtt (char 0x0d). |
% (char 0x27), but instead the undirected quote from cmtt (char 0x0d). |
% The undirected quote is ugly, so don't make it the default, but it |
% The undirected quote is ugly, so don't make it the default, but it |
Line 2861 end
|
Line 2855 end
|
} |
} |
|
|
% @samp. |
% @samp. |
\def\samp#1{{\setcodequotes\lq\tclose{#1}\rq\null}} |
\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} |
|
|
% @indicateurl is \samp, that is, with quotes. |
% @indicateurl is \samp, that is, with quotes. |
\let\indicateurl=\samp |
\let\indicateurl=\samp |
Line 2904 end
|
Line 2898 end
|
\global\let'=\rq \global\let`=\lq % default definitions |
\global\let'=\rq \global\let`=\lq % default definitions |
% |
% |
\global\def\code{\begingroup |
\global\def\code{\begingroup |
\setcodequotes |
\setupmarkupstyle{code}% |
|
% The following should really be moved into \setupmarkupstyle handlers. |
\catcode\dashChar=\active \catcode\underChar=\active |
\catcode\dashChar=\active \catcode\underChar=\active |
\ifallowcodebreaks |
\ifallowcodebreaks |
\let-\codedash |
\let-\codedash |
Line 2992 end
|
Line 2987 end
|
% arg (if given), and not the url (which is then just the link target). |
% arg (if given), and not the url (which is then just the link target). |
\newif\ifurefurlonlylink |
\newif\ifurefurlonlylink |
|
|
% The default \pretolerance setting stops the penalty inserted in |
|
% \urefallowbreak being a discouragement to line breaking. Set it to |
|
% a negative value for this paragraph only. Hopefully this does not |
|
% conflict with redefinitions of \par done elsewhere. |
|
\def\nopretolerance{% |
|
\pretolerance=-1 |
|
\def\par{\endgraf\pretolerance=100 \let\par\endgraf}% |
|
} |
|
|
|
% The main macro is \urefbreak, which allows breaking at expected |
% The main macro is \urefbreak, which allows breaking at expected |
% places within the url. |
% places within the url. (There used to be another version, which |
\def\urefbreak{\nopretolerance \begingroup \urefcatcodes \dourefbreak} |
% didn't support automatic breaking.) |
|
\def\urefbreak{\begingroup \urefcatcodes \dourefbreak} |
\let\uref=\urefbreak |
\let\uref=\urefbreak |
% |
% |
\def\dourefbreak#1{\urefbreakfinish #1,,,\finish} |
\def\dourefbreak#1{\urefbreakfinish #1,,,\finish} |
Line 3058 end
|
Line 3045 end
|
\urefcatcodes |
\urefcatcodes |
% |
% |
\global\def\urefcode{\begingroup |
\global\def\urefcode{\begingroup |
\setcodequotes |
\setupmarkupstyle{code}% |
\urefcatcodes |
\urefcatcodes |
\let&\urefcodeamp |
\let&\urefcodeamp |
\let.\urefcodedot |
\let.\urefcodedot |
Line 3114 end
|
Line 3101 end
|
|
|
% Allow a ragged right output to aid breaking long URL's. There can |
% Allow a ragged right output to aid breaking long URL's. There can |
% be a break at the \allowbreak with no extra glue (if the existing stretch in |
% be a break at the \allowbreak with no extra glue (if the existing stretch in |
% the line is sufficient), a break at the \penalty with extra glue added |
% the line is sufficent), a break at the \penalty100 with extra glue added |
% at the end of the line, or no break at all here. |
% at the end of the line, or no break at all here. |
% Changing the value of the penalty and/or the amount of stretch affects how |
% Changing the value of the penalty and/or the amount of stretch affects how |
% preferable one choice is over the other. |
% preferrable one choice is over the other. |
\def\urefallowbreak{% |
\def\urefallowbreak{% |
\penalty0\relax |
\allowbreak |
\hskip 0pt plus 2 em\relax |
\hskip 0pt plus 2 em\relax |
\penalty1000\relax |
\penalty300 |
\hskip 0pt plus -2 em\relax |
\hskip 0pt plus -2 em\relax |
} |
} |
|
|
Line 3179 end
|
Line 3166 end
|
\def\kbdsub#1#2#3\par{% |
\def\kbdsub#1#2#3\par{% |
\def\one{#1}\def\three{#3}\def\threex{??}% |
\def\one{#1}\def\three{#3}\def\threex{??}% |
\ifx\one\xkey\ifx\threex\three \key{#2}% |
\ifx\one\xkey\ifx\threex\three \key{#2}% |
\else{\tclose{\kbdfont\setcodequotes\look}}\fi |
\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi |
\else{\tclose{\kbdfont\setcodequotes\look}}\fi |
\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi |
} |
} |
|
|
% definition of @key that produces a lozenge. Doesn't adjust to text size. |
% definition of @key that produces a lozenge. Doesn't adjust to text size. |
Line 3197 end
|
Line 3184 end
|
% monospace, don't change it; that way, we respect @kbdinputstyle. But |
% monospace, don't change it; that way, we respect @kbdinputstyle. But |
% if it isn't monospace, then use \tt. |
% if it isn't monospace, then use \tt. |
% |
% |
\def\key#1{{\setregularquotes |
\def\key#1{{\setupmarkupstyle{key}% |
\nohyphenation |
\nohyphenation |
\ifmonospace\else\tt\fi |
\ifmonospace\else\tt\fi |
#1}\null} |
#1}\null} |
Line 3318 end
|
Line 3305 end
|
\def\sup{\ifmmode \expandafter\ptexsp \else \expandafter\finishsup\fi} |
\def\sup{\ifmmode \expandafter\ptexsp \else \expandafter\finishsup\fi} |
\def\finishsup#1{$\ptexsp{\hbox{\switchtolllsize #1}}$}% |
\def\finishsup#1{$\ptexsp{\hbox{\switchtolllsize #1}}$}% |
|
|
% provide this command from LaTeX as it is very common |
|
\def\frac#1#2{{{#1}\over{#2}}} |
|
|
|
% @displaymath. |
|
% \globaldefs is needed to recognize the end lines in \tex and |
|
% \end tex. Set \thisenv as @end displaymath is seen before @end tex. |
|
{\obeylines |
|
\globaldefs=1 |
|
\envdef\displaymath{% |
|
\tex% |
|
\def\thisenv{\displaymath}% |
|
\begingroup\let\end\displaymathend% |
|
$$% |
|
} |
|
|
|
\def\displaymathend{$$\endgroup\end}% |
|
|
|
\def\Edisplaymath{% |
|
\def\thisenv{\tex}% |
|
\end tex |
|
}} |
|
|
|
|
|
% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. |
% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. |
% Ignore unless FMTNAME == tex; then it is like @iftex and @tex, |
% Ignore unless FMTNAME == tex; then it is like @iftex and @tex, |
% except specified as a normal braced arg, so no newlines to worry about. |
% except specified as a normal braced arg, so no newlines to worry about. |
Line 3545 $$%
|
Line 3509 $$%
|
|
|
% @pounds{} is a sterling sign, which Knuth put in the CM italic font. |
% @pounds{} is a sterling sign, which Knuth put in the CM italic font. |
% |
% |
\def\pounds{\ifmonospace{\ecfont\char"BF}\else{\it\$}\fi} |
\def\pounds{{\it\$}} |
|
|
% @euro{} comes from a separate font, depending on the current style. |
% @euro{} comes from a separate font, depending on the current style. |
% We use the free feym* fonts from the eurosym package by Henrik |
% We use the free feym* fonts from the eurosym package by Henrik |
Line 3694 $$%
|
Line 3658 $$%
|
\fi |
\fi |
|
|
% Quotes. |
% Quotes. |
|
\chardef\quotedblleft="5C |
|
\chardef\quotedblright=`\" |
\chardef\quoteleft=`\` |
\chardef\quoteleft=`\` |
\chardef\quoteright=`\' |
\chardef\quoteright=`\' |
|
|
% only change font for tt for correct kerning and to avoid using |
|
% \ecfont unless necessary. |
|
\def\quotedblleft{% |
|
\ifmonospace{\ecfont\char"10}\else{\char"5C}\fi |
|
} |
|
|
|
\def\quotedblright{% |
|
\ifmonospace{\ecfont\char"11}\else{\char`\"}\fi |
|
} |
|
|
|
|
|
\message{page headings,} |
\message{page headings,} |
|
|
Line 3828 $$%
|
Line 3784 $$%
|
|
|
\newtoks\evenheadline % headline on even pages |
\newtoks\evenheadline % headline on even pages |
\newtoks\oddheadline % headline on odd pages |
\newtoks\oddheadline % headline on odd pages |
\newtoks\evenchapheadline% headline on even pages with a new chapter |
|
\newtoks\oddchapheadline % headline on odd pages with a new chapter |
|
\newtoks\evenfootline % footline on even pages |
\newtoks\evenfootline % footline on even pages |
\newtoks\oddfootline % footline on odd pages |
\newtoks\oddfootline % footline on odd pages |
|
|
% Now make \makeheadline and \makefootline in Plain TeX use those variables |
% Now make \makeheadline and \makefootline in Plain TeX use those variables |
\headline={{\textfonts\rm |
\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline |
\ifchapterpage |
\else \the\evenheadline \fi}} |
\ifodd\pageno\the\oddchapheadline\else\the\evenchapheadline\fi |
|
\else |
|
\ifodd\pageno\the\oddheadline\else\the\evenheadline\fi |
|
\fi}} |
|
|
|
\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline |
\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline |
\else \the\evenfootline \fi}\HEADINGShook} |
\else \the\evenfootline \fi}\HEADINGShook} |
\let\HEADINGShook=\relax |
\let\HEADINGShook=\relax |
Line 3856 $$%
|
Line 3805 $$%
|
\def\evenheading{\parsearg\evenheadingxxx} |
\def\evenheading{\parsearg\evenheadingxxx} |
\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} |
\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} |
\def\evenheadingyyy #1\|#2\|#3\|#4\finish{% |
\def\evenheadingyyy #1\|#2\|#3\|#4\finish{% |
\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}} |
\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} |
\global\evenchapheadline=\evenheadline} |
|
|
|
\def\oddheading{\parsearg\oddheadingxxx} |
\def\oddheading{\parsearg\oddheadingxxx} |
\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} |
\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} |
\def\oddheadingyyy #1\|#2\|#3\|#4\finish{% |
\def\oddheadingyyy #1\|#2\|#3\|#4\finish{% |
\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}% |
\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} |
\global\oddchapheadline=\oddheadline} |
|
|
|
\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% |
\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% |
|
|
Line 3930 $$%
|
Line 3877 $$%
|
\parseargdef\headings{\csname HEADINGS#1\endcsname} |
\parseargdef\headings{\csname HEADINGS#1\endcsname} |
|
|
\def\headingsoff{% non-global headings elimination |
\def\headingsoff{% non-global headings elimination |
\evenheadline={\hfil}\evenfootline={\hfil}\evenchapheadline={\hfil}% |
\evenheadline={\hfil}\evenfootline={\hfil}% |
\oddheadline={\hfil}\oddfootline={\hfil}\oddchapheadline={\hfil}% |
\oddheadline={\hfil}\oddfootline={\hfil}% |
} |
} |
|
|
\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting |
\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting |
\HEADINGSoff % it's the default |
\HEADINGSoff % it's the default |
|
|
% When we turn headings on, set the page number to 1. |
% When we turn headings on, set the page number to 1. |
\def\pageone{ |
|
\global\pageno=1 |
|
\global\arabiccount = \pagecount |
|
} |
|
|
|
% For double-sided printing, put current file name in lower left corner, |
% For double-sided printing, put current file name in lower left corner, |
% chapter name on inside top of right hand pages, document |
% chapter name on inside top of right hand pages, document |
% title on inside top of left hand pages, and page numbers on outside top |
% title on inside top of left hand pages, and page numbers on outside top |
% edge of all pages. |
% edge of all pages. |
\def\HEADINGSdouble{% |
\def\HEADINGSdouble{% |
\pageone |
\global\pageno=1 |
\HEADINGSdoublex |
\global\evenfootline={\hfil} |
|
\global\oddfootline={\hfil} |
|
\global\evenheadline={\line{\folio\hfil\thistitle}} |
|
\global\oddheadline={\line{\thischapterheading\hfil\folio}} |
|
\global\let\contentsalignmacro = \chapoddpage |
} |
} |
\let\contentsalignmacro = \chappager |
\let\contentsalignmacro = \chappager |
|
|
% For single-sided printing, chapter title goes across top left of page, |
% For single-sided printing, chapter title goes across top left of page, |
% page number on top right. |
% page number on top right. |
\def\HEADINGSsingle{% |
\def\HEADINGSsingle{% |
\pageone |
\global\pageno=1 |
\HEADINGSsinglex |
\global\evenfootline={\hfil} |
|
\global\oddfootline={\hfil} |
|
\global\evenheadline={\line{\thischapterheading\hfil\folio}} |
|
\global\oddheadline={\line{\thischapterheading\hfil\folio}} |
|
\global\let\contentsalignmacro = \chappager |
} |
} |
\def\HEADINGSon{\HEADINGSdouble} |
\def\HEADINGSon{\HEADINGSdouble} |
|
|
Line 3967 $$%
|
Line 3917 $$%
|
\global\evenfootline={\hfil} |
\global\evenfootline={\hfil} |
\global\oddfootline={\hfil} |
\global\oddfootline={\hfil} |
\global\evenheadline={\line{\folio\hfil\thistitle}} |
\global\evenheadline={\line{\folio\hfil\thistitle}} |
\global\oddheadline={\line{\thischapter\hfil\folio}} |
\global\oddheadline={\line{\thischapterheading\hfil\folio}} |
\global\evenchapheadline={\line{\folio\hfil}} |
|
\global\oddchapheadline={\line{\hfil\folio}} |
|
\global\let\contentsalignmacro = \chapoddpage |
\global\let\contentsalignmacro = \chapoddpage |
} |
} |
|
|
Line 3977 $$%
|
Line 3925 $$%
|
\def\HEADINGSsinglex{% |
\def\HEADINGSsinglex{% |
\global\evenfootline={\hfil} |
\global\evenfootline={\hfil} |
\global\oddfootline={\hfil} |
\global\oddfootline={\hfil} |
\global\evenheadline={\line{\thischapter\hfil\folio}} |
\global\evenheadline={\line{\thischapterheading\hfil\folio}} |
\global\oddheadline={\line{\thischapter\hfil\folio}} |
\global\oddheadline={\line{\thischapterheading\hfil\folio}} |
\global\evenchapheadline={\line{\hfil\folio}} |
|
\global\oddchapheadline={\line{\hfil\folio}} |
|
\global\let\contentsalignmacro = \chappager |
|
} |
|
|
|
% for @setchapternewpage off |
|
\def\HEADINGSsinglechapoff{% |
|
\pageone |
|
\global\evenfootline={\hfil} |
|
\global\oddfootline={\hfil} |
|
\global\evenheadline={\line{\thischapter\hfil\folio}} |
|
\global\oddheadline={\line{\thischapter\hfil\folio}} |
|
\global\evenchapheadline=\evenheadline |
|
\global\oddchapheadline=\oddheadline |
|
\global\let\contentsalignmacro = \chappager |
\global\let\contentsalignmacro = \chappager |
} |
} |
|
|
Line 4301 $$%
|
Line 4235 $$%
|
\doitemize{#1.}\flushcr |
\doitemize{#1.}\flushcr |
} |
} |
|
|
|
% @alphaenumerate and @capsenumerate are abbreviations for giving an arg |
|
% to @enumerate. |
|
% |
|
\def\alphaenumerate{\enumerate{a}} |
|
\def\capsenumerate{\enumerate{A}} |
|
\def\Ealphaenumerate{\Eenumerate} |
|
\def\Ecapsenumerate{\Eenumerate} |
|
|
|
|
% @multitable macros |
% @multitable macros |
|
% Amy Hendrickson, 8/18/94, 3/6/96 |
|
% |
|
% @multitable ... @end multitable will make as many columns as desired. |
|
% Contents of each column will wrap at width given in preamble. Width |
|
% can be specified either with sample text given in a template line, |
|
% or in percent of \hsize, the current width of text on page. |
|
|
|
% Table can continue over pages but will only break between lines. |
|
|
|
% To make preamble: |
|
% |
|
% Either define widths of columns in terms of percent of \hsize: |
|
% @multitable @columnfractions .25 .3 .45 |
|
% @item ... |
|
% |
|
% Numbers following @columnfractions are the percent of the total |
|
% current hsize to be used for each column. You may use as many |
|
% columns as desired. |
|
|
|
|
|
% Or use a template: |
|
% @multitable {Column 1 template} {Column 2 template} {Column 3 template} |
|
% @item ... |
|
% using the widest term desired in each column. |
|
|
|
% Each new table line starts with @item, each subsequent new column |
|
% starts with @tab. Empty columns may be produced by supplying @tab's |
|
% with nothing between them for as many times as empty columns are needed, |
|
% ie, @tab@tab@tab will produce two empty columns. |
|
|
|
% @item, @tab do not need to be on their own lines, but it will not hurt |
|
% if they are. |
|
|
|
% Sample multitable: |
|
|
|
% @multitable {Column 1 template} {Column 2 template} {Column 3 template} |
|
% @item first col stuff @tab second col stuff @tab third col |
|
% @item |
|
% first col stuff |
|
% @tab |
|
% second col stuff |
|
% @tab |
|
% third col |
|
% @item first col stuff @tab second col stuff |
|
% @tab Many paragraphs of text may be used in any column. |
|
% |
|
% They will wrap at the width determined by the template. |
|
% @item@tab@tab This will be in third column. |
|
% @end multitable |
|
|
|
% Default dimensions may be reset by user. |
|
% @multitableparskip is vertical space between paragraphs in table. |
|
% @multitableparindent is paragraph indent in table. |
|
% @multitablecolmargin is horizontal space to be left between columns. |
|
% @multitablelinespace is space to leave between table items, baseline |
|
% to baseline. |
|
% 0pt means it depends on current normal line spacing. |
|
% |
|
\newskip\multitableparskip |
|
\newskip\multitableparindent |
|
\newdimen\multitablecolspace |
|
\newskip\multitablelinespace |
|
\multitableparskip=0pt |
|
\multitableparindent=6pt |
|
\multitablecolspace=12pt |
|
\multitablelinespace=0pt |
|
|
% Macros used to set up halign preamble: |
% Macros used to set up halign preamble: |
% |
% |
Line 4350 $$%
|
Line 4358 $$%
|
\go |
\go |
} |
} |
|
|
|
% multitable-only commands. |
|
% |
% @headitem starts a heading row, which we typeset in bold. Assignments |
% @headitem starts a heading row, which we typeset in bold. Assignments |
% have to be global since we are inside the implicit group of an |
% have to be global since we are inside the implicit group of an |
% alignment entry. \everycr below resets \everytab so we don't have to |
% alignment entry. \everycr below resets \everytab so we don't have to |
Line 4366 $$%
|
Line 4376 $$%
|
% default for tables with no headings. |
% default for tables with no headings. |
\let\headitemcrhook=\relax |
\let\headitemcrhook=\relax |
% |
% |
|
% A \tab used to include \hskip1sp. But then the space in a template |
|
% line is not enough. That is bad. So let's go back to just `&' until |
|
% we again encounter the problem the 1sp was intended to solve. |
|
% --karl, nathan@acm.org, 20apr99. |
\def\tab{\checkenv\multitable &\the\everytab}% |
\def\tab{\checkenv\multitable &\the\everytab}% |
|
|
|
% @multitable ... @end multitable definitions: |
|
% |
\newtoks\everytab % insert after every tab. |
\newtoks\everytab % insert after every tab. |
% |
% |
\envdef\multitable{% |
\envdef\multitable{% |
Line 4382 $$%
|
Line 4398 $$%
|
% |
% |
\tolerance=9500 |
\tolerance=9500 |
\hbadness=9500 |
\hbadness=9500 |
\parskip=0pt |
\setmultitablespacing |
\parindent=6pt |
\parskip=\multitableparskip |
|
\parindent=\multitableparindent |
\overfullrule=0pt |
\overfullrule=0pt |
\global\colcount=0 |
\global\colcount=0 |
% |
% |
Line 4413 $$%
|
Line 4430 $$%
|
% continue for many paragraphs if desired. |
% continue for many paragraphs if desired. |
\halign\bgroup &% |
\halign\bgroup &% |
\global\advance\colcount by 1 |
\global\advance\colcount by 1 |
\strut |
\multistrut |
\vtop{% |
\vtop{% |
\advance\hsize by -1\leftskip |
% Use the current \colcount to find the correct column width: |
% Find the correct column width |
|
\hsize=\expandafter\csname col\the\colcount\endcsname |
\hsize=\expandafter\csname col\the\colcount\endcsname |
% |
% |
|
% In order to keep entries from bumping into each other |
|
% we will add a \leftskip of \multitablecolspace to all columns after |
|
% the first one. |
|
% |
|
% If a template has been used, we will add \multitablecolspace |
|
% to the width of each template entry. |
|
% |
|
% If the user has set preamble in terms of percent of \hsize we will |
|
% use that dimension as the width of the column, and the \leftskip |
|
% will keep entries from bumping into each other. Table will start at |
|
% left margin and final column will justify at right margin. |
|
% |
|
% Make sure we don't inherit \rightskip from the outer environment. |
\rightskip=0pt |
\rightskip=0pt |
\ifnum\colcount=1 |
\ifnum\colcount=1 |
\advance\hsize by\leftskip % Add indent of surrounding text |
% The first column will be indented with the surrounding text. |
|
\advance\hsize by\leftskip |
\else |
\else |
% In order to keep entries from bumping into each other. |
\ifsetpercent \else |
\leftskip=12pt |
% If user has not set preamble in terms of percent of \hsize |
\ifsetpercent \else |
% we will advance \hsize by \multitablecolspace. |
% If a template has been used |
\advance\hsize by \multitablecolspace |
\advance\hsize by \leftskip |
\fi |
\fi |
% In either case we will make \leftskip=\multitablecolspace: |
|
\leftskip=\multitablecolspace |
\fi |
\fi |
\noindent\ignorespaces##\unskip\strut |
% Ignoring space at the beginning and end avoids an occasional spurious |
|
% blank line, when TeX decides to break the line at the space before the |
|
% box from the multistrut, so the strut ends up on a line by itself. |
|
% For example: |
|
% @multitable @columnfractions .11 .89 |
|
% @item @code{#} |
|
% @tab Legal holiday which is valid in major parts of the whole country. |
|
% Is automatically provided with highlighting sequences respectively |
|
% marking characters. |
|
\noindent\ignorespaces##\unskip\multistrut |
}\cr |
}\cr |
} |
} |
\def\Emultitable{% |
\def\Emultitable{% |
Line 4439 $$%
|
Line 4479 $$%
|
\global\setpercentfalse |
\global\setpercentfalse |
} |
} |
|
|
|
\def\setmultitablespacing{% |
|
\def\multistrut{\strut}% just use the standard line spacing |
|
% |
|
% Compute \multitablelinespace (if not defined by user) for use in |
|
% \multitableparskip calculation. We used define \multistrut based on |
|
% this, but (ironically) that caused the spacing to be off. |
|
% See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. |
|
\ifdim\multitablelinespace=0pt |
|
\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip |
|
\global\advance\multitablelinespace by-\ht0 |
|
\fi |
|
% Test to see if parskip is larger than space between lines of |
|
% table. If not, do nothing. |
|
% If so, set to same dimension as multitablelinespace. |
|
\ifdim\multitableparskip>\multitablelinespace |
|
\global\multitableparskip=\multitablelinespace |
|
\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller |
|
% than skip between lines in the table. |
|
\fi% |
|
\ifdim\multitableparskip=0pt |
|
\global\multitableparskip=\multitablelinespace |
|
\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller |
|
% than skip between lines in the table. |
|
\fi} |
|
|
|
|
\message{conditionals,} |
\message{conditionals,} |
|
|
Line 4776 $$%
|
Line 4841 $$%
|
|
|
% like the previous two, but they put @code around the argument. |
% like the previous two, but they put @code around the argument. |
\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} |
\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} |
\def\docodeindexxxx #1{\docind{\indexname}{#1}} |
\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}} |
|
|
|
|
% Used for the aux, toc and index files to prevent expansion of Texinfo |
% Used for the aux, toc and index files to prevent expansion of Texinfo |
Line 5073 $$%
|
Line 5138 $$%
|
\def\ss{ss}% |
\def\ss{ss}% |
\def\th{th}% |
\def\th{th}% |
% |
% |
\let\do\indexnofontsdef |
\def\LaTeX{LaTeX}% |
% |
\def\TeX{TeX}% |
\do\LaTeX{LaTeX}% |
|
\do\TeX{TeX}% |
|
% |
% |
% Assorted special characters. |
% Assorted special characters. \defglyph gives the control sequence a |
\do\atchar{@}% |
% definition that removes the {} that follows its use. |
\do\arrow{->}% |
\defglyph\atchar{@}% |
\do\bullet{bullet}% |
\defglyph\arrow{->}% |
\do\comma{,}% |
\defglyph\bullet{bullet}% |
\do\copyright{copyright}% |
\defglyph\comma{,}% |
\do\dots{...}% |
\defglyph\copyright{copyright}% |
\do\enddots{...}% |
\defglyph\dots{...}% |
\do\equiv{==}% |
\defglyph\enddots{...}% |
\do\error{error}% |
\defglyph\equiv{==}% |
\do\euro{euro}% |
\defglyph\error{error}% |
\do\expansion{==>}% |
\defglyph\euro{euro}% |
\do\geq{>=}% |
\defglyph\expansion{==>}% |
\do\guillemetleft{<<}% |
\defglyph\geq{>=}% |
\do\guillemetright{>>}% |
\defglyph\guillemetleft{<<}% |
\do\guilsinglleft{<}% |
\defglyph\guillemetright{>>}% |
\do\guilsinglright{>}% |
\defglyph\guilsinglleft{<}% |
\do\leq{<=}% |
\defglyph\guilsinglright{>}% |
\do\lbracechar{\{}% |
\defglyph\leq{<=}% |
\do\minus{-}% |
\defglyph\lbracechar{\{}% |
\do\point{.}% |
\defglyph\minus{-}% |
\do\pounds{pounds}% |
\defglyph\point{.}% |
\do\print{-|}% |
\defglyph\pounds{pounds}% |
\do\quotedblbase{"}% |
\defglyph\print{-|}% |
\do\quotedblleft{"}% |
\defglyph\quotedblbase{"}% |
\do\quotedblright{"}% |
\defglyph\quotedblleft{"}% |
\do\quoteleft{`}% |
\defglyph\quotedblright{"}% |
\do\quoteright{'}% |
\defglyph\quoteleft{`}% |
\do\quotesinglbase{,}% |
\defglyph\quoteright{'}% |
\do\rbracechar{\}}% |
\defglyph\quotesinglbase{,}% |
\do\registeredsymbol{R}% |
\defglyph\rbracechar{\}}% |
\do\result{=>}% |
\defglyph\registeredsymbol{R}% |
\do\textdegree{o}% |
\defglyph\result{=>}% |
|
\defglyph\textdegree{o}% |
% |
% |
% We need to get rid of all macros, leaving only the arguments (if present). |
% We need to get rid of all macros, leaving only the arguments (if present). |
% Of course this is not nearly correct, but it is the best we can do for now. |
% Of course this is not nearly correct, but it is the best we can do for now. |
Line 5125 $$%
|
Line 5189 $$%
|
\macrolist |
\macrolist |
\let\value\indexnofontsvalue |
\let\value\indexnofontsvalue |
} |
} |
|
\def\defglyph#1#2{\def#1##1{#2}} % see above |
% Give the control sequence a definition that removes the {} that follows |
|
% its use, e.g. @AA{} -> AA |
|
\def\indexnofontsdef#1#2{\def#1##1{#2}}% |
|
|
|
|
|
|
|
Line 5147 $$%
|
Line 5208 $$%
|
\fi |
\fi |
} |
} |
|
|
% Same as \doind, but for code indices |
|
\def\docind#1#2{% |
|
\iflinks |
|
{% |
|
% |
|
\requireopenindexfile{#1}% |
|
\edef\writeto{\csname#1indfile\endcsname}% |
|
% |
|
\def\indextext{#2}% |
|
\safewhatsit\docindwrite |
|
}% |
|
\fi |
|
} |
|
|
|
% Check if an index file has been opened, and if not, open it. |
% Check if an index file has been opened, and if not, open it. |
\def\requireopenindexfile#1{% |
\def\requireopenindexfile#1{% |
\ifnum\csname #1indfile\endcsname=0 |
\ifnum\csname #1indfile\endcsname=0 |
Line 5227 $$%
|
Line 5274 $$%
|
% trim spaces. |
% trim spaces. |
\edef\trimmed{\segment}% |
\edef\trimmed{\segment}% |
\edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% |
\edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% |
\ifincodeindex |
|
\edef\trimmed{\noexpand\code{\trimmed}}% |
|
\fi |
|
% |
% |
\xdef\bracedtext{\bracedtext{\trimmed}}% |
\xdef\bracedtext{\bracedtext{\trimmed}}% |
% |
% |
Line 5295 $$%
|
Line 5339 $$%
|
|
|
% Write the entry in \indextext to the index file. |
% Write the entry in \indextext to the index file. |
% |
% |
|
\def\doindwrite{% |
\newif\ifincodeindex |
|
\def\doindwrite{\incodeindexfalse\doindwritex} |
|
\def\docindwrite{\incodeindextrue\doindwritex} |
|
|
|
\def\doindwritex{% |
|
\maybemarginindex |
\maybemarginindex |
% |
% |
\atdummies |
\atdummies |
Line 5520 might help (with 'rm \jobname.?? \jobnam
|
Line 5559 might help (with 'rm \jobname.?? \jobnam
|
\else |
\else |
\begindoublecolumns |
\begindoublecolumns |
\catcode`\\=0\relax |
\catcode`\\=0\relax |
% |
\catcode`\@=12\relax |
% Make @ an escape character to give macros a chance to work. This |
|
% should work because we (hopefully) don't otherwise use @ in index files. |
|
%\catcode`\@=12\relax |
|
\catcode`\@=0\relax |
|
\input \jobname.\indexname s |
\input \jobname.\indexname s |
\enddoublecolumns |
\enddoublecolumns |
\fi |
\fi |
Line 6366 might help (with 'rm \jobname.?? \jobnam
|
Line 6401 might help (with 'rm \jobname.?? \jobnam
|
\def\CHAPPAGoff{% |
\def\CHAPPAGoff{% |
\global\let\contentsalignmacro = \chappager |
\global\let\contentsalignmacro = \chappager |
\global\let\pchapsepmacro=\chapbreak |
\global\let\pchapsepmacro=\chapbreak |
\global\def\HEADINGSon{\HEADINGSsinglechapoff}} |
\global\let\pagealignmacro=\chappager} |
|
|
\def\CHAPPAGon{% |
\def\CHAPPAGon{% |
\global\let\contentsalignmacro = \chappager |
\global\let\contentsalignmacro = \chappager |
\global\let\pchapsepmacro=\chappager |
\global\let\pchapsepmacro=\chappager |
|
\global\let\pagealignmacro=\chappager |
\global\def\HEADINGSon{\HEADINGSsingle}} |
\global\def\HEADINGSon{\HEADINGSsingle}} |
|
|
\def\CHAPPAGodd{% |
\def\CHAPPAGodd{% |
\global\let\contentsalignmacro = \chapoddpage |
\global\let\contentsalignmacro = \chapoddpage |
\global\let\pchapsepmacro=\chapoddpage |
\global\let\pchapsepmacro=\chapoddpage |
|
\global\let\pagealignmacro=\chapoddpage |
\global\def\HEADINGSon{\HEADINGSdouble}} |
\global\def\HEADINGSon{\HEADINGSdouble}} |
|
|
\CHAPPAGon |
\CHAPPAGon |
Line 6740 might help (with 'rm \jobname.?? \jobnam
|
Line 6777 might help (with 'rm \jobname.?? \jobnam
|
% |
% |
\def\startcontents#1{% |
\def\startcontents#1{% |
% If @setchapternewpage on, and @headings double, the contents should |
% If @setchapternewpage on, and @headings double, the contents should |
% start on an odd page, unlike chapters. |
% start on an odd page, unlike chapters. Thus, we maintain |
|
% \contentsalignmacro in parallel with \pagealignmacro. |
|
% From: Torbjorn Granlund <tege@matematik.su.se> |
\contentsalignmacro |
\contentsalignmacro |
\immediate\closeout\tocfile |
\immediate\closeout\tocfile |
% |
% |
Line 6755 might help (with 'rm \jobname.?? \jobnam
|
Line 6794 might help (with 'rm \jobname.?? \jobnam
|
% |
% |
% Roman numerals for page numbers. |
% Roman numerals for page numbers. |
\ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi |
\ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi |
\def\thistitle{}% no title in double-sided headings |
|
% Record where the Roman numerals started. |
|
\ifnum\romancount=0 \global\romancount=\pagecount \fi |
|
} |
} |
|
|
% redefined for the two-volume lispref. We always output on |
% redefined for the two-volume lispref. We always output on |
Line 6780 might help (with 'rm \jobname.?? \jobnam
|
Line 6816 might help (with 'rm \jobname.?? \jobnam
|
\fi |
\fi |
\closein 1 |
\closein 1 |
\endgroup |
\endgroup |
\contentsendroman |
\lastnegativepageno = \pageno |
|
\global\pageno = \savepageno |
} |
} |
|
|
% And just the chapters. |
% And just the chapters. |
Line 6815 might help (with 'rm \jobname.?? \jobnam
|
Line 6852 might help (with 'rm \jobname.?? \jobnam
|
\vfill \eject |
\vfill \eject |
\contentsalignmacro % in case @setchapternewpage odd is in effect |
\contentsalignmacro % in case @setchapternewpage odd is in effect |
\endgroup |
\endgroup |
\contentsendroman |
|
} |
|
\let\shortcontents = \summarycontents |
|
|
|
% Get ready to use Arabic numerals again |
|
\def\contentsendroman{% |
|
\lastnegativepageno = \pageno |
\lastnegativepageno = \pageno |
\global\pageno = \savepageno |
\global\pageno = \savepageno |
% |
|
% If \romancount > \arabiccount, the contents are at the end of the |
|
% document. Otherwise, advance where the Arabic numerals start for |
|
% the page numbers. |
|
\ifnum\romancount>\arabiccount\else\global\arabiccount=\pagecount\fi |
|
} |
} |
|
\let\shortcontents = \summarycontents |
|
|
% Typeset the label for a chapter or appendix for the short contents. |
% Typeset the label for a chapter or appendix for the short contents. |
% The arg is, e.g., `A' for an appendix, or `3' for a chapter. |
% The arg is, e.g., `A' for an appendix, or `3' for a chapter. |
Line 6970 might help (with 'rm \jobname.?? \jobnam
|
Line 6997 might help (with 'rm \jobname.?? \jobnam
|
% But \@ or @@ will get a plain @ character. |
% But \@ or @@ will get a plain @ character. |
|
|
\envdef\tex{% |
\envdef\tex{% |
\setregularquotes |
\setupmarkupstyle{tex}% |
\catcode `\\=0 \catcode `\{=1 \catcode `\}=2 |
\catcode `\\=0 \catcode `\{=1 \catcode `\}=2 |
\catcode `\$=3 \catcode `\&=4 \catcode `\#=6 |
\catcode `\$=3 \catcode `\&=4 \catcode `\#=6 |
\catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie |
\catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie |
Line 7196 might help (with 'rm \jobname.?? \jobnam
|
Line 7223 might help (with 'rm \jobname.?? \jobnam
|
% If you want all examples etc. small: @set dispenvsize small. |
% If you want all examples etc. small: @set dispenvsize small. |
% If you want even small examples the full size: @set dispenvsize nosmall. |
% If you want even small examples the full size: @set dispenvsize nosmall. |
% This affects the following displayed environments: |
% This affects the following displayed environments: |
% @example, @display, @format, @lisp, @verbatim |
% @example, @display, @format, @lisp |
% |
% |
\def\smallword{small} |
\def\smallword{small} |
\def\nosmallword{nosmall} |
\def\nosmallword{nosmall} |
Line 7242 might help (with 'rm \jobname.?? \jobnam
|
Line 7269 might help (with 'rm \jobname.?? \jobnam
|
% |
% |
\maketwodispenvdef{lisp}{example}{% |
\maketwodispenvdef{lisp}{example}{% |
\nonfillstart |
\nonfillstart |
\tt\setcodequotes |
\tt\setupmarkupstyle{example}% |
\let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. |
\let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. |
\parsearg\gobble |
\gobble % eat return |
} |
} |
% @display/@smalldisplay: same as @lisp except keep current font. |
% @display/@smalldisplay: same as @lisp except keep current font. |
% |
% |
Line 7402 might help (with 'rm \jobname.?? \jobnam
|
Line 7429 might help (with 'rm \jobname.?? \jobnam
|
\def\setupverb{% |
\def\setupverb{% |
\tt % easiest (and conventionally used) font for verbatim |
\tt % easiest (and conventionally used) font for verbatim |
\def\par{\leavevmode\endgraf}% |
\def\par{\leavevmode\endgraf}% |
\setcodequotes |
\setupmarkupstyle{verb}% |
\tabeightspaces |
\tabeightspaces |
% Respect line breaks, |
% Respect line breaks, |
% print special symbols as themselves, and |
% print special symbols as themselves, and |
Line 7417 might help (with 'rm \jobname.?? \jobnam
|
Line 7444 might help (with 'rm \jobname.?? \jobnam
|
\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount |
\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount |
% |
% |
% We typeset each line of the verbatim in an \hbox, so we can handle |
% We typeset each line of the verbatim in an \hbox, so we can handle |
% tabs. |
% tabs. The \global is in case the verbatim line starts with an accent, |
|
% or some other command that starts with a begin-group. Otherwise, the |
|
% entire \verbbox would disappear at the corresponding end-group, before |
|
% it is typeset. Meanwhile, we can't have nested verbatim commands |
|
% (can we?), so the \global won't be overwriting itself. |
\newbox\verbbox |
\newbox\verbbox |
\def\starttabbox{\setbox\verbbox=\hbox\bgroup} |
\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} |
% |
% |
\begingroup |
\begingroup |
\catcode`\^^I=\active |
\catcode`\^^I=\active |
Line 7430 might help (with 'rm \jobname.?? \jobnam
|
Line 7461 might help (with 'rm \jobname.?? \jobnam
|
\divide\dimen\verbbox by\tabw |
\divide\dimen\verbbox by\tabw |
\multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw |
\multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw |
\advance\dimen\verbbox by\tabw % advance to next multiple of \tabw |
\advance\dimen\verbbox by\tabw % advance to next multiple of \tabw |
\wd\verbbox=\dimen\verbbox |
\wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox |
\leavevmode\box\verbbox \starttabbox |
|
}% |
}% |
} |
} |
\endgroup |
\endgroup |
Line 7441 might help (with 'rm \jobname.?? \jobnam
|
Line 7471 might help (with 'rm \jobname.?? \jobnam
|
\let\nonarrowing = t% |
\let\nonarrowing = t% |
\nonfillstart |
\nonfillstart |
\tt % easiest (and conventionally used) font for verbatim |
\tt % easiest (and conventionally used) font for verbatim |
\def\par{\egroup\leavevmode\box\verbbox\endgraf\starttabbox}% |
% The \leavevmode here is for blank lines. Otherwise, we would |
|
% never \starttabbox and the \egroup would end verbatim mode. |
|
\def\par{\leavevmode\egroup\box\verbbox\endgraf}% |
\tabexpand |
\tabexpand |
\setcodequotes |
\setupmarkupstyle{verbatim}% |
% Respect line breaks, |
% Respect line breaks, |
% print special symbols as themselves, and |
% print special symbols as themselves, and |
% make each space count. |
% make each space count. |
% Must do in this order: |
% Must do in this order: |
\obeylines \uncatcodespecials \sepspaces |
\obeylines \uncatcodespecials \sepspaces |
|
\everypar{\starttabbox}% |
} |
} |
|
|
% Do the @verb magic: verbatim text is quoted by unique |
% Do the @verb magic: verbatim text is quoted by unique |
Line 7483 might help (with 'rm \jobname.?? \jobnam
|
Line 7516 might help (with 'rm \jobname.?? \jobnam
|
% ignore everything up to the first ^^M, that's the newline at the end |
% ignore everything up to the first ^^M, that's the newline at the end |
% of the @verbatim input line itself. Otherwise we get an extra blank |
% of the @verbatim input line itself. Otherwise we get an extra blank |
% line in the output. |
% line in the output. |
\xdef\doverbatim#1^^M#2@end verbatim{% |
\xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% |
\starttabbox#2\egroup\noexpand\end\gobble verbatim}% |
|
% We really want {...\end verbatim} in the body of the macro, but |
% We really want {...\end verbatim} in the body of the macro, but |
% without the active space; thus we have to use \xdef and \gobble. |
% without the active space; thus we have to use \xdef and \gobble. |
% The \egroup ends the \verbbox started at the end of the last line in |
|
% the block. |
|
\endgroup |
\endgroup |
% |
% |
\envdef\verbatim{% |
\envdef\verbatim{% |
\setnormaldispenv\setupverbatim\doverbatim |
\setupverbatim\doverbatim |
} |
} |
\let\Everbatim = \afterenvbreak |
\let\Everbatim = \afterenvbreak |
|
|
Line 7510 might help (with 'rm \jobname.?? \jobnam
|
Line 7540 might help (with 'rm \jobname.?? \jobnam
|
\wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% |
\wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% |
\edef\tmp{\noexpand\input #1 } |
\edef\tmp{\noexpand\input #1 } |
\expandafter |
\expandafter |
}\expandafter\starttabbox\tmp\egroup |
}\tmp |
\afterenvbreak |
\afterenvbreak |
}% |
}% |
} |
} |
Line 7862 might help (with 'rm \jobname.?? \jobnam
|
Line 7892 might help (with 'rm \jobname.?? \jobnam
|
% leave the code in, but it's strange for @var to lead to typewriter. |
% leave the code in, but it's strange for @var to lead to typewriter. |
% Nowadays we recommend @code, since the difference between a ttsl hyphen |
% Nowadays we recommend @code, since the difference between a ttsl hyphen |
% and a tt hyphen is pretty tiny. @code also disables ?` !`. |
% and a tt hyphen is pretty tiny. @code also disables ?` !`. |
\def\var##1{{\setregularquotes\ttslanted{##1}}}% |
\def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% |
#1% |
#1% |
\sl\hyphenchar\font=45 |
\sl\hyphenchar\font=45 |
} |
} |
Line 7971 might help (with 'rm \jobname.?? \jobnam
|
Line 8001 might help (with 'rm \jobname.?? \jobnam
|
} |
} |
\fi |
\fi |
|
|
\let\E=\expandafter |
|
|
|
% Used at the time of macro expansion. |
% Used at the time of macro expansion. |
% Argument is macro body with arguments substituted |
% Argument is macro body with arguments substituted |
\def\scanmacro#1{% |
\def\scanmacro#1{% |
\newlinechar`\^^M |
\newlinechar`\^^M |
% expand the expansion of \eatleadingcr twice to maybe remove a leading |
\def\xeatspaces{\eatspaces}% |
% newline (and \else and \fi tokens), then call \eatspaces on the result. |
|
\def\xeatspaces##1{% |
|
\E\E\E\E\E\E\E\eatspaces\E\E\E\E\E\E\E{\eatleadingcr##1% |
|
}}% |
|
\def\xempty##1{}% |
|
% |
% |
% Process the macro body under the current catcode regime. |
% Process the macro body under the current catcode regime. |
\scantokens{#1@comment}% |
\scantokens{#1@comment}% |
Line 8035 might help (with 'rm \jobname.?? \jobnam
|
Line 8058 might help (with 'rm \jobname.?? \jobnam
|
\unbrace{\gdef\trim@@@ #1 } #2@{#1} |
\unbrace{\gdef\trim@@@ #1 } #2@{#1} |
} |
} |
|
|
{\catcode`\^^M=\other% |
|
\gdef\eatleadingcr#1{\if\noexpand#1\noexpand^^M\else\E#1\fi}}% |
|
% Warning: this won't work for a delimited argument |
|
% or for an empty argument |
|
|
|
% Trim a single trailing ^^M off a string. |
% Trim a single trailing ^^M off a string. |
{\catcode`\^^M=\other \catcode`\Q=3% |
{\catcode`\^^M=\other \catcode`\Q=3% |
\gdef\eatcr #1{\eatcra #1Q^^MQ}% |
\gdef\eatcr #1{\eatcra #1Q^^MQ}% |
Line 8206 might help (with 'rm \jobname.?? \jobnam
|
Line 8224 might help (with 'rm \jobname.?? \jobnam
|
\let\hash\relax |
\let\hash\relax |
% \hash is redefined to `#' later to get it into definitions |
% \hash is redefined to `#' later to get it into definitions |
\let\xeatspaces\relax |
\let\xeatspaces\relax |
\let\xempty\relax |
|
\parsemargdefxxx#1,;,% |
\parsemargdefxxx#1,;,% |
\ifnum\paramno<10\relax\else |
\ifnum\paramno<10\relax\else |
\paramno0\relax |
\paramno0\relax |
Line 8218 might help (with 'rm \jobname.?? \jobnam
|
Line 8235 might help (with 'rm \jobname.?? \jobnam
|
\else \let\next=\parsemargdefxxx |
\else \let\next=\parsemargdefxxx |
\advance\paramno by 1 |
\advance\paramno by 1 |
\expandafter\edef\csname macarg.\eatspaces{#1}\endcsname |
\expandafter\edef\csname macarg.\eatspaces{#1}\endcsname |
{\xeatspaces{\hash\the\paramno\noexpand\xempty{}}}% |
{\xeatspaces{\hash\the\paramno}}% |
\edef\paramlist{\paramlist\hash\the\paramno,}% |
\edef\paramlist{\paramlist\hash\the\paramno,}% |
\fi\next} |
\fi\next} |
% the \xempty{} is to give \eatleadingcr an argument in the case of an |
|
% empty macro argument. |
|
|
|
% \parsemacbody, \parsermacbody |
% \parsemacbody, \parsermacbody |
% |
% |
Line 8811 might help (with 'rm \jobname.?? \jobnam
|
Line 8826 might help (with 'rm \jobname.?? \jobnam
|
\else |
\else |
\ifhavexrefs |
\ifhavexrefs |
% We (should) know the real title if we have the xref values. |
% We (should) know the real title if we have the xref values. |
\def\printedrefname{\refx{#1-title}}% |
\def\printedrefname{\refx{#1-title}{}}% |
\else |
\else |
% Otherwise just copy the Info node name. |
% Otherwise just copy the Info node name. |
\def\printedrefname{\ignorespaces #1}% |
\def\printedrefname{\ignorespaces #1}% |
Line 8905 might help (with 'rm \jobname.?? \jobnam
|
Line 8920 might help (with 'rm \jobname.?? \jobnam
|
% If the user specified the print name (third arg) to the ref, |
% If the user specified the print name (third arg) to the ref, |
% print it instead of our usual "Figure 1.2". |
% print it instead of our usual "Figure 1.2". |
\ifdim\wd\printedrefnamebox = 0pt |
\ifdim\wd\printedrefnamebox = 0pt |
\refx{#1-snt}% |
\refx{#1-snt}{}% |
\else |
\else |
\printedrefname |
\printedrefname |
\fi |
\fi |
Line 8940 might help (with 'rm \jobname.?? \jobnam
|
Line 8955 might help (with 'rm \jobname.?? \jobnam
|
\else |
\else |
% Reference within this manual. |
% Reference within this manual. |
% |
% |
% Only output a following space if the -snt ref is nonempty, as the ref |
% Only output a following space if the -snt ref is nonempty; for |
% will be empty for @unnumbered and @anchor. |
% @unnumbered and @anchor, it won't be. |
\setbox2 = \hbox{\ignorespaces \refx{#1-snt}}% |
\setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% |
\ifdim \wd2 > 0pt \refx{#1-snt}\space\fi |
\ifdim \wd2 > 0pt \refx{#1-snt}\space\fi |
% |
% |
% output the `[mynode]' via the macro below so it can be overridden. |
% output the `[mynode]' via the macro below so it can be overridden. |
\xrefprintnodename\printedrefname |
\xrefprintnodename\printedrefname |
% |
% |
\expandafter\ifx\csname SETtxiomitxrefpg\endcsname\relax |
% But we always want a comma and a space: |
% But we always want a comma and a space: |
,\space |
,\space |
% |
% |
% output the `page 3'. |
% output the `page 3'. |
\turnoffactive \putwordpage\tie\refx{#1-pg}{}% |
\turnoffactive \putwordpage\tie\refx{#1-pg}% |
% Add a , if xref followed by a space |
% Add a , if xref followed by a space |
\if\space\noexpand\tokenafterxref ,% |
\if\space\noexpand\tokenafterxref ,% |
\else\ifx\ \tokenafterxref ,% @TAB |
\else\ifx\ \tokenafterxref ,% @TAB |
\else\ifx\*\tokenafterxref ,% @* |
\else\ifx\*\tokenafterxref ,% @* |
\else\ifx\ \tokenafterxref ,% @SPACE |
\else\ifx\ \tokenafterxref ,% @SPACE |
\else\ifx\ |
\else\ifx\ |
\tokenafterxref ,% @NL |
\tokenafterxref ,% @NL |
\else\ifx\tie\tokenafterxref ,% @tie |
\else\ifx\tie\tokenafterxref ,% @tie |
\fi\fi\fi\fi\fi\fi |
\fi\fi\fi\fi\fi\fi |
|
\fi |
|
\fi\fi |
\fi\fi |
\fi |
\fi |
\endlink |
\endlink |
Line 9030 might help (with 'rm \jobname.?? \jobnam
|
Line 9043 might help (with 'rm \jobname.?? \jobnam
|
\fi\fi\fi |
\fi\fi\fi |
} |
} |
|
|
% \refx{NAME} - reference a cross-reference string named NAME. |
% \refx{NAME}{SUFFIX} - reference a cross-reference string named NAME. SUFFIX |
\def\refx#1{% |
% is output afterwards if non-empty. |
|
\def\refx#1#2{% |
\requireauxfile |
\requireauxfile |
{% |
{% |
\indexnofonts |
\indexnofonts |
Line 9058 might help (with 'rm \jobname.?? \jobnam
|
Line 9072 might help (with 'rm \jobname.?? \jobnam
|
% It's defined, so just use it. |
% It's defined, so just use it. |
\thisrefX |
\thisrefX |
\fi |
\fi |
|
#2% Output the suffix in any case. |
} |
} |
|
|
% This is the macro invoked by entries in the aux file. Define a control |
% This is the macro invoked by entries in the aux file. Define a control |
Line 9167 might help (with 'rm \jobname.?? \jobnam
|
Line 9182 might help (with 'rm \jobname.?? \jobnam
|
\catcode`\[=\other |
\catcode`\[=\other |
\catcode`\]=\other |
\catcode`\]=\other |
\catcode`\"=\other |
\catcode`\"=\other |
\catcode`\_=\active |
\catcode`\_=\other |
\catcode`\|=\active |
\catcode`\|=\other |
\catcode`\<=\active |
\catcode`\<=\other |
\catcode`\>=\active |
\catcode`\>=\other |
\catcode`\$=\other |
\catcode`\$=\other |
\catcode`\#=\other |
\catcode`\#=\other |
\catcode`\&=\other |
\catcode`\&=\other |
Line 9391 might help (with 'rm \jobname.?? \jobnam
|
Line 9406 might help (with 'rm \jobname.?? \jobnam
|
\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup |
\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup |
\catcode`\^^M = 5 % in case we're inside an example |
\catcode`\^^M = 5 % in case we're inside an example |
\normalturnoffactive % allow _ et al. in names |
\normalturnoffactive % allow _ et al. in names |
\makevalueexpandable |
\def\xprocessmacroarg{\eatspaces}% in case we are being used via a macro |
% If the image is by itself, center it. |
% If the image is by itself, center it. |
\ifvmode |
\ifvmode |
\imagevmodetrue |
\imagevmodetrue |
Line 9417 might help (with 'rm \jobname.?? \jobnam
|
Line 9432 might help (with 'rm \jobname.?? \jobnam
|
% On the other hand, if we are in the case of @center @image, we don't |
% On the other hand, if we are in the case of @center @image, we don't |
% want to start a paragraph, which will create a hsize-width box and |
% want to start a paragraph, which will create a hsize-width box and |
% eradicate the centering. |
% eradicate the centering. |
\ifx\centersub\centerV \else \imageindent \fi |
\ifx\centersub\centerV\else \noindent \fi |
% |
% |
% Output the image. |
% Output the image. |
\ifpdf |
\ifpdf |
Line 10691 directory should work if nowhere else do
|
Line 10706 directory should work if nowhere else do
|
\DeclareUnicodeCharacter{0233}{\=y}% |
\DeclareUnicodeCharacter{0233}{\=y}% |
\DeclareUnicodeCharacter{0237}{\dotless{j}}% |
\DeclareUnicodeCharacter{0237}{\dotless{j}}% |
% |
% |
\DeclareUnicodeCharacter{02BC}{'}% |
|
% |
|
\DeclareUnicodeCharacter{02DB}{\ogonek{ }}% |
\DeclareUnicodeCharacter{02DB}{\ogonek{ }}% |
% |
% |
% Greek letters upper case |
% Greek letters upper case |
Line 11327 directory should work if nowhere else do
|
Line 11340 directory should work if nowhere else do
|
\globaldefs = 0 |
\globaldefs = 0 |
}} |
}} |
|
|
\def\bsixpaper{{\globaldefs = 1 |
|
\afourpaper |
|
\internalpagesizes{140mm}{100mm}% |
|
{-6.35mm}{-12.7mm}% |
|
{\bindingoffset}{14pt}% |
|
{176mm}{125mm}% |
|
\let\SETdispenvsize=\smallword |
|
\lispnarrowing = 0.2in |
|
\globaldefs = 0 |
|
}} |
|
|
|
|
|
% @pagesizes TEXTHEIGHT[,TEXTWIDTH] |
% @pagesizes TEXTHEIGHT[,TEXTWIDTH] |
% Perhaps we should allow setting the margins, \topskip, \parskip, |
% Perhaps we should allow setting the margins, \topskip, \parskip, |
% and/or leading, also. Or perhaps we should compute them somehow. |
% and/or leading, also. Or perhaps we should compute them somehow. |
Line 11352 directory should work if nowhere else do
|
Line 11353 directory should work if nowhere else do
|
\setleading{\textleading}% |
\setleading{\textleading}% |
% |
% |
\dimen0 = #1\relax |
\dimen0 = #1\relax |
\advance\dimen0 by 2.5in % default 1in margin above heading line |
\advance\dimen0 by \voffset |
% and 1.5in to include heading, footing and |
\advance\dimen0 by 1in % reference point for DVI is 1 inch from top of page |
% bottom margin |
|
% |
% |
\dimen2 = \hsize |
\dimen2 = \hsize |
\advance\dimen2 by 2in % default to 1 inch margin on each side |
\advance\dimen2 by \normaloffset |
|
\advance\dimen2 by 1in % reference point is 1 inch from left edge of page |
% |
% |
\internalpagesizes{#1}{\hsize}% |
\internalpagesizes{#1}{\hsize}% |
{\voffset}{\normaloffset}% |
{\voffset}{\normaloffset}% |
Line 11444 directory should work if nowhere else do
|
Line 11445 directory should work if nowhere else do
|
\let> = \activegtr |
\let> = \activegtr |
\let~ = \activetilde |
\let~ = \activetilde |
\let^ = \activehat |
\let^ = \activehat |
\setregularquotes |
\markupsetuplqdefault \markupsetuprqdefault |
\let\b = \strong |
\let\b = \strong |
\let\i = \smartitalic |
\let\i = \smartitalic |
% in principle, all other definitions in \tex have to be undone too. |
% in principle, all other definitions in \tex have to be undone too. |
Line 11503 directory should work if nowhere else do
|
Line 11504 directory should work if nowhere else do
|
@let|=@normalverticalbar |
@let|=@normalverticalbar |
@let~=@normaltilde |
@let~=@normaltilde |
@let\=@ttbackslash |
@let\=@ttbackslash |
@setregularquotes |
@markupsetuplqdefault |
|
@markupsetuprqdefault |
@unsepspaces |
@unsepspaces |
} |
} |
} |
} |
Line 11596 directory should work if nowhere else do
|
Line 11598 directory should work if nowhere else do
|
@c Do this last of all since we use ` in the previous @catcode assignments. |
@c Do this last of all since we use ` in the previous @catcode assignments. |
@catcode`@'=@active |
@catcode`@'=@active |
@catcode`@`=@active |
@catcode`@`=@active |
@setregularquotes |
@markupsetuplqdefault |
|
@markupsetuprqdefault |
|
|
@c Local variables: |
@c Local variables: |
@c eval: (add-hook 'before-save-hook 'time-stamp) |
@c eval: (add-hook 'before-save-hook 'time-stamp) |
Line 11609 directory should work if nowhere else do
|
Line 11612 directory should work if nowhere else do
|
@c vim:sw=2: |
@c vim:sw=2: |
|
|
@enablebackslashhack |
@enablebackslashhack |
|
|