summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/texsis/base/TXSinit.tex
blob: 89f038b620833ac5aabc9b158c8e6bceb07f61f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
%% file: TXSinit.tex - Initialization - TeXsis version 2.18
%% @(#) $Id: TXSinit.tex,v 18.2 2000/05/16 22:44:04 myers Exp $
%======================================================================*
% Initialization for TeXsis:
%
% Initial settings, run-time initialization, date macros, counters,
% read site file and/or patch file, autoloading style files.
%
%======================================================================*
% (C) copyright 1991, 1993, 1999 by Eric Myers and Frank E. Paige.
% This file is a part of TeXsis.  Distribution and/or modifications
% are allowed under the terms of the LaTeX Project Public License (LPPL).
% See the file COPYING or ftp://ftp.texsis.org/texsis/LPPL
%======================================================================*
\message{Initialization.}

% Make @ signs act like letters, temporarily, to avoid conflict
% between user names and internal control sequences of plain format.
% \texsis changes this back at run time

\catcode`@=11

%==================================================*
% RUN TIME INITIALIZATION for opening files and such is now
% performed by the macros that use those files.  \texsis just
% sets up the TeXsis defaults, instead of the Plain TeX defaults.

\long\def\texsis{% initialization to TeXsis defaults
    \quoteon                            % automatic quote balancing is ON
    \Contentsfalse                      % table of contents is OFF by default
    \autoparens                         % automatic paren balancing is ON
    \ATlock                             % now @ is no longer a letter
    \resetcounters                      % reset all \global counters
    \pageno=1                           % be sure to start on page one
    \colwidth=\hsize                    % column width assumed \hsize
    \headline={\HeadLine}\headlineoffset=0.5cm % TeXsis running headlines
    \footline={\FootLine}\footlineoffset=0.5cm %    and footlines
    \twelvepoint                        % start in 12 pt type
    \doublespaced                       % and doublespaced
    \newlinechar=`\^^M                  % <CR> breaks lines in file output
% set some integer parameters:
    \uchyph=\@ne                        % allow capitalized words to be split
    \brokenpenalty=\@M                  % don't break hyphens across pages
    \widowpenalty=\@M                   % ``widow'' line penalty at end of par
    \clubpenalty=\@M                    % ``club'' line penalty at start of par
    \dimen\footins=0.5\vsize            % footnotes up at most half the page
}

% Older synonyms for \texsis, now obsolete (with variations)

\obsolete\inittexsis\texsis     \obsolete\texsisinit\texsis    
\obsolete\initexsis\texsis      \obsolete\initTeXsis\texsis    

% Detect and warn about LaTeX

\def\LaTeXwarning{\emsg{> }%
   \emsg{> Whoops! This seems to be a LaTeX file.}%
   \emsg{> Try saying `latex \jobname` instead.}%
   \emsg{> }\end}
\def\documentstyle{\LaTeXwarning}
\def\@writefile{\LaTeXwarning}

%-----------------------------------------------------------------------
% \today gives today's date (unless \dated is called to override)
 
\def\today{\number\day\ \ifcase\month\or 
    January\or February\or March\or April\or May\or June\or
    July\or August\or September\or October\or November\or December\fi
    \ \number\year}

\let\@today=\today              % save a version of \today in any case

% \dated{date} redefines \today to be whatever date you want.

\def\dated#1{\xdef\today{#1}}


% \SetDate sets \adate (American) and \edate (European) to today's date.
% Also, \hour is the current hour, \minutes is the current minutes, 
% and \runtime is the current date and time as yyyy/mm/dd hh:mm

\def\SetDate{% define current date and time stamps
  \xdef\adate{\monthname{\the\month}~\number\day, \number\year}%
  \xdef\edate{\number\day~\monthname{\the\month}~\number\year}%
  \count255=\time\divide\count255 by 60         %
  \edef\hour{\the\count255}%                    % current \hour
  \multiply\count255 by -60 \advance\count255 by\time % get minutes
  \edef\minutes{\ifnum 10>\count255 {0}\fi\the\count255}% minutes, w/ leading 0
  \edef\runtime{\the\year/\the\month/\the\day\space\hour:\minutes}}


% Counters are defined in the files where they are used, but we can
% reset them here.  We will be careful about not assuming that something
% has already been defined.  The general rule is that the counter should
% hold the value for the most recent usage, so we can refer to it later
% without having to subtract one from it.  This also allows us a way to
% determine if a given counter has been used; for example, if any
% \subsections have appeared in the current section then the count will
% be non-zero. 

\def\gzero#1{\ifx#1\undefined\relax\else\global#1=\z@\fi}

\def\resetcounters{% reset all \global TeXsis counters
  \gzero\chapternum     \gzero\sectionnum       \gzero\subsectionnum  
  \gzero\theoremnum     \gzero\lemmanum         \gzero\subsubsectionnum 
  \gzero\tabnum         \gzero\fignum           \gzero\definitionnum    
  \gzero\@BadRefs       \gzero\@BadTags         \gzero\@quoteflag  
  \gzero\@envDepth      \gzero\enumDepth        \gzero\enumcnt        
  \gzero\refnum         \gzero\eqnum            \gzero\corollarynum   
  \global\@firstrefnum=1\global\@lastrefnum=1                   
}


% Generic working file/aux file initialization:
% \@FileInit\writename=filename[Description] opens a file w/ a header

\def\@FileInit#1=#2[#3]{% generic auxiliary file initialization
   \immediate\openout#1=#2 \relax               %
   \immediate\write#1{\@comment #3 for job \jobname\space - created: \runtime}%
   \immediate\write#1{\@comment ====================================}}


%==================================================*
% \LoadSiteFile looks for the file TXSsite.tex and reads it in.
% This is only done once when INITEX is run to create the format
% file, not everytime texsis is invoked.  We first try to see if the
% file exists, and if so just load it silently.  If we can't see it we
% say something before the \input to help out in case it's not found.
% See Note 3 below in ``Autoloaded Styles'' for further explaination.

\newread\txsfile        % input for style files and run-time patches 
\let\patchfile=\txsfile

\def\LoadSiteFile{%  load the site info file TXSsite.tex
  \immediate\openin\patchfile=TXSsite.tex % try to open patch file
  \ifeof\patchfile                      % if EOF then it is not there
     \emsg{> No TXSsite.tex file found.}%
     \immediate\closein\patchfile       % close it to be sure
  \else
     \emsg{> Trying to read in TXSsite.tex...}%
     \immediate\closein\patchfile        % close it to read with \input
     \input TXSsite.tex \relax           % \input the site info
  \fi}


%==================================================*
% \ReadPatches looks to see if there is a patch file out there called 
% \TXSpatches.  If so, it is read in.  These should be run-time updates
% and small patches and such.  You can change the name (or put a path
% in the name!) by re-defining \TXSpatches in TXSsite.tex when building
% the format file. \ReadPatches is inclued in \everyjob so it's done
% whenever you run texsis.  This will not work on OZTeX or others
% which do not treat \openin and \ifeof properly.  Tough luck.
% See Note 3 below in ``Autoloaded Styles'' for further explaination.

\def\ReadPatches{%  read in a patch/mod files, if they exist 
    \immediate\openin\patchfile=\TXSpatches.tex % try to open patch file
    \ifeof\patchfile                            % if EOF then it isn't there
         \closein\patchfile                     % so just close it.
    \else\immediate\closein\patchfile           % close so to \input
       \input\TXSpatches.tex \relax             % \input the patches
    \fi
%
% ALso look to see if there is a modifications file out there called
% TXSmods.tex (or change the name in \TXSmods).  If so, read this
% in too.  This should contain personal modifications to macros and
% such, not system patches. 
%
    \immediate\openin\patchfile=\TXSmods.tex \relax% try to open mod file
    \ifeof\patchfile                            % if EOF then it isn't there
       \closein\patchfile                       % so just close it.
    \else\immediate\closein\patchfile           % close it to \input
       \input\TXSmods.tex \relax                % \input the mod file
    \fi}

%======================================================================*
% LOADED and AUTOLOADED styles:
%
% Special document layouts can be loaded from a ``style'' file as needed.
% To load a particluar layout called \foo from the file foobar.txs use:
%
%       \loadstyle\foo{foobar.txs}
%
% (This is similar to \documentstyle in LaTeX, but we consider that
% to be a reserved word for LaTeX.)  By convention TeXsis style files
% end with ``.txs'' to distinguish them from LaTeX style files.
%
% Note 1:  The style file foobar.txs must be readable at run time, 
% either from the current directory, in one of the directories 
% where your particular version of TeX looks for the \input command.
%
% Note 2:  The control sequence \foo must be redefined in the style 
% file, since the new version of \foo is invoked after the file is 
% loaded.  If it is not redefined we avoid the potential infinite loop 
% and instead print an error message.
%
% Note 3:  We have used \openin to try to determine if the file to load 
% exists, but some implementations of TeX do not look through the whole
% TEXINPUTS path for \openin (as they do for \input), and some do not
% treat \ifeof correctly in any case, so this is not a reliable test.
% We consider this a bug, but we have to live with it until those guys
% get their TeX fixed!  So meanwhile if we think that the \input might
% fail we print a message to say what we are trying to do before doing it.

\def\loadstyle#1#2{%            % load a definition for #1 from file #2
   \def#1{\@loaderr{#1}}%       % disable #1 (just in case...)
   \ATunlock                    % make @ a letter, in case it's in the file
   \immediate\openin\txsfile=#2 % try to open the file to see if it exists
   \ifeof\txsfile               % if end of file, then print a message
      \emsg{> Trying to load the style file #2...}% before trying to \input
   \fi                          %
   \closein\txsfile             % just close the file in any case
   \input #2 \relax             % load (or try to) the file with the new \def
   \ATlock                      % @ now no longer a letter
   #1}                          % now use the new definition


% It's an error if the macro #1 above was not redefined in the style
% file: [And if we didn't change the definition of #1 to something else
% we would just keep reading the (non-existent) file over and over!]

\newhelp\@utohelp{%
loadstyle: The macro named above was supposed to be defined^^M%
In the style file that was just read, but I couldn't find^^M%
the definition in that file.  Maybe you can learn something^^M%
from the comments in that style file, or find someone who knows^^M%
something about it.}

\def\@loaderr#1{% error message for \loadstyle 
   \newlinechar=`\^^M                   % ^^M is line break
   \errhelp=\@utohelp                   % longer help message
   \errmessage{No definition of \string#1 in the style file.}}


% AUTOLOAD:
%    Many of the most basic special document layouts are kept in
% style files, but we don't want the user to have to know which
% file is which.  Hence we use \autoload to tell it to automatically
% load the true definition from the style file if the layout
% (or something from inside it) is called for.
% \autoload\foo{file} defines \foo so that it's full definition 
% is read from the named file when \foo is invoked.
%
% [Note one problem: if called inside a group then the definitions
% will go away when the group ends!]

\def\autoload#1#2{%     automatically load a definition from a file
   \def#1{\loadstyle#1{#2}}}


% List of autoloaded document styles:

\autoload\PhysRev{PhysRev.txs}          % Physical Review 2-column
\autoload\PhysRevLett{PhysRev.txs}      % Physical Review Letters
\autoload\PhysRevManuscript{PhysRev.txs}% Physical Review manuscript
\autoload\nuclproc{nuclproc.txs}        % Nuclear Physics proceedings 
\autoload\NorthHolland{Elsevier.txs}    % North-Holland single column
\autoload\NorthHollandTwo{Elsevier.txs} % North-Holland double column
\autoload\WorldScientific{WorldSci.txs} % World-Scientific proceedings
\autoload\IEEEproceedings{IEEE.txs}     % IEEE conference proceedings
\autoload\IEEEreduced{IEEE.txs}         % 75% reduced IEEE proceedings
\autoload\AIPproceedings{AIP.txs}       % American Institute of Physics
\autoload\CVformat{CVformat.txs}        % sample macros for Curriculum Vitae

%  Indexing macros using MakeIndex:

\autoload\idx{index.tex}\autoload\index{index.tex}\autoload\theindex{index.tex}
\autoload\markindexfalse{index.tex}\autoload\markindextrue{index.tex}
\autoload\makeindexfalse{index.tex}\autoload\makeindextrue{index.tex}

%  Assorted tools

\autoload\spine{spine.txs}

% Other styles which you want to be automatically loaded can 
% defined in the local customization file TXSsite.tex.

% For the other basic document styles which are not loaded from style
% files see TXSfmts.tex.

%>>> EOF TXSinit.tex <<<