326 lines
12 KiB
TeX
326 lines
12 KiB
TeX
@tex
|
|
%% Cygnus revisions to texinfo.tex, TeX macros to handle texinfo files
|
|
% Copyright (C) 1991 Free Software Foundation, Inc.
|
|
%% Maintained at Cygnus Support as:
|
|
%%$Id: texiplus.tex,v 1.1.1.1 1998/03/23 04:42:12 law Exp $
|
|
|
|
%This texi+.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 1, or (at
|
|
|
|
{\let\fsfvn=\texinfoversion
|
|
\xdef\texinfoversion{\fsfvn\ (Cygnus)}}
|
|
\message{Loading Cygnus texinfo revisions [\texinfoversion]:}
|
|
|
|
% Print the version number if in a .fmt file.
|
|
\everyjob{\message{[Cygnus Texinfo \texinfoversion]}}
|
|
|
|
\globaldefs=1 % Escape the bounds of @tex/@end tex surrounding us
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%CROPMARKS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% These differ only slightly from FSF defaults; all crop dimens are
|
|
% defined here (whether different or not) for ease in revising.
|
|
\cornerlong=1pc\cornerthick=.3pt % These set size of cropmarks
|
|
\outerhsize=7in
|
|
\outervsize=9in
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
\newif\ifdraft\drafttrue % Extra markings; turn off with @finalout
|
|
|
|
% There are only two small changes to standard \title from texinfo
|
|
% (1) to include DRAFT marking on title page unless @finalout
|
|
% (2) to include a title-sized \tt font
|
|
% However, since \title is local to \titlepage, we have to redefine
|
|
% *that* whole damned thing.
|
|
%%%%%%%%%%This is sensitive to conflict w/FSF changes!****************
|
|
\def\titlepage{\begingroup \parindent=0pt \textfonts
|
|
\let\subtitlerm=\tenrm
|
|
% I deinstalled the following change because \cmr12 is undefined.
|
|
% This change was not in the ChangeLog anyway. --rms.
|
|
% \let\subtitlerm=\cmr12
|
|
\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}%
|
|
%
|
|
\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}%
|
|
%
|
|
% Leave some space at the very top of the page.
|
|
\vglue\titlepagetopglue
|
|
%
|
|
% Now you can print the title using @title.
|
|
\def\title{\parsearg\titlezzz}%
|
|
%changes from FSF only in following line:
|
|
\def\titlezzz##1{{\let\tentt=\titlett
|
|
\leftline{\titlefont{##1\ifdraft\hfill DRAFT\fi }}}
|
|
%end real changes from FSF version
|
|
% print a rule at the page bottom also.
|
|
\finishedtitlepagefalse
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% The ``width \hsize'' below should be unnecessary, since the rule is
|
|
% supposed to default to the smallest enclosing box...but *something*
|
|
% in texiplus breaks that default, so we force it to hsize.
|
|
\vskip4pt \hrule height 4pt width \hsize \vskip4pt}%
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% No rule at page bottom unless we print one at the top with @title.
|
|
\finishedtitlepagetrue
|
|
%
|
|
% Now you can put text using @subtitle.
|
|
\def\subtitle{\parsearg\subtitlezzz}%
|
|
\def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}%
|
|
%
|
|
% @author should come last, but may come many times.
|
|
\def\author{\parsearg\authorzzz}%
|
|
\def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi
|
|
{\authorfont \leftline{##1}}}%
|
|
%
|
|
% 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
|
|
\oldpage
|
|
\let\page = \oldpage
|
|
\hbox{}}%
|
|
% \def\page{\oldpage \hbox{}}
|
|
}
|
|
\def\finishtitlepage{%
|
|
% same comment re ``width \hsize'' as on last hrule...
|
|
\vskip4pt \hrule width \hsize height 2pt
|
|
\vskip\titlepagebottomglue
|
|
\finishedtitlepagetrue
|
|
}
|
|
%%%%%%%%%%end sensitive to conflict w/FSF changes!********************
|
|
|
|
% Cygnus uses different default page headings and footers
|
|
\def\leadline{\ \leaders\hrule height 2.5pt depth -2pt\hfil\ }
|
|
\def\manvers{}% Empty default version in case manual doesn't supply
|
|
% This is for _explicitly_ turning headers off. Note that we're more
|
|
% literal-minded than the FSF: we don't turn off _footers_! This
|
|
% means that, unlike with the FSF macros, our ``@headings off'' do not
|
|
% return to the default Texinfo heading-state of the document.
|
|
% Reconsider if this gives trouble...
|
|
\def\HEADINGSoff{
|
|
\global\evenheadline={\hfil}
|
|
\global\evenfootline={\line{\let\,=\thinspace\ftfnt c\,y\,g\,n\,u\,s\quad s\,u\,p\,p\,o\,r\,t\leadline\manvers}}
|
|
\global\oddheadline={\hfil}
|
|
\global\oddfootline={\line {\let\,=\thinspace\ftfnt c\,y\,g\,n\,u\,s\quad s\,u\,p\,p\,o\,r\,t\leadline\manvers}}}
|
|
% SINGLEPAGE:
|
|
\def\HEADINGSsingle{
|
|
\global\pageno=1\HEADINGSsinglex}
|
|
\def\HEADINGSsinglex{
|
|
\global\evenfootline={%
|
|
{\let\,=\thinspace\ftfnt c\,y\,g\,n\,u\,s\quad s\,u\,p\,p\,o\,r\,t}%
|
|
\leadline\manvers}
|
|
\global\oddfootline={%
|
|
{\let\,=\thinspace\ftfnt c\,y\,g\,n\,u\,s\quad s\,u\,p\,p\,o\,r\,t}%
|
|
\leadline\manvers}
|
|
\global\evenheadline={\ftfnt\thischapter\leadline
|
|
\ifdraft DRAFT\leadline\fi
|
|
\bf\folio}
|
|
\global\oddheadline={\ftfnt\thischapter\leadline
|
|
\ifdraft DRAFT\leadline\fi
|
|
\bf\folio}
|
|
}
|
|
%
|
|
% DOUBLEPAGE:
|
|
% use hrule leaders to delimit headings, footings from
|
|
% body; timestamp footer; pagenos outside *bottom* to
|
|
% permit moving chaptername to outside *top* (for easier
|
|
% skimming). 1990 dec 31, pesch@cygnus.com
|
|
\def\HEADINGSdouble{
|
|
\global\pageno=1\HEADINGSdoublex}
|
|
\def\HEADINGSdoublex{
|
|
\global\evenfootline={%
|
|
{\bf\folio}\ftfnt\leadline\ifdraft DRAFT\quad\fi
|
|
\ftfnt\manvers\qquad\today
|
|
}
|
|
\global\oddfootline={%
|
|
{\let\,=\thinspace\ftfnt c\,y\,g\,n\,u\,s\quad s\,u\,p\,p\,o\,r\,t}%
|
|
\leadline{\bf\folio}%
|
|
}
|
|
\global\evenheadline={\ftfnt\thistitle\leadline\ifdraft DRAFT\fi}
|
|
\global\oddheadline={\rm\leadline\thischapter}
|
|
}
|
|
|
|
% CHANGE to @finalout ---also use it to remove DRAFT markings from
|
|
% title, footers
|
|
%% For a final copy, take out the rectangles
|
|
%% that mark overfull boxes (in case you have decided
|
|
%% that the text looks ok even though it passes the margin).
|
|
\def\finalout{\overfullrule=0pt
|
|
%% Also take out ``DRAFT'' markings
|
|
\global\draftfalse
|
|
}
|
|
|
|
%Font overrides; we use PostScript when possible.
|
|
\font\textrm=pncr scaled \magstephalf
|
|
\font\texttt=pcrr
|
|
\font\textbf=pncb scaled \magstephalf
|
|
\font\textit=pncri scaled \magstephalf
|
|
\font\textsl=pcrro
|
|
\font\textsf=slcrst at 9.5pt
|
|
% FIXME: figure out, test dvips smallcaps kluge
|
|
%\font\textsc=Times-SmallCaps scaled \magstephalf
|
|
\font\ftfnt=phvr at 8pt % Cygnus Support footer-font
|
|
|
|
\font\defbf=pncb scaled \magstep1 %was 1314
|
|
|
|
\font\ninett=pcrr at 9pt
|
|
\let\indtt=\ninett
|
|
\font\indrm=pncr at 9pt
|
|
\font\indit=pncri at 9pt
|
|
\font\indsl=pcrro at 9pt
|
|
\let\indsf=\indrm
|
|
\let\indbf=\indrm
|
|
\let\indsc=\indrm
|
|
|
|
\font\chaprm=pncb at 17pt
|
|
\font\chapit=pncbi at 17pt
|
|
\font\chapsl=pcrbo at 16pt
|
|
\font\chaptt=pcrb at 16pt
|
|
\font\chapsf=slcrst at 16pt
|
|
\let\chapbf=\chaprm
|
|
% \chapfonts mod from FSF vn is to include baselineskip, for the few
|
|
% cases where a title chapter overflows its line.
|
|
\def\chapfonts{\baselineskip=19pt%
|
|
\let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
|
|
\let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
|
|
\let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
|
|
\resetmathfonts}
|
|
|
|
|
|
\font\secrm=pncb at 14pt
|
|
\font\secit=pncbi at 14pt
|
|
\font\secsl=pcrbo at 13pt
|
|
\font\sectt=pcrb at 13pt
|
|
\font\secsf=slcrst at 13pt
|
|
\font\secbf=pncb at 14pt
|
|
|
|
\font\ssecrm=pncr at 13pt
|
|
\font\ssecit=pncri at 13pt
|
|
\font\ssecsl=pcrro at 12pt
|
|
\font\ssectt=pcrr at 12pt
|
|
\font\ssecsf=slcrst at 12pt
|
|
\font\ssecbf=pncb at 13pt
|
|
|
|
\font\titlerm=pncb at 21pt
|
|
\font\titlett=pcrr at 20pt
|
|
\font\authorrm=pncr scaled \magstep2
|
|
|
|
\font\truesecrm=pncr at 12pt
|
|
|
|
% Fonts for short table of contents
|
|
\font\shortcontrm=pncr at 12pt
|
|
\font\shortcontbf=pncb at 12pt
|
|
\font\shortcontsl=pncri at 12pt
|
|
|
|
% \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\/\fi\fi\fi}
|
|
\def\smartitalic#1{{\it #1}\futurelet\next\smartitalicx}
|
|
% \smartitalic is used for @emph; FSF keeps trying to make it match
|
|
% @var.
|
|
%
|
|
% \smartslant{ARG} outputs arg in a slanted font, followed by an
|
|
% italic correction unless the following character is such as not to need one.
|
|
\def\smartslantx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi}
|
|
\def\smartslant#1{{\sl #1}\futurelet\next\smartslantx}
|
|
|
|
\let\i=\smartitalic
|
|
\let\var=\smartslant
|
|
\let\dfn=\smartitalic
|
|
\let\emph=\smartitalic
|
|
\let\cite=\smartitalic
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% @altref, if called explicitly (inside @iftex), switches the @ref
|
|
% printed output so it lacks the square brackets used by default.
|
|
% While we're at it, we use double quotes instead of square brackets
|
|
% (or no decorator at all, depending on state of @altref toggle).
|
|
% Unfortunately this requires reproducing the entire damn xrefX
|
|
% definition. WARNING: may need to track texinfo.tex changes to xrefX...
|
|
\newif\ifbra\bratrue
|
|
\def\altref{\ifbra\brafalse\else\bratrue\fi}% Toggle.
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Begin duplicate xrefX:
|
|
\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup%
|
|
\def\printedmanual{\ignorespaces #5}%
|
|
\def\printednodename{\ignorespaces #3}%
|
|
%
|
|
\setbox1=\hbox{\printedmanual}%
|
|
\setbox0=\hbox{\printednodename}%
|
|
\ifdim \wd0=0pt%
|
|
\def\printednodename{\ignorespaces #1}%
|
|
%%% Uncommment the following line to make the actual chapter or section title
|
|
%%% appear inside the square brackets.
|
|
%\def\printednodename{#1-title}%
|
|
\fi%
|
|
%
|
|
%
|
|
% If we use \unhbox0 and \unhbox1 to print the node names, TeX does
|
|
% not insert empty discretionaries after hyphens, which means that it
|
|
% will not find a line break at a hyphen in a node names. Since some
|
|
% manuals are best written with fairly long node names, containing
|
|
% hyphens, this is a loss. Therefore, we simply give the text of
|
|
% the node name again, so it is as if TeX is seeing it for the first
|
|
% time.
|
|
\ifdim \wd1>0pt
|
|
section ``\printednodename'' in \cite{\printedmanual}%
|
|
\else%
|
|
\turnoffactive%
|
|
%%%%%%%%%%%%%%%Here's the change for @altref:
|
|
\ifbra
|
|
\refx{#1-snt}{} ``\printednodename,'' page\tie\refx{#1-pg}{}%
|
|
\else
|
|
\refx{#1-snt}{} \printednodename, page\tie\refx{#1-pg}{}%
|
|
\fi
|
|
%%%%%%%%%%%%%%%end change for @altref
|
|
\fi
|
|
\endgroup}
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%:End duplicate xrefX
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% \widen: let examples (or whatever) fall into margins. Symmetric. Cancel
|
|
% ``@widen{N}'' with ``@widen{-N}''.
|
|
\newdimen\extra\extra=0pt % for ``widen''
|
|
\global\def\widen#1{\advance\extra by #1%
|
|
\advance\leftskip by -#1\advance\rightskip by -#1}
|
|
%
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% ONLY INTENDED CHANGES from FSF smallbook: tolerance and page centering
|
|
% Use @smallbook to reset parameters for 7x9.5 format (or else 7x9.25)
|
|
\def\smallbook{
|
|
|
|
% These values for secheadingskip and subsecheadingskip are
|
|
% experiments. RJC 7 Aug 1992
|
|
\global\secheadingskip = 17pt plus 6pt minus 3pt
|
|
\global\subsecheadingskip = 14pt plus 6pt minus 3pt
|
|
|
|
\global\lispnarrowing = 0.3in
|
|
\setleading{12pt}
|
|
\advance\topskip by -1cm
|
|
\global\parskip 3pt plus 1pt
|
|
\global\hsize = 5in
|
|
\advance\normaloffset by .75in % half of difference from 6.5in default hsize
|
|
\global\vsize=7.5in
|
|
\advance\voffset by .7in % half of difference from 8.9in default vsize
|
|
\global\tolerance=1400
|
|
\global\hfuzz=1pt
|
|
\global\contentsrightmargin=0pt
|
|
|
|
\global\pagewidth=\hsize
|
|
\global\pageheight=\vsize
|
|
|
|
\global\let\smalllisp=\smalllispx
|
|
\global\let\smallexample=\smalllispx
|
|
\global\def\Esmallexample{\Esmalllisp}
|
|
}\textfonts
|
|
|
|
\globaldefs=0 % this is NOT redundant; the \endgroup done by@end tex
|
|
% would restore the value, but before doing that would
|
|
% screw up if globaldefs=1 were allowed to remain here.
|
|
@end tex
|
|
@rm
|
|
@smallbook
|
|
@c some manuals (notably as) contain stuff that only looks good in
|
|
@c smallbook; this switch controls its appearance, by local convention
|
|
@set SMALL
|