You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5994 lines
196 KiB
5994 lines
196 KiB
% texinfo.tex -- TeX macros to handle Texinfo files.
|
|
%
|
|
% Load plain if necessary, i.e., if running under initex.
|
|
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
|
|
%
|
|
\def\texinfoversion{1999-10-01.07}
|
|
%
|
|
% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
|
|
% Free Software Foundation, Inc.
|
|
%
|
|
% 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
|
|
% published by the Free Software Foundation; either version 2, or (at
|
|
% your option) any later version.
|
|
%
|
|
% This texinfo.tex file is distributed in the hope that it will be
|
|
% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
|
% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
% General Public License for more details.
|
|
%
|
|
% You should have received a copy of the GNU General Public License
|
|
% along with this texinfo.tex file; see the file COPYING. If not, write
|
|
% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
% Boston, MA 02111-1307, USA.
|
|
%
|
|
% In other words, you are welcome to use, share and improve this program.
|
|
% You are forbidden to forbid anyone else to use, share and improve
|
|
% what you give them. Help stamp out software-hoarding!
|
|
%
|
|
% Please try the latest version of texinfo.tex before submitting bug
|
|
% reports; you can get the latest version from:
|
|
% ftp://ftp.gnu.org/gnu/texinfo.tex
|
|
% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)
|
|
% ftp://texinfo.org/tex/texinfo.tex
|
|
% ftp://us.ctan.org/macros/texinfo/texinfo.tex
|
|
% (and all CTAN mirrors, finger ctan@us.ctan.org for a list).
|
|
% /home/gd/gnu/doc/texinfo.tex on the GNU machines.
|
|
% The texinfo.tex in any given Texinfo distribution could well be out
|
|
% of date, so if that's what you're using, please check.
|
|
% Texinfo has a small home page at http://texinfo.org/.
|
|
%
|
|
% Send bug reports to bug-texinfo@gnu.org. Please include including a
|
|
% complete document in each bug report with which we can reproduce the
|
|
% problem. Patches are, of course, greatly appreciated.
|
|
%
|
|
% To process a Texinfo manual with TeX, it's most reliable to use the
|
|
% texi2dvi shell script that comes with the distribution. For a simple
|
|
% manual foo.texi, however, you can get away with this:
|
|
% tex foo.texi
|
|
% texindex foo.??
|
|
% tex foo.texi
|
|
% tex foo.texi
|
|
% dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps.
|
|
% The extra runs of TeX get the cross-reference information correct.
|
|
% Sometimes one run after texindex suffices, and sometimes you need more
|
|
% than two; texi2dvi does it as many times as necessary.
|
|
%
|
|
% It is possible to adapt texinfo.tex for other languages. You can get
|
|
% the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/.
|
|
|
|
\message{Loading texinfo [version \texinfoversion]:}
|
|
|
|
% If in a .fmt file, print the version number
|
|
% and turn on active characters that we couldn't do earlier because
|
|
% they might have appeared in the input file name.
|
|
\everyjob{\message{[Texinfo version \texinfoversion]}%
|
|
\catcode`+=\active \catcode`\_=\active}
|
|
|
|
% Save some parts of plain tex whose names we will redefine.
|
|
\let\ptexb=\b
|
|
\let\ptexbullet=\bullet
|
|
\let\ptexc=\c
|
|
\let\ptexcomma=\,
|
|
\let\ptexdot=\.
|
|
\let\ptexdots=\dots
|
|
\let\ptexend=\end
|
|
\let\ptexequiv=\equiv
|
|
\let\ptexexclam=\!
|
|
\let\ptexi=\i
|
|
\let\ptexlbrace=\{
|
|
\let\ptexrbrace=\}
|
|
\let\ptexstar=\*
|
|
\let\ptext=\t
|
|
|
|
% We never want plain's outer \+ definition in Texinfo.
|
|
% For @tex, we can use \tabalign.
|
|
\let\+ = \relax
|
|
|
|
\message{Basics,}
|
|
\chardef\other=12
|
|
|
|
% If this character appears in an error message or help string, it
|
|
% starts a new line in the output.
|
|
\newlinechar = `^^J
|
|
|
|
% Set up fixed words for English if not already set.
|
|
\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
|
|
\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
|
|
\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
|
|
\ifx\putwordin\undefined \gdef\putwordin{in}\fi
|
|
\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
|
|
\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
|
|
\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
|
|
\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
|
|
\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
|
|
\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi
|
|
\ifx\putwordof\undefined \gdef\putwordof{of}\fi
|
|
\ifx\putwordon\undefined \gdef\putwordon{on}\fi
|
|
\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi
|
|
\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi
|
|
\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi
|
|
\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi
|
|
\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi
|
|
\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi
|
|
\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi
|
|
%
|
|
\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
|
|
\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
|
|
\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
|
|
\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
|
|
\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
|
|
\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
|
|
\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
|
|
\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
|
|
\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
|
|
\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
|
|
\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
|
|
\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
|
|
%
|
|
\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi
|
|
\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi
|
|
\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi
|
|
\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
|
|
\ifx\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi
|
|
\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
|
|
\ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi
|
|
|
|
% Ignore a token.
|
|
%
|
|
\def\gobble#1{}
|
|
|
|
\hyphenation{ap-pen-dix}
|
|
\hyphenation{mini-buf-fer mini-buf-fers}
|
|
\hyphenation{eshell}
|
|
\hyphenation{white-space}
|
|
|
|
% Margin to add to right of even pages, to left of odd pages.
|
|
\newdimen \bindingoffset
|
|
\newdimen \normaloffset
|
|
\newdimen\pagewidth \newdimen\pageheight
|
|
|
|
% Sometimes it is convenient to have everything in the transcript file
|
|
% and nothing on the terminal. We don't just call \tracingall here,
|
|
% since that produces some useless output on the terminal.
|
|
%
|
|
\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
|
|
\ifx\eTeXversion\undefined
|
|
\def\loggingall{\tracingcommands2 \tracingstats2
|
|
\tracingpages1 \tracingoutput1 \tracinglostchars1
|
|
\tracingmacros2 \tracingparagraphs1 \tracingrestores1
|
|
\showboxbreadth\maxdimen\showboxdepth\maxdimen
|
|
}%
|
|
\else
|
|
\def\loggingall{\tracingcommands3 \tracingstats2
|
|
\tracingpages1 \tracingoutput1 \tracinglostchars1
|
|
\tracingmacros2 \tracingparagraphs1 \tracingrestores1
|
|
\tracingscantokens1 \tracingassigns1 \tracingifs1
|
|
\tracinggroups1 \tracingnesting2
|
|
\showboxbreadth\maxdimen\showboxdepth\maxdimen
|
|
}%
|
|
\fi
|
|
|
|
% For @cropmarks command.
|
|
% Do @cropmarks to get crop marks.
|
|
%
|
|
\newif\ifcropmarks
|
|
\let\cropmarks = \cropmarkstrue
|
|
%
|
|
% Dimensions to add cropmarks at corners.
|
|
% Added by P. A. MacKay, 12 Nov. 1986
|
|
%
|
|
\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
|
|
\newdimen\cornerlong \cornerlong=1pc
|
|
\newdimen\cornerthick \cornerthick=.3pt
|
|
\newdimen\topandbottommargin \topandbottommargin=.75in
|
|
|
|
% Main output routine.
|
|
\chardef\PAGE = 255
|
|
\output = {\onepageout{\pagecontents\PAGE}}
|
|
|
|
\newbox\headlinebox
|
|
\newbox\footlinebox
|
|
|
|
% \onepageout takes a vbox as an argument. Note that \pagecontents
|
|
% does insertions, but you have to call it yourself.
|
|
\def\onepageout#1{%
|
|
\ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
|
|
%
|
|
\ifodd\pageno \advance\hoffset by \bindingoffset
|
|
\else \advance\hoffset by -\bindingoffset\fi
|
|
%
|
|
% Do this outside of the \shipout so @code etc. will be expanded in
|
|
% the headline as they should be, not taken literally (outputting ''code).
|
|
\setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
|
|
\setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
|
|
%
|
|
{%
|
|
% Have to do this stuff outside the \shipout because we want it to
|
|
% take effect in \write's, yet the group defined by the \vbox ends
|
|
% before the \shipout runs.
|
|
%
|
|
\escapechar = `\\ % use backslash in output files.
|
|
\indexdummies % don't expand commands in the output.
|
|
\normalturnoffactive % \ in index entries must not stay \, e.g., if
|
|
% the page break happens to be in the middle of an example.
|
|
\shipout\vbox{%
|
|
\ifcropmarks \vbox to \outervsize\bgroup
|
|
\hsize = \outerhsize
|
|
\vskip-\topandbottommargin
|
|
\vtop to0pt{%
|
|
\line{\ewtop\hfil\ewtop}%
|
|
\nointerlineskip
|
|
\line{%
|
|
\vbox{\moveleft\cornerthick\nstop}%
|
|
\hfill
|
|
\vbox{\moveright\cornerthick\nstop}%
|
|
}%
|
|
\vss}%
|
|
\vskip\topandbottommargin
|
|
\line\bgroup
|
|
\hfil % center the page within the outer (page) hsize.
|
|
\ifodd\pageno\hskip\bindingoffset\fi
|
|
\vbox\bgroup
|
|
\fi
|
|
%
|
|
\unvbox\headlinebox
|
|
\pagebody{#1}%
|
|
\ifdim\ht\footlinebox > 0pt
|
|
% Only leave this space if the footline is nonempty.
|
|
% (We lessened \vsize for it in \oddfootingxxx.)
|
|
% The \baselineskip=24pt in plain's \makefootline has no effect.
|
|
\vskip 2\baselineskip
|
|
\unvbox\footlinebox
|
|
\fi
|
|
%
|
|
\ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi
|
|
%
|
|
\ifcropmarks
|
|
\egroup % end of \vbox\bgroup
|
|
\hfil\egroup % end of (centering) \line\bgroup
|
|
\vskip\topandbottommargin plus1fill minus1fill
|
|
\boxmaxdepth = \cornerthick
|
|
\vbox to0pt{\vss
|
|
\line{%
|
|
\vbox{\moveleft\cornerthick\nsbot}%
|
|
\hfill
|
|
\vbox{\moveright\cornerthick\nsbot}%
|
|
}%
|
|
\nointerlineskip
|
|
\line{\ewbot\hfil\ewbot}%
|
|
}%
|
|
\egroup % \vbox from first cropmarks clause
|
|
\fi
|
|
}% end of \shipout\vbox
|
|
}% end of group with \turnoffactive
|
|
\advancepageno
|
|
\ifnum\outputpenalty>-20000 \else\dosupereject\fi
|
|
}
|
|
|
|
\newinsert\margin \dimen\margin=\maxdimen
|
|
|
|
\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
|
|
{\catcode`\@ =11
|
|
\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
|
|
% marginal hacks, juha@viisa.uucp (Juha Takala)
|
|
\ifvoid\margin\else % marginal info is present
|
|
\rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
|
|
\dimen@=\dp#1 \unvbox#1
|
|
\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
|
|
\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
|
|
}
|
|
|
|
% Here are the rules for the cropmarks. Note that they are
|
|
% offset so that the space between them is truly \outerhsize or \outervsize
|
|
% (P. A. MacKay, 12 November, 1986)
|
|
%
|
|
\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
|
|
\def\nstop{\vbox
|
|
{\hrule height\cornerthick depth\cornerlong width\cornerthick}}
|
|
\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
|
|
\def\nsbot{\vbox
|
|
{\hrule height\cornerlong depth\cornerthick width\cornerthick}}
|
|
|
|
% Parse an argument, then pass it to #1. The argument is the rest of
|
|
% the input line (except we remove a trailing comment). #1 should be a
|
|
% macro which expects an ordinary undelimited TeX argument.
|
|
%
|
|
\def\parsearg#1{%
|
|
\let\next = #1%
|
|
\begingroup
|
|
\obeylines
|
|
\futurelet\temp\parseargx
|
|
}
|
|
|
HTTP/1.1 200 OK
Cache-Control: public,max-age=86400
Content-Length: 201
Content-Type: text/plain; charset=utf-8
Etag: "bc8873ffcdf982020b87a6eaff63ebca958f23ce"
Set-Cookie: i_like_gitea=8475c365af5d4060; Path=/; HttpOnly; SameSite=Lax
Set-Cookie: _csrf=JTWn5QnXTW7c_Ur8HXodkRLmBXA6MTczNzYyNDcwMzY5ODYxOTc4Mw; Path=/; Expires=Fri, 24 Jan 2025 09:31:43 GMT; HttpOnly; SameSite=Lax
Set-Cookie: macaron_flash=; Path=/; Max-Age=0; HttpOnly; SameSite=Lax
X-Frame-Options: SAMEORIGIN
Date: Thu, 23 Jan 2025 09:31:43 GMT
# Figure 2's data w.r.t. CLN
21 0.00075
46 0.00109
100 0.00239
215 0.00690
464 0.02991
1000 0.0861
2154 0.2527
4641 0.906
10000 4.059
21544 15.010
46415 39.848
100000 106.990