📄 texinfo.tex
字号:
}% Single-spacing is done by various environments (specifically, in% \nonfillstart and \quotations).\newskip\singlespaceskip \singlespaceskip = 12.5pt\def\singlespace{% % Why was this kern here? It messes up equalizing space above and below % environments. --karl, 6may93 %{\advance \baselineskip by -\singlespaceskip %\kern \baselineskip}% \setleading \singlespaceskip}%% Simple single-character @ commands% @@ prints an @% Kludge this until the fonts are right (grr).\def\@{{\tt\char64}}% This is turned off because it was never documented% and you can use @w{...} around a quote to suppress ligatures.%% Define @` and @' to be the same as ` and '%% but suppressing ligatures.%\def\`{{`}}%\def\'{{'}}% Used to generate quoted braces.\def\mylbrace {{\tt\char123}}\def\myrbrace {{\tt\char125}}\let\{=\mylbrace\let\}=\myrbrace\begingroup % Definitions to produce actual \{ & \} command in an index. \catcode`\{ = 12 \catcode`\} = 12 \catcode`\[ = 1 \catcode`\] = 2 \catcode`\@ = 0 \catcode`\\ = 12 @gdef@lbracecmd[\{]% @gdef@rbracecmd[\}]%@endgroup% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent% Others are defined by plain TeX: @` @' @" @^ @~ @= @v @H.\let\, = \c\let\dotaccent = \.\def\ringaccent#1{{\accent23 #1}}\let\tieaccent = \t\let\ubaraccent = \b\let\udotaccent = \d% Other special characters: @questiondown @exclamdown% Plain TeX defines: @AA @AE @O @OE @L (and lowercase versions) @ss.\def\questiondown{?`}\def\exclamdown{!`}% Dotless i and dotless j, used for accents.\def\imacro{i}\def\jmacro{j}\def\dotless#1{% \def\temp{#1}% \ifx\temp\imacro \ptexi \else\ifx\temp\jmacro \j \else \errmessage{@dotless can be used only with i or j}% \fi\fi}% Be sure we're in horizontal mode when doing a tie, since we make space% equivalent to this in @example-like environments. Otherwise, a space% at the beginning of a line will start with \penalty -- and% since \penalty is valid in vertical mode, we'd end up putting the% penalty on the vertical list instead of in the new paragraph.{\catcode`@ = 11 % Avoid using \@M directly, because that causes trouble % if the definition is written into an index file. \global\let\tiepenalty = \@M \gdef\tie{\leavevmode\penalty\tiepenalty\ }}% @: forces normal size whitespace following.\def\:{\spacefactor=1000 }% @* forces a line break.\def\*{\hfil\break\hbox{}\ignorespaces}% @. is an end-of-sentence period.\def\.{.\spacefactor=3000 }% @! is an end-of-sentence bang.\def\!{!\spacefactor=3000 }% @? is an end-of-sentence query.\def\?{?\spacefactor=3000 }% @w prevents a word break. Without the \leavevmode, @w at the% beginning of a paragraph, when TeX is still in vertical mode, would% produce a whole line of output instead of starting the paragraph.\def\w#1{\leavevmode\hbox{#1}}% @group ... @end group forces ... to be all on one page, by enclosing% it in a TeX vbox. We use \vtop instead of \vbox to construct the box% to keep its height that of a normal line. According to the rules for% \topskip (p.114 of the TeXbook), the glue inserted is% max (\topskip - \ht (first item), 0). If that height is large,% therefore, no glue is inserted, and the space between the headline and% the text is small, which looks bad.%\def\group{\begingroup \ifnum\catcode13=\active \else \errhelp = \groupinvalidhelp \errmessage{@group invalid in context where filling is enabled}% \fi % % The \vtop we start below produces a box with normal height and large % depth; thus, TeX puts \baselineskip glue before it, and (when the % next line of text is done) \lineskip glue after it. (See p.82 of % the TeXbook.) Thus, space below is not quite equal to space % above. But it's pretty close. \def\Egroup{% \egroup % End the \vtop. \endgroup % End the \group. }% % \vtop\bgroup % We have to put a strut on the last line in case the @group is in % the midst of an example, rather than completely enclosing it. % Otherwise, the interline space between the last line of the group % and the first line afterwards is too small. But we can't put the % strut in \Egroup, since there it would be on a line by itself. % Hence this just inserts a strut at the beginning of each line. \everypar = {\strut}% % % Since we have a strut on every line, we don't need any of TeX's % normal interline spacing. \offinterlineskip % % OK, but now we have to do something about blank % lines in the input in @example-like environments, which normally % just turn into \lisppar, which will insert no space now that we've % turned off the interline space. Simplest is to make them be an % empty paragraph. \ifx\par\lisppar \edef\par{\leavevmode \par}% % % Reset ^^M's definition to new definition of \par. \obeylines \fi % % Do @comment since we are called inside an environment such as % @example, where each end-of-line in the input causes an % end-of-line in the output. We don't want the end-of-line after % the `@group' to put extra space in the output. Since @group % should appear on a line by itself (according to the Texinfo % manual), we don't worry about eating any user text. \comment}%% TeX puts in an \escapechar (i.e., `@') at the beginning of the help% message, so this ends up printing `@group can only ...'.%\newhelp\groupinvalidhelp{%group can only be used in environments such as @example,^^J%where each line of input produces a line of output.}% @need space-in-mils% forces a page break if there is not space-in-mils remaining.\newdimen\mil \mil=0.001in\def\need{\parsearg\needx}% Old definition--didn't work.%\def\needx #1{\par %%% This method tries to make TeX break the page naturally%% if the depth of the box does not fit.%{\baselineskip=0pt%%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak%\prevdepth=-1000pt%}}\def\needx#1{% % Go into vertical mode, so we don't make a big box in the middle of a % paragraph. \par % % Don't add any leading before our big empty box, but allow a page % break, since the best break might be right here. \allowbreak \nointerlineskip \vtop to #1\mil{\vfil}% % % TeX does not even consider page breaks if a penalty added to the % main vertical list is 10000 or more. But in order to see if the % empty box we just added fits on the page, we must make it consider % page breaks. On the other hand, we don't want to actually break the % page after the empty box. So we use a penalty of 9999. % % There is an extremely small chance that TeX will actually break the % page at this \penalty, if there are no other feasible breakpoints in % sight. (If the user is using lots of big @group commands, which % almost-but-not-quite fill up a page, TeX will have a hard time doing % good page breaking, for example.) However, I could not construct an % example where a page broke at this \penalty; if it happens in a real % document, then we can reconsider our strategy. \penalty9999 % % Back up by the size of the box, whether we did a page break or not. \kern -#1\mil % % Do not allow a page break right after this kern. \nobreak}% @br forces paragraph break\let\br = \par% @dots{} output an ellipsis using the current font.% We do .5em per period so that it has the same spacing in a typewriter% font as three actual period characters.%\def\dots{% \leavevmode \hbox to 1.5em{% \hskip 0pt plus 0.25fil minus 0.25fil .\hss.\hss.% \hskip 0pt plus 0.5fil minus 0.5fil }%}% @enddots{} is an end-of-sentence ellipsis.% \def\enddots{% \leavevmode \hbox to 2em{% \hskip 0pt plus 0.25fil minus 0.25fil .\hss.\hss.\hss.% \hskip 0pt plus 0.5fil minus 0.5fil }% \spacefactor=3000}% @page forces the start of a new page%\def\page{\par\vfill\supereject}% @exdent text....% outputs text on separate line in roman font, starting at standard page margin% This records the amount of indent in the innermost environment.% That's how much \exdent should take out.\newskip\exdentamount% This defn is used inside fill environments such as @defun.\def\exdent{\parsearg\exdentyyy}\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}}% This defn is used inside nofill environments such as @example.\def\nofillexdent{\parsearg\nofillexdentyyy}\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount\leftline{\hskip\leftskip{\rm#1}}}}% @inmargin{TEXT} puts TEXT in the margin next to the current paragraph.\def\inmargin#1{%\strut\vadjust{\nobreak\kern-\strutdepth \vtop to \strutdepth{\baselineskip\strutdepth\vss \llap{\rightskip=\inmarginspacing \vbox{\noindent #1}}\null}}}\newskip\inmarginspacing \inmarginspacing=1cm\def\strutdepth{\dp\strutbox}%\hbox{{\rm#1}}\hfil\break}}% @include file insert text of that file as input.% Allow normal characters that we make active in the argument (a file name).\def\include{\begingroup \catcode`\\=12 \catcode`~=12 \catcode`^=12 \catcode`_=12 \catcode`|=12 \catcode`<=12 \catcode`>=12 \catcode`+=12 \parsearg\includezzz}% Restore active chars for included file.\def\includezzz#1{\endgroup\begingroup % Read the included file in a group so nested @include's work. \def\thisfile{#1}% \input\thisfile\endgroup}\def\thisfile{}% @center line outputs that line, centered\def\center{\parsearg\centerzzz}\def\centerzzz #1{{\advance\hsize by -\leftskip\advance\hsize by -\rightskip\centerline{#1}}}% @sp n outputs n lines of vertical space\def\sp{\parsearg\spxxx}\def\spxxx #1{\vskip #1\baselineskip}% @comment ...line which is ignored...% @c is the same as @comment% @ignore ... @end ignore is another way to write a comment\def\comment{\begingroup \catcode`\^^M=\other%\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%\commentxxx}{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}\let\c=\comment% @paragraphindent is defined for the Info formatting commands only.\let\paragraphindent=\comment% Prevent errors for section commands.% Used in @ignore and in failing conditionals.\def\ignoresections{%\let\chapter=\relax\let\unnumbered=\relax\let\top=\relax\let\unnumberedsec=\relax\let\unnumberedsection=\relax\let\unnumberedsubsec=\relax\let\unnumberedsubsection=\relax\let\unnumberedsubsubsec=\relax\let\unnumberedsubsubsection=\relax\let\section=\relax\let\subsec=\relax\let\subsubsec=\relax\let\subsection=\relax\let\subsubsection=\relax\let\appendix=\relax\let\appendixsec=\relax\let\appendixsection=\relax\let\appendixsubsec=\relax\let\appendixsubsection=\relax\let\appendixsubsubsec=\relax\let\appendixsubsubsection=\relax\let\contents=\relax\let\smallbook=\relax\let\titlepage=\relax}% Used in nested conditionals, where we have to parse the Texinfo source% and so want to turn off most commands, in case they are used% incorrectly.%\def\ignoremorecommands{% \let\defcodeindex = \relax \let\defcv = \relax \let\deffn = \relax \let\deffnx = \relax \let\defindex = \relax \let\defivar = \relax \let\defmac = \relax \let\defmethod = \relax \let\defop = \relax \let\defopt = \relax \let\defspec = \relax \let\deftp = \relax \let\deftypefn = \relax \let\deftypefun = \relax \let\deftypevar = \relax \let\deftypevr = \relax \let\defun = \relax \let\defvar = \relax \let\defvr = \relax \let\ref = \relax \let\xref = \relax \let\printindex = \relax \let\pxref = \relax \let\settitle = \relax \let\setchapternewpage = \relax \let\setchapterstyle = \relax \let\everyheading = \relax \let\evenheading = \relax \let\oddheading = \relax \let\everyfooting = \relax \let\evenfooting = \relax \let\oddfooting = \relax \let\headings = \relax \let\include = \relax \let\lowersections = \relax \let\down = \relax
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -