2
%% This is file `programs.sty',
3
%% generated with the docstrip utility.
5
%% The original source files were:
7
%% programs.dtx (with options: `style')
9
%% Copyright: Miguel Alabau, 1995 Miguel.Alabau@labri.u-bordeaux.fr
11
\NeedsTeXFormat{LaTeX2e}
12
\ProvidesPackage{programs}
15
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
16
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
17
%% Digits \0\1\2\3\4\5\6\7\8\9
18
%% Exclamation \! Double quote \" Hash (number) \#
19
%% Dollar \$ Percent \% Ampersand \&
20
%% Acute accent \' Left paren \( Right paren \)
21
%% Asterisk \* Plus \+ Comma \,
22
%% Minus \- Point \. Solidus \/
23
%% Colon \: Semicolon \; Less than \<
24
%% Equals \= Greater than \> Question mark \?
25
%% Commercial at \@ Left bracket \[ Backslash \\
26
%% Right bracket \] Circumflex \^ Underscore \_
27
%% Grave accent \` Left brace \{ Vertical bar \|
28
%% Right brace \} Tilde \~}
32
\typeout{Document style `programs.sty' <1993,1994,1995>}
34
\expandafter\ifx\csname AlreadyDefined@@Programs\endcsname\relax%
35
\expandafter\def\csname AlreadyDefined@@Programs\endcsname{}%
38
%% CONTROLLING PROGRAM INDENTATION
39
\newdimen\@@programindent
41
\def\ProgramIndent#1{\@@programindent=#1}
43
%% SURROUNDING PROGRAMS BY RULES
44
\newif\if@@surround\@@surroundfalse
45
\def\ProgramSurround{\@@surroundtrue}
46
\def\@@progline{\def\@@prgln{\rule{\linewidth}{0.1mm}}\@@prgln}
47
\def\@@noprogline{\rule{0pt}{0pt}}
50
\newlength{\@@defaultindent}
51
\settowidth{\@@defaultindent}{{\tt{}12345}}
52
\newif\if@@resetlineno \@@resetlinenotrue \newif\if@@unnumline
54
\newif\if@@CurrentProgIsUnnumbered \@@CurrentProgIsUnnumberedfalse
56
\def\NoResetProgramCounter{\@@resetlinenofalse}
58
\def\UnnumLine{\ \@@unnumlinetrue}
60
\newcounter{@@lineno}\setcounter{@@lineno}{1}
61
\def\SetProgramCounter#1{\setcounter{@@lineno}{#1}\@@resetlinenofalse}
63
\newcounter{@@dummylineno}\setcounter{@@dummylineno}{1}
65
\def\LeftMarginNumberLine{\let\@@PlaceOfNumbers\@@LeftMarginNumberLine}
66
\def\RightMarginNumberLine{\let\@@PlaceOfNumbers\@@RightMarginNumberLine}
67
\def\BothMarginsNumberLine{\let\@@PlaceOfNumbers\@@BothMarginsNumberLine}
68
\def\InBodyLeftNumberLine{\let\@@PlaceOfNumbers\@@InBodyLeftNumberLine}
69
\def\@@LeftMarginNumberLine{0} \def\@@RightMarginNumberLine{1}
70
\def\@@BothMarginsNumberLine{2}
71
\def\@@InBodyLeftNumberLine{3}
74
%% PROGRAM DEFAULT FONTS
75
\def\@@DefaultProgramFont{0}
76
\def\ttProgram{\def\@@DefaultProgramFont{0}\def@@astyped\def@@program}
77
\def\rmProgram{\def\@@DefaultProgramFont{1}\def@@astyped\def@@program}
78
\def\emProgram{\def\@@DefaultProgramFont{2}\def@@astyped\def@@program}
79
\def\ProgramDefaultFont{\ttProgram}
81
%% THE REAL ENVIRONMENT
82
{\catcode`\ =\active\gdef\@@vobeyspaces{\catcode`\ \active\let \@@xobeysp}}
83
\def\@@xobeysp{\leavevmode\penalty10000\ }
89
\leftskip\@totalleftmargin%
92
\parfillskip\@flushglue%
95
\def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par}%
97
\ifcase\@@DefaultProgramFont \tt\or \rm\or \em\else \tt\fi
98
\catcode``=13 \@noligs%
99
\let\do\@makeother \do\ \do\^^K\do\^^A%
100
\frenchspacing\@@vobeyspaces%
101
\noindent\hspace{\parindent}%
102
\if@@surround\@@progline\else\@@noprogline\fi%
107
\noindent\hspace{\parindent}%
108
\if@@surround\@@progline\else\@@noprogline\fi%
113
%% META-COMMANDS FOR DEFINING NEW PROGRAM ENVIRONMENTS
114
\def\NewProgram#1#2{\@@newprog{#1}{#2}}
115
\def\RenewProgram#1#2{\@@newprog{#1}{#2}}
118
\begingroup\def\@@tempa{\@nameuse{#2}}%
119
\def\@@tempb{\baselinestretch}\def\baselinestretch{1}%
120
\@ifundefined{@@tempa}{\normalsize}{\@@tempa}%
121
\def@@astyped\@@astyped%
122
\@ifnextchar[{\@@xnewprog}{\@@xnewprog[\@@programindent]}%
126
\if@@CurrentProgIsUnnumbered \relax%
128
\addtocounter{@@lineno}{1}%
132
\let\baselinestretch=\@@tempb\endgroup%
133
\global\@@resetlinenotrue%
134
\global\ProgramDefaultFont%
135
\global\@@surroundfalse%
137
\@namedef{f#1}##1{\@nameuse{#1}*\par\input##1\@nameuse{end#1}}%
138
\@namedef{l#1}##1{\@nameuse{#1}\par\input##1\@nameuse{end#1}}%
141
\newlength{\@@numlinelength}
142
\def\@@xnewprog[#1]{%
144
\@@CurrentProgIsUnnumberedtrue
145
\setcounter{@@dummylineno}{0}%
148
\refstepcounter{@@dummylineno}%
150
\noindent\hspace{#1}}%
153
\@@CurrentProgIsUnnumberedfalse
155
\setcounter{@@lineno}{0}%
157
\addtocounter{@@lineno}{-1}%
162
\ifx \@@PlaceOfNumbers\@@InBodyLeftNumberLine%
163
\hspace{\@@defaultindent}%
167
\refstepcounter{@@lineno}%
168
\ifx \@@PlaceOfNumbers\@@LeftMarginNumberLine%
169
\llap{{\rm\the@@lineno\ \ }}%
170
\else \ifx \@@PlaceOfNumbers\@@RightMarginNumberLine%
171
\noindent\hspace{\columnwidth}%
172
\rlap{{\rm\ \ \the@@lineno}}%
173
\noindent\hspace{-\columnwidth}%
174
\else \ifx \@@PlaceOfNumbers\@@BothMarginsNumberLine%
175
\noindent\hspace{\columnwidth}%
176
\rlap{{\rm\ \ \the@@lineno}}%
177
\noindent\hspace{-\columnwidth}%
178
\llap{{\rm\the@@lineno\ \ }}%
179
\else \ifx \@@PlaceOfNumbers\@@InBodyLeftNumberLine%
180
\hspace{\@@defaultindent}%
182
\llap{{\rm\the@@lineno\ \ }}%
184
\llap{{\rm\the@@lineno\ \ }}%
186
\fi\@@unnumlinefalse%
187
\noindent\hspace{#1}%
192
%% PREDEFINED ENVIRONMENTS AND COMMANDS
194
\NewProgram{program}{normalsize}
195
\NewProgram{programl}{large}
196
\NewProgram{programL}{Large}
197
\NewProgram{programs}{small}
198
\NewProgram{programf}{footnotesize}
199
\NewProgram{programsc}{scriptsize}
200
\NewProgram{programt}{tiny}
204
%% OLD MACRO NAMES PRESENT HERE FOR COMPATIBILITY REASONS
205
\let\newprogram=\NewProgram \let\renewprogram=\RenewProgram
206
\let\noresetprogramcounter=\NoResetProgramCounter
207
\let\programindent=\ProgramIndent
208
\let\programsurround=\ProgramSurround
209
\let\setprogramcounter=\SetProgramCounter \let\unnumline=\UnnumLine
210
\let\BothMarginNumberLine=\BothMarginsNumberLine
215
%% End of file `programs.sty'.