📄 texinfo.tex
字号:
\def\smallfonts{% \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy \let\tenttsl=\smallttsl \def\lsize{smaller}\def\lllsize{smaller}% \resetmathfonts \setleading{10.5pt}}\def\smallerfonts{% \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy \let\tenttsl=\smallerttsl \def\lsize{smaller}\def\lllsize{smaller}% \resetmathfonts \setleading{9.5pt}}% Set the fonts to use with the @small... environments.\let\smallexamplefonts = \smallfonts% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample% can fit this many characters:% 8.5x11=86 smallbook=72 a4=90 a5=69% If we use \scriptfonts (8pt), then we can fit this many characters:% 8.5x11=90+ smallbook=80 a4=90+ a5=77% For me, subjectively, the few extra characters that fit aren't worth% the additional smallness of 8pt. So I'm making the default 9pt.%% By the way, for comparison, here's what fits with @example (10pt):% 8.5x11=71 smallbook=60 a4=75 a5=58%% I wish the USA used A4 paper.% --karl, 24jan03.% Set up the default fonts, so we can use them for creating boxes.%\textfonts \rm% Define these so they can be easily changed for other fonts.\def\angleleft{$\langle$}\def\angleright{$\rangle$}% Count depth in font-changes, for error checks\newcount\fontdepth \fontdepth=0% Fonts for short table of contents.\setfont\shortcontrm\rmshape{12}{1000}\setfont\shortcontbf\bfshape{10}{\magstep1} % no cmb12\setfont\shortcontsl\slshape{12}{1000}\setfont\shortconttt\ttshape{12}{1000}%% Add scribe-like font environments, plus @l for inline lisp (usually sans%% serif) and @ii for TeX italic% \smartitalic{ARG} outputs arg in italics, followed by an italic correction% unless the following character is such as not to need one.\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else \ptexslash\fi\fi\fi}\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}% like \smartslanted except unconditionally uses \ttsl.% @var is set to this for defun arguments.\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}% like \smartslanted except unconditionally use \sl. We never want% ttsl for book titles, do we?\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}\let\i=\smartitalic\let\var=\smartslanted\let\dfn=\smartslanted\let\emph=\smartitalic\def\b#1{{\bf #1}}\let\strong=\b% We can't just use \exhyphenpenalty, because that only has effect at% the end of a paragraph. Restore normal hyphenation at the end of the% group within which \nohyphenation is presumably called.%\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation}\def\restorehyphenation{\hyphenchar\font = `- }% Set sfcode to normal for the chars that usually have another value.% Can't use plain's \frenchspacing because it uses the `\x notation, and% sometimes \x has an active definition that messes things up.%\catcode`@=11 \def\frenchspacing{% \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m }\catcode`@=\other\def\t#1{% {\tt \rawbackslash \frenchspacing #1}% \null}\def\samp#1{`\tclose{#1}'\null}\setfont\keyrm\rmshape{8}{1000}\font\keysy=cmsy9\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% \vbox{\hrule\kern-0.4pt \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% \kern-0.4pt\hrule}% \kern-.06em\raise0.4pt\hbox{\angleright}}}}% The old definition, with no lozenge:%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}\def\ctrl #1{{\tt \rawbackslash \hat}#1}% @file, @option are the same as @samp.\let\file=\samp\let\option=\samp% @code is a modification of @t,% which makes spaces the same size as normal in the surrounding text.\def\tclose#1{% {% % Change normal interword space to be same as for the current font. \spaceskip = \fontdimen2\font % % Switch to typewriter. \tt % % But `\ ' produces the large typewriter interword space. \def\ {{\spaceskip = 0pt{} }}% % % Turn off hyphenation. \nohyphenation % \rawbackslash \frenchspacing #1% }% \null}% We *must* turn on hyphenation at `-' and `_' in @code.% Otherwise, it is too hard to avoid overfull hboxes% in the Emacs manual, the Library manual, etc.% Unfortunately, TeX uses one parameter (\hyphenchar) to control% both hyphenation at - and hyphenation within words.% We must therefore turn them both off (\tclose does that)% and arrange explicitly to hyphenate at a dash.% -- rms.{ \catcode`\-=\active \catcode`\_=\active % \global\def\code{\begingroup \catcode`\-=\active \let-\codedash \catcode`\_=\active \let_\codeunder \codex }}\def\realdash{-}\def\codedash{-\discretionary{}{}{}}\def\codeunder{% % this is all so @math{@code{var_name}+1} can work. In math mode, _ % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) % will therefore expand the active definition of _, which is us % (inside @code that is), therefore an endless loop. \ifusingtt{\ifmmode \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. \else\normalunderscore \fi \discretionary{}{}{}}% {\_}%}\def\codex #1{\tclose{#1}\endgroup}% @kbd is like @code, except that if the argument is just one @key command,% then @kbd has no effect.% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),% `example' (@kbd uses ttsl only inside of @example and friends),% or `code' (@kbd uses normal tty font always).\parseargdef\kbdinputstyle{% \def\arg{#1}% \ifx\arg\worddistinct \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% \else\ifx\arg\wordexample \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% \else\ifx\arg\wordcode \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% \else \errhelp = \EMsimple \errmessage{Unknown @kbdinputstyle option `\arg'}% \fi\fi\fi}\def\worddistinct{distinct}\def\wordexample{example}\def\wordcode{code}% Default is `distinct.'\kbdinputstyle distinct\def\xkey{\key}\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%\ifx\one\xkey\ifx\threex\three \key{#2}%\else{\tclose{\kbdfont\look}}\fi\else{\tclose{\kbdfont\look}}\fi}% For @url, @env, @command quotes seem unnecessary, so use \code.\let\url=\code\let\env=\code\let\command=\code% @uref (abbreviation for `urlref') takes an optional (comma-separated)% second argument specifying the text to display and an optional third% arg as text to display instead of (rather than in addition to) the url% itself. First (mandatory) arg is the url. Perhaps eventually put in% a hypertex \special here.%\def\uref#1{\douref #1,,,\finish}\def\douref#1,#2,#3,#4\finish{\begingroup \unsepspaces \pdfurl{#1}% \setbox0 = \hbox{\ignorespaces #3}% \ifdim\wd0 > 0pt \unhbox0 % third arg given, show only that \else \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \ifpdf \unhbox0 % PDF: 2nd arg given, show only it \else \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url \fi \else \code{#1}% only url given, so show it \fi \fi \endlink\endgroup}% rms does not like angle brackets --karl, 17may97.% So now @email is just like @uref, unless we are pdf.%%\def\email#1{\angleleft{\tt #1}\angleright}\ifpdf \def\email#1{\doemail#1,,\finish} \def\doemail#1,#2,#3\finish{\begingroup \unsepspaces \pdfurl{mailto:#1}% \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi \endlink \endgroup}\else \let\email=\uref\fi% Check if we are currently using a typewriter font. Since all the% Computer Modern typewriter fonts have zero interword stretch (and% shrink), and it is reasonable to expect all typewriter fonts to have% this property, we can check that font parameter.%\def\ifmonospace{\ifdim\fontdimen3\font=0pt }% Typeset a dimension, e.g., `in' or `pt'. The only reason for the% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.%\def\dmn#1{\thinspace #1}\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}% @l was never documented to mean ``switch to the Lisp font'',% and it is not used as such in any manual I can find. We need it for% Polish suppressed-l. --karl, 22sep96.%\def\l#1{{\li #1}\null}% Explicit font changes: @r, @sc, undocumented @ii.\def\r#1{{\rm #1}} % roman font\def\sc#1{{\smallcaps#1}} % smallcaps font\def\ii#1{{\it #1}} % italic font\def\acronym#1{\doacronym #1,,\finish}\def\doacronym#1,#2,#3\finish{% {\selectfonts\lsize #1}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi}% @pounds{} is a sterling sign, which is in the CM italic font.% \def\pounds{{\it\$}}% @registeredsymbol - R in a circle. The font for the R should really% be smaller yet, but lllsize is the best we can do for now.% Adapted from the plain.tex definition of \copyright.%\def\registeredsymbol{% $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}% \hfil\crcr\Orb}}% }$%}\message{page headings,}\newskip\titlepagetopglue \titlepagetopglue = 1.5in\newskip\titlepagebottomglue \titlepagebottomglue = 2pc% First the title page. Must do @settitle before @titlepage.\newif\ifseenauthor\newif\iffinishedtitlepage% Do an implicit @contents or @shortcontents after @end titlepage if the% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.%\newif\ifsetcontentsaftertitlepage \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue\newif\ifsetshortcontentsaftertitlepage \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% \endgroup\page\hbox{}\page}\envdef\titlepage{% % Open one extra group, as we want to close it in the middle of \Etitlepage. \begingroup \parindent=0pt \textfonts % Leave some space at the very top of the page. \vglue\titlepagetopglue % No rule at page bottom unless we print one at the top with @title. \finishedtitlepagetrue % % Most title ``pages'' are actually two pages long, with space % at the top of the second. We don't want the ragged left on the second. \let\oldpage = \page \def\page{% \iffinishedtitlepage\else \finishtitlepage \fi \let\page = \oldpage \page \null }%}\def\Etitlepage{% \iffinishedtitlepage\else \finishtitlepage \fi % It is important to do the page break before ending the group, % because the headline and footline are only empty inside the group. % If we use the new definition of \page, we always get a blank page % after the title page, which we certainly don't want. \oldpage \endgroup % % Need this before the \...aftertitlepage checks so that if they are % in effect the toc pages will come out with page numbers. \HEADINGSon % % If they want short, they certainly want long too. \ifsetshortcontentsaftertitlepage \shortcontents \contents \global\let\shortcontents = \relax \global\let\contents = \relax \fi % \ifsetcontentsaftertitlepage \contents \global\let\contents = \relax \global\let\shortcontents = \relax \fi}\def\finishtitlepage{% \vskip4pt \hrule height 2pt width \hsize \vskip\titlepagebottomglue \finishedtitlepagetrue}%%% Macros to be used within @titlepage:\let\subtitlerm=\tenrm\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines \let\tt=\authortt}\parseargdef\title{% \checkenv\titlepage \leftline{\titlefonts\rm #1} % print a rule at the page bottom also. \finishedtitlepagefalse \vskip4pt \hrule height 4pt width \hsize \vskip4pt}\parseargdef\subtitle{% \checkenv\titlepage {\subtitlefont \rightline{#1}}%}% @author should come last, but may come many times.\parseargdef\author{% \def\temp{\quotation}% \ifx\thisenv\temp This editio
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -