Annotation of OpenXM_contrib/pari/doc/parimacro.tex, Revision 1.1.1.1
1.1 maekawa 1: \catcode`\@=11
2: \newif\ifgphelp
3: \long\def\@ifundef#1#2#3{\expandafter\ifx\csname
4: #1\endcsname\relax#2\else#3\fi}
5: \@ifundef{fromgphelp}{\gphelpfalse}{\gphelptrue}
6:
7: \ifgphelp
8: \magnification=\magstep1
9: \baselineskip=13pt
10: \else
11: \magnification=\magstephalf
12: \fi
13:
14: \newread\std
15: \openin\std=paricfg.tex
16: \ifeof\std
17: \openin\std=doc/paricfg.tex
18: \ifeof\std
19: \message{paricfg.tex not found. You should run Configure.}
20: % use default values
21: \def\vers{2.0.x}
22: \def\miscdir{/usr/local/lib/pari}
23: \def\includedir{/usr/local/include/pari}
24: \def\libdir{/usr/local/lib}
25: \def\wwwsite{\kbd{http://hasse.mathematik.tu-muenchen.de/ntsw/pari/}}
26: \else
27: \input doc/paricfg.tex
28: \fi
29: \else
30: \input paricfg.tex
31: \fi
32:
33: \font\chaptertitlefont=cmr12 scaled \magstep1
34: \font\captertitlebf=cmbx10 scaled \magstep2
35: \font\sectiontitlebf=cmbx12
36: \font\seventt=cmtt8 scaled 875
37: \scriptfont\ttfam=\seventt % we should really set the \hyphenchar etc first
38: \parskip=6pt plus 3pt minus 1.5pt
39: \overfullrule=0pt
40:
41: %
42: % CROSS REFERENCING & INDEX
43: %
44: \newif\ifsecondpass
45: \newwrite\out
46: \newwrite\aux
47:
48: \ifgphelp % disable most of it
49: \def\sidx#1{}
50: \def\tocwrite#1{}
51: \def\label#1{}
52: \def\ref#1{[{\bf ??}]}
53: \else
54: \def\typeout#1{\immediate\write\out{#1}}
55: \def\@namedef#1{\expandafter\def\csname #1\endcsname}
56: \def\newlabel#1#2{\@ifundef{r@#1}{}{\message{Label `#1' multiply
57: defined}}\global\@namedef{r@#1}{#2}}
58:
59: \openin\std=users.std
60: \ifeof\std
61: \secondpassfalse
62: \typeout{FIRST PASS}
63: \csname newwrite\endcsname\toc
64: \csname newwrite\endcsname\index
65: \openout\toc=\jobname.toc
66: \openout\index=\jobname.idx
67: \let\condwrite=\write
68: \else
69: \secondpasstrue
70: \typeout{SECOND PASS}
71: \let\immediate\relax
72: \def\condwrite#1#2{}
73: \fi
74: % index
75: \def\sidx#1{{\condwrite\index{!#1!\the\pageno!}}}
76: %cf TeXBook Exercice 21.10
77: \def\tocwrite#1{{\let\the=0\edef\next{\condwrite\toc{#1}}\next}}
78: % don't use \jobname here, macros may be used by tutorial.tex
79: \openin\std=users.aux
80: \ifeof\std
81: \message{No aux file.}
82: \else
83: \input users.aux
84: \fi
85: \openin\std=users.std
86:
87: % \ref, \label
88: \openout\aux=\jobname.aux
89:
90: \ifx\inputlineno\undefined
91: \let\on@line\empty
92: \else
93: \def\on@line{ on input line \the\inputlineno}
94: \fi
95: \def\@errundef#1{\typeout{Reference `#1' on page \the\pageno \space
96: undefined\on@line}}
97:
98: \def\@car#1#2\@nil{#1}
99: \def\@cdr#1#2\@nil{#2}
100:
101: \def\@ref{\expandafter\@cdr\@temp \@nil\null}
102: \def\@cref{\expandafter\@car\@temp \@nil\null}
103:
104: \def\label#1{\immediate\write\aux{\string
105: \newlabel{#1}{{\the\chapno}{\currentlabel}}}}
106: \def\ref#1{\@ifundef{r@#1}
107: {{\bf ??}\@errundef{#1}}
108: {\edef\@temp{\csname r@#1\endcsname}%
109: \def\lbl{\@ref}\def\chp{\@cref}%
110: \ifx\chp{\the\chapno}\lbl\else\chp.\lbl\fi}}
111: \fi
112:
113: \def\idx#1{\sidx{#1}#1}
114: \def\secref#1{Section~\ref{#1}}
115:
116: %
117: % SECTIONS
118: %
119: \newcount\appno
120: \newcount\chapno
121: \newcount\secno
122: \newcount\subsecno
123: \newcount\subsubsecno
124:
125: \def\newpage{\hbox{}\vfill\eject}
126:
127: \def\myhook{}
128: \def\title#1#2{%
129: \ifodd\pageno\else\newpage\fi
130: \tocwrite{#1 #2\string\dotfill\the\pageno}
131: \ifgphelp\else
132: \centerline{\chaptertitlefont #1}\medskip
133: \fi
134: \centerline{\let\bf\chaptertitlebf \chaptertitlefont #2}\vskip1cm}
135: \def\sectitle#1{%
136: \tocwrite{{\sevenrm\hskip0.5cm#1\string\dotfill\the\pageno}}
137: \vskip 0pt plus 54pt\penalty-600 % good break
138: \vskip 24pt plus -45pt minus 9pt
139: \leftline{\myhook{\sectiontitlebf #1}.}\def\myhook{}
140: \penalty10000 % impossible break
141: \smallskip}% whatever follows will add a \parskip
142:
143: \def\subsectitle#1{%
144: \vskip 0pt plus 45pt\penalty-300
145: \vskip 6pt plus -42pt minus 3pt
146: \noindent\myhook{\bf{#1}}\def\myhook{}}
147:
148: \def\subsubsectitle#1{% a \parskip is being added anyway by \noindent
149: \par\vskip 0pt plus 39pt\penalty-200
150: \vskip 0pt plus -37pt minus 1.5pt
151: \noindent\myhook{\bf{#1}}\def\myhook{}}
152:
153: \ifgphelp
154: \def\maketitle#1{#1}
155: \else
156: \def\maketitle#1{
157: \ifnum\chapno=0
158: \currentlabel. #1%
159: \else
160: \number\chapno.\currentlabel\ #1%
161: \fi}
162: \fi
163:
164: \def\misctitle#1{\par\vskip 0pt plus 66pt\penalty-400
165: \vskip 3pt plus -64pt minus 1.5pt\noindent{\bf #1}}
166:
167: % Chapter headings now occupy two lines in the manual (still only one in
168: % INSTALL.tex and gphelp-extracted bits). Syntax requirement: After calling
169: % \chapter{...} and possibly \label{...} etc, an empty line _must_ follow
170: % before the first paragraph of text or section heading begins. [GN]
171: \def\chapter#1#2\par{
172: \secno=0\global\advance\chapno by 1
173: \title{Chapter \number\chapno:}{#1}#2\noindent\ignorespaces}
174: \def\appendix#1\par{
175: \chapno=0
176: \secno=0\global\advance\appno by 1
177: \title{Appendix %
178: \ifcase\appno\or A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or K\fi:}%
179: {#1}\noindent\ignorespaces}
180: \def\section#1{
181: \subsecno=0\advance\secno by 1
182: \gdef\currentlabel{\number\secno}
183: \sectitle{\maketitle{#1}}}
184: \def\subsec#1{
185: \subsubsecno=0\advance\subsecno by 1
186: \gdef\currentlabel{\number\secno.\number\subsecno}
187: \subsectitle{\maketitle{#1}}}
188: \def\subsubsec#1{
189: \advance\subsubsecno by 1
190: \gdef\currentlabel{\number\secno.\number\subsecno.\number\subsubsecno}
191: \subsubsectitle{\maketitle{#1}}}
192:
193: \def\unix{\strut\hbox to 0pt{\hss {UNIX: }\indent}}
194: \def\unixx{\noindent\strut\hbox to 0pt{\hss {UNIX: }}}
195: \def\emacs{\strut\hbox to 0pt{\hss {EMACS: }\indent}}
196:
197: \def\sectionunix#1{\def\myhook{\unixx{}}\section{#1}}
198: \def\unixsubsecunix#1{\def\myhook{\unix{}}\subsec{#1}}
199: \def\subsecidxunix#1{\def\myhook{\unix{}}\subsecidx{#1}}
200: \def\subsubsecunix#1{\def\myhook{\unix{}}\subsubsec{#1}}
201: \def\subsubsecidxunix#1{\def\myhook{\unix{}}\subsubsecidx{#1}}
202:
203: \def\subseckbd#1{\subsec{\kbd{#1}}}
204: \def\subsecidx#1{\subsec{#1}\sidx{#1}}
205: \def\subsubsecidx#1{\subsubsec{#1}\sidx{#1}}
206: %
207: % General purpose
208: %
209: \def\begintitle{
210: \begingroup\nopagenumbers
211: \font\mine=cmb10 scaled 1893
212: \hbox{}
213: }
214: \def\authors{
215: \centerline{C. Batut, K. Belabas, D. Bernardi, H. Cohen, M. Olivier}
216: \vskip 1.truecm
217: \centerline{Laboratoire A2X, U.M.R. 9936 du C.N.R.S.}
218: \centerline{Universit\'e Bordeaux I, 351 Cours de la Lib\'eration}
219: \centerline{33405 TALENCE Cedex, FRANCE}
220: \centerline{\tt e-mail: pari@math.u-bordeaux.fr}
221: \vskip 2.truecm
222: \centerline{Home Page:}
223: \centerline{\wwwsite}
224: \vskip .5truecm
225: \centerline{Primary {\tt ftp} site:}
226: \centerline{\tt ftp://megrez.math.u-bordeaux.fr/pub/pari/}
227: \vskip 1.truecm
228: }
229: \def\endtitle{\newpage\endgroup}
230:
231: \newfam\euffam
232: \font\teneuf=eufm10
233: \textfont\euffam=\teneuf
234: \def\goth#1{{\fam\euffam#1}}
235: \def\d{\goth d}
236: \def\f{\goth f}
237: \def\p{{\bf p}}
238: \def\kbd#1{{\tt #1}}
239: \def\key#1{{\bf #1}}
240: \def\var#1{\hbox{\it #1\/}}
241: \def\fl{\var{f\kern0pt lag}}
242: \def\synx#1#2#3{\sidx{#3}The library syntax is $\key{#1}({#2})$}
243: \def\syn#1#2{\synx{#1}{#2}{#1}}
244: \def\synt#1#2{\syn{#1}{\hbox{\tt #2}}}
245:
246: \def\bs{{\char'134}}
247: \def\obr{{\char'173}}
248: \def\cbr{{\char'175}}
249: \def\pow{\^{}\hskip0pt}
250: \def\til{\raise-0.3em\hbox{\~{}}}
251: \def\b#1{{\tt \bs#1}}
252: \def\mod{\,{\rm mod}\,}
253: \def\text#1{{\rm#1}}
254: \def\teb#1{{\bf\idx{#1}}}
255: \def\tet#1{{\tt\idx{#1}}}
256: \def\dfrac#1#2{{{#1}\over{#2}}}
257: \def\binom#1#2{\pmatrix{{#1}\cr{#2}}}
258: \def\Bbb#1{{\bf #1}}
259: \def\typ#1{\kbd{t\_\kern1pt#1}}
260: \def\idxtyp#1{\sidx{t\string\_#1}}
261: \def\Z{\Bbb Z}
262: \def\Q{\Bbb Q}
263: \def\F{\Bbb F}
264: \def\R{\Bbb R}
265: \def\C{\Bbb C}
266: \def\dotfill{\leaders\hbox to 3truemm{\hfil.\hfil}\hfill}
267:
268: \def\bprog{\par\begingroup%
269: \def\q{\quad}\def\h{\hbox{}}%
270: \tt\obeylines\leavevmode\parskip=0pt plus 1pt%
271: \interlinepenalty2000\clubpenalty9000\widowpenalty9000%
272: \h}
273: % variant of same, for use with tabbing. Tabbing doesn't build paragraphs,
274: % the lines go directly into the vlist -- so we must add our own \parskip. [GN]
275: \def\bprogtabs{\par\vskip\parskip\begingroup%
276: \def\q{\quad}\def\h{\hbox{}}%
277: \tt\settabs}
278: % both to be ended with:
279: \def\eprog{\endgroup\par}
280: \catcode`\@=12
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>