1 /*
2    This file contains routines to process style files; this is done by
3    recognizing style files in the \documentstyle command.
4  */
5 
6 #include <stdio.h>
7 #include "sowing.h"
8 #include "search.h"
9 #include "tex.h"
10 
11 /*
12 extern void TXcode(), TXdfn(), TXroutine(), TXfile(), TXcomment(),
13             TXxref(), TXpxref(), TXcindex(), TXfindex(), TXprintindex(),
14             TXnop(), TXasis(), TXname(), TXdimen(), TXepsfbox(),
15             TXasisGrouped(), TXref(), TXanimation(), TXmore(), TXsavearg();
16 extern void *TXcopy();
17 */
18 
TXStyleLatexInfo(TeXlist,fin,fout)19 void TXStyleLatexInfo( TeXlist, fin, fout )
20 SRList *TeXlist;
21 FILE *fin, *fout;
22 {
23     SCSetCommentChar( 0 );
24 
25     UsingLatexinfo = 1;
26     /* printf ("Using Latexinfo Style\n" );  */
27     TXInsertName( TeXlist, "dfn", TXdfn, 0, (void *)0 );
28     TXInsertName( TeXlist, "var", TXdfn, 0, (void *)0 );
29     TXInsertName( TeXlist, "routine", TXroutine, 1, (void *)0 );
30     TXInsertName( TeXlist, "c",  TXcomment, 0, (void *)0 );
31     TXInsertName( TeXlist, "node", TXcomment, 0, (void *)0 );
32     TXInsertName( TeXlist, "xref",  TXxref, 1, (void *)0 );
33     TXInsertName( TeXlist, "pxref",  TXpxref, 1, (void *)0 );
34     TXInsertName( TeXlist, "cindex", TXcindex, 1, (void *)0 );
35     TXInsertName( TeXlist, "findex", TXfindex, 1, (void *)0 );
36     TXInsertName( TeXlist, "printindex", TXprintindex, 1, (void *)0 );
37     TXInsertName( TeXlist, "newindex", TXnop, 1, (void *)0 );
38     TXInsertName( TeXlist, "$", TXname, 0, TXCopy("$") );
39     /* No comment character in TeXinfo style */
40     SCSetCommentChar( (char) 0 );
41     CommentChar = (char) 0;
42 }
43 
TXStyleFunclist(TeXlist,fin,fout)44 void TXStyleFunclist( TeXlist, fin, fout )
45 SRList *TeXlist;
46 FILE *fin, *fout;
47 {
48     TXInsertName( TeXlist, "CDfont", TXnop, 1, (void *)0 );
49     TXInsertName( TeXlist, "CDw", TXnop, 1, (void *)0 );
50     TXInsertName( TeXlist, "CDl", TXnop, 1, (void *)0 );
51     TXInsertName( TeXlist, "CDr", TXnop, 1, (void *)0 );
52 
53     TXInsertName( TeXlist, "k", TXnop, 3, (void *)0 );
54 
55     TXInsertName( TeXlist, "CoDe", TXasisGrouped, 1, (void *)0 );
56     TXInsertName( TeXlist, "DeFn", TXasisGrouped, 1, (void *)0 );
57 
58 /* \def\StartFunclist{\catcode`\_=13\def_{{\tt \char`\_}}} */
59 }
60 
61 /* This is a fairly poor approximation */
62 #define MAX_TITLE 1000
63 #define MAX_AUTHOR 1000
64 static char TitleString[MAX_TITLE], AuthorString[MAX_AUTHOR];
TXANLTitle(e)65 void TXANLTitle( e )
66 TeXEntry *e;
67 {
68     char ReportNumber[128];
69     int  InBody = InOutputBody;
70     /* Note that this evaluates the args.  If there are commands, we want
71        them turned into the appropriate formatting commands
72      */
73     InOutputBody = 1;
74     TeXGetArg( fpin[curfile], TitleString, MAX_TITLE );
75     TeXGetArg( fpin[curfile], AuthorString, MAX_AUTHOR );
76     TeXGetArg( fpin[curfile], ReportNumber, 128 );
77     TeXGetArg( fpin[curfile], curtok, MAX_TOKEN );
78     InOutputBody = InBody;
79     TXmaketitle( e, TitleString, AuthorString );
80 }
81 
TXStyleTpage(SRList * TeXlist,FILE * fin,FILE * fout)82 void TXStyleTpage( SRList *TeXlist, FILE *fin, FILE *fout )
83 {
84     TXInsertName( TeXlist, "anltmfalse", TXnop, 0, (void *)0 );
85     TXInsertName( TeXlist, "anltmtrue", TXnop, 0, (void *)0 );
86 /*     TXInsertName( TeXlist, "newif", TXnop, 0, (void *)0 ); */
87     TXInsertName( TeXlist, "ifanltm", TXnop, 0, (void *)0 );
88     TXInsertName( TeXlist, "ANLG", TXnop, 1, (void *)0 );
89     TXInsertName( TeXlist, "ANLEDITED", TXnop, 1, (void *)0 );
90     TXInsertName( TeXlist, "ANLTitle", TXANLTitle, 4, (void *)0 );
91     TXInsertName( TeXlist, "ANLTMTitle", TXANLTitle, 4, (void *)0 );
92     TXInsertName( TeXlist, "ANLPreprintTitle", TXANLTitle, 4, (void *)0 );
93     TXInsertName( TeXlist, "tpagetopskip", TXdimen, 0, (void *) 0 );
94 }
95 
TXStyleTools(TeXlist,fin,fout)96 void TXStyleTools( TeXlist, fin, fout )
97 SRList *TeXlist;
98 FILE *fin, *fout;
99 {
100     TXInsertName( TeXlist, "Iter", TXname, 0, TXCopy("KSP") );
101     TXInsertName( TeXlist, "SMEIT", TXname, 0, TXCopy("SMEIT") );
102     TXInsertName( TeXlist, "SMEITP", TXname, 0, TXCopy("SMEIT Package") );
103     TXInsertName( TeXlist, "Solvers", TXname, 0, TXCopy("SLES") );
104     TXInsertName( TeXlist, "SolversP", TXname, 0, TXCopy("SLES Package") );
105     TXInsertName( TeXlist, "Tools", TXname, 0, TXCopy("PETSc") );
106     TXInsertName( TeXlist, "ToolsP", TXname, 0, TXCopy("PETSc Package") );
107 
108     TXInsertName( TeXlist, "setmargin", TXnop, 1, (void *)0 );
109     TXInsertName( TeXlist, "esetmargin", TXnop, 0, (void *)0 );
110 
111     TXInsertName( TeXlist, "ib", TXasisGrouped, 1, (void *)0 );
112     TXInsertName( TeXlist, "iba", TXasisGrouped, 1, (void *)0 );
113     TXInsertName( TeXlist, "ibc", TXasisGrouped, 1, (void *)0 );
114     TXInsertName( TeXlist, "ibd", TXasisGrouped, 1, (void *)0 );
115     TXInsertName( TeXlist, "ibamount", TXasisGrouped, 1, (void *)0 );
116     TXInsertName( TeXlist, "ibcamount", TXasisGrouped, 1, (void *)0 );
117     TXInsertName( TeXlist, "ibaamount", TXasisGrouped, 1, (void *)0 );
118     TXInsertName( TeXlist, "ibdamount", TXasisGrouped, 1, (void *)0 );
119 
120 /*
121   \def\usemath{\catcode`\^=7 \catcode`\_=8}
122   \def\closer{\setlength{\parskip}{0pt}}
123   */
124     TXInsertName( TeXlist, "gb", TXnop, 0, (void *)0 );
125 
126 /* \def\lb{\hfil\break} */
127 }
128 
129 
TXStyleEPSF(TeXlist,fin,fout)130 void TXStyleEPSF( TeXlist, fin, fout )
131 SRList *TeXlist;
132 FILE *fin, *fout;
133 {
134     TXInsertName( TeXlist, "epsfxsize", TXdimen, 0, (void *)0 );
135     TXInsertName( TeXlist, "epsfysize", TXdimen, 0, (void *)0 );
136     TXInsertName( TeXlist, "epsfbox", TXepsfbox, 1, (void *)0 );
137     TXInsertName( TeXlist, "epsffile", TXepsfbox, 1, (void *)0 );
138 }
139 
TXStyleAnlhtext(TeXlist,fin,fout)140 void TXStyleAnlhtext( TeXlist, fin, fout )
141 SRList *TeXlist;
142 FILE *fin, *fout;
143 {
144     TXInsertName( TeXlist, "animation", TXanimation, 3, (void *)0 );
145     TXInsertName( TeXlist, "more", TXmore, 1, (void *)0 );
146 }
147 
148 /*
149    This is for the "handout" style.
150  */
151 static char handemail[256];
152 static char handphone[256];
153 static char handcontact[256];
TXmakeinfo(e)154 void TXmakeinfo( e )
155 TeXEntry *e;
156 {
157     SCPushToken( "{Further Information}" );
158     e->ctx = (void *)1;
159     TXsection( e );
160     if (handcontact[0]) {
161 	TeXoutstr( fpout, handcontact );
162 	TXWriteStartNewLine( fpout );
163     }
164     if (handemail[0]) {
165 	TeXoutstr( fpout, handemail );
166 	TXWriteStartNewLine( fpout );
167     }
168     if (handphone[0]) {
169 	TeXoutstr( fpout, handphone );
170 	TXWriteStartNewLine( fpout );
171     }
172 }
173 
TXStyleANLHandpage(TeXlist,fin,fout)174 void TXStyleANLHandpage( TeXlist, fin, fout )
175 SRList *TeXlist;
176 FILE *fin, *fout;
177 {
178     handemail[0] = 0;
179     handphone[0] = 0;
180     handcontact[0] = 0;
181     TXInsertName( TeXlist, "contact", TXsavearg, 1, (void *)handcontact );
182     TXInsertName( TeXlist, "email", TXsavearg, 1, (void *)handemail );
183     TXInsertName( TeXlist, "phone", TXsavearg, 1, (void *)handphone );
184     TXInsertName( TeXlist, "makeinfo", TXmakeinfo, 0, (void *)0 );
185 }
186 
TXStylePsfig(TeXlist,fin,fout)187 void TXStylePsfig( TeXlist, fin, fout )
188 SRList *TeXlist;
189 FILE *fin, *fout;
190 {
191     /* extern void TXpsfig(); */
192     TXInsertName( TeXlist, "psfig", TXpsfig, 1, (void *)0 );
193 }
194