1 | % \iffalse &pdflatex ltxdoc klootch |
---|
2 | % ltxdocext.dtx: package to extend the ltxdoc class of standard LaTeX |
---|
3 | % Copyright (c) 1999 Arthur Ogawa |
---|
4 | % |
---|
5 | % Disclaimer |
---|
6 | % This file is distributed WITHOUT ANY WARRANTY; |
---|
7 | % without even the implied warranty of |
---|
8 | % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
---|
9 | % ReadMe |
---|
10 | % For the documentation and more detailed instructions for |
---|
11 | % installation, typeset this document with \LaTeX. |
---|
12 | % \fi |
---|
13 | % \CheckSum{938} |
---|
14 | %% \CharacterTable |
---|
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 \~}% |
---|
29 | % |
---|
30 | % \iffalse ltxdoc klootch |
---|
31 | %%% @LaTeX-file{ |
---|
32 | %%% filename = "ltxdocext.dtx", |
---|
33 | %%% version = "0.0a0", |
---|
34 | %%% date = "1999/06/04", |
---|
35 | %%% time = "11:23:00 GMT", |
---|
36 | %%% checksum = "929", |
---|
37 | %%% author = "Arthur Ogawa (mailto:ogawa@teleport.com)", |
---|
38 | %%% copyright = "Copyright (C) 1999 Arthur Ogawa, |
---|
39 | %%% all rights reserved. Copying of this file is |
---|
40 | %%% authorized only if either: |
---|
41 | %%% (1) you make absolutely no changes to your copy, |
---|
42 | %%% including name; OR |
---|
43 | %%% (2) if you do make changes, you first rename it |
---|
44 | %%% to some other name.", |
---|
45 | %%% address = "Arthur Ogawa, |
---|
46 | %%% USA", |
---|
47 | %%% telephone = "", |
---|
48 | %%% FAX = "", |
---|
49 | %%% email = "ogawa@teleport.com", |
---|
50 | %%% codetable = "ISO/ASCII", |
---|
51 | %%% keywords = "latex, ltxdoc", |
---|
52 | %%% supported = "yes", |
---|
53 | %%% abstract = "extensions to the ltxdoc class", |
---|
54 | %%% docstring = "The checksum field above generated by ltxdoc", |
---|
55 | %%% } |
---|
56 | % \fi |
---|
57 | % |
---|
58 | % \iffalse ltxdoc klootch |
---|
59 | % The following references the \file{00readme.txt} file, |
---|
60 | % which contains basic information about this package. |
---|
61 | % The contents of this file are generated when |
---|
62 | % you typeset the programmer's documentation. |
---|
63 | % Search on "{filecontents*}{00readme.txt}" to locate it. |
---|
64 | % \fi\input{00readme.txt}% |
---|
65 | % |
---|
66 | % \subsection{Bill of Materials} |
---|
67 | % |
---|
68 | % Following is a list of the files in this distribution arranged |
---|
69 | % according to provenance. |
---|
70 | % |
---|
71 | % \subsubsection{Primary Source}% |
---|
72 | % One single file generates all. |
---|
73 | %\begin{verbatim} |
---|
74 | %ltxdocext.dtx |
---|
75 | %\end{verbatim} |
---|
76 | % |
---|
77 | % \subsubsection{Generated by \texttt{latex ltxdocext.dtx}}% |
---|
78 | % Typesetting the source file under \LaTeX\ |
---|
79 | % generates the readme and the installer. |
---|
80 | %\begin{verbatim} |
---|
81 | %00readme.txt ltxdocext.ins |
---|
82 | %\end{verbatim} |
---|
83 | % |
---|
84 | % \subsubsection{Generated by \texttt{tex ltxdocext.ins}}% |
---|
85 | % Typesetting the installer generates |
---|
86 | % the package files. |
---|
87 | %\begin{verbatim} |
---|
88 | %ltxdocext.sty acrofont.sty |
---|
89 | %\end{verbatim} |
---|
90 | % |
---|
91 | % \subsubsection{Documentation}% |
---|
92 | % The following are the online documentation: |
---|
93 | % \begin{verbatim} |
---|
94 | %ltxdocext.pdf |
---|
95 | % \end{verbatim} |
---|
96 | % |
---|
97 | % \subsubsection{Auxiliary}% |
---|
98 | % The following are auxiliary files generated |
---|
99 | % in the course of running \LaTeX: |
---|
100 | % \begin{verbatim} |
---|
101 | %ltxdocext.aux ltxdocext.idx ltxdocext.ind ltxdocext.log ltxdocext.toc |
---|
102 | % \end{verbatim} |
---|
103 | % |
---|
104 | % \section{Code common to all modules}% |
---|
105 | % |
---|
106 | % The following may look a bit klootchy, but we |
---|
107 | % want to require only one place in this file |
---|
108 | % where the version number is stated, |
---|
109 | % and we also want to ensure that the version |
---|
110 | % number is embedded into every generated file. |
---|
111 | % |
---|
112 | % Now we declare that |
---|
113 | % these files can only be used with \LaTeXe. |
---|
114 | % An appropriate message is displayed if |
---|
115 | % a different \TeX{} format is used. |
---|
116 | % \begin{macrocode} |
---|
117 | %<*doc|extensions|fonts> |
---|
118 | \NeedsTeXFormat{LaTeX2e}[1995/12/01]% |
---|
119 | %</doc|extensions|fonts> |
---|
120 | % \end{macrocode} |
---|
121 | % As desired, the following modules all |
---|
122 | % take common version information: |
---|
123 | % \begin{macrocode} |
---|
124 | %<extensions>\ProvidesFile{ltxdocext.sty}% |
---|
125 | %<fonts>\ProvidesFile{acrofont.sty}% |
---|
126 | %<*doc> |
---|
127 | \expandafter\ProvidesFile\expandafter{\jobname.dtx}% |
---|
128 | %</doc> |
---|
129 | % \end{macrocode} |
---|
130 | % |
---|
131 | % The following line contains, for once and for all, |
---|
132 | % the version and date information. |
---|
133 | % By various means, this information is reproduced |
---|
134 | % consistently in all generated files and in the |
---|
135 | % typeset documentation. |
---|
136 | % \begin{macrocode} |
---|
137 | [1999/06/04 0.0a0 ltxdoc extensions package]% \fileversion |
---|
138 | % \end{macrocode} |
---|
139 | % |
---|
140 | % |
---|
141 | % \section{The driver module \texttt{doc}} |
---|
142 | % |
---|
143 | % This module, consisting of the present section, |
---|
144 | % typesets the programmer's documentation, |
---|
145 | % generating the \file{.ins} installer and \file{00readme.txt} as required. |
---|
146 | % |
---|
147 | % Because the only uncommented-out lines of code at the beginning of |
---|
148 | % this file constitute the \file{doc} module itself, |
---|
149 | % we can simply typeset the \file{.dtx} file directly, |
---|
150 | % and there is thus rarely any need to |
---|
151 | % generate the ``doc'' {\sc docstrip} module. |
---|
152 | % Module delimiters are nonetheless required so that |
---|
153 | % this code does not find its way into the other modules. |
---|
154 | % |
---|
155 | % The \enve{document} command concludes the typesetting run. |
---|
156 | % |
---|
157 | % \begin{macrocode} |
---|
158 | %<*doc> |
---|
159 | % \end{macrocode} |
---|
160 | % |
---|
161 | % \subsection{Stubs for \file{ltxdocext.sty} and \file{acrofont.sty}} |
---|
162 | % |
---|
163 | % This \env{filecontents} environment generates stub files |
---|
164 | % \file{ltxdocext.sty} and \file{acrofont.sty}. |
---|
165 | % Stubs are needed because the documentation for this package |
---|
166 | % requires them and they might not yet be present. |
---|
167 | % |
---|
168 | % A real version of these files will be generated |
---|
169 | % when you typeset \file{ltxdocext.ins}, at which point |
---|
170 | % the stub file will be overwritten (you will have to give {\sc docstrip} |
---|
171 | % permission to do this). |
---|
172 | % \begin{macrocode} |
---|
173 | \begin{filecontents}{ltxdocext.sty} |
---|
174 | % Stub version of ltxdocext.sty |
---|
175 | \end{filecontents} |
---|
176 | \begin{filecontents}{acrofont.sty} |
---|
177 | % Stub version of acrofont.sty |
---|
178 | \end{filecontents} |
---|
179 | % \end{macrocode} |
---|
180 | % |
---|
181 | % \subsection{The Preamble} |
---|
182 | % The programmers documentation is formatted |
---|
183 | % with the \classname{ltxdoc} class with local customizations, |
---|
184 | % and with the usual code line indexing. |
---|
185 | % \begin{macrocode} |
---|
186 | \documentclass[draft]{ltxdoc} |
---|
187 | \RequirePackage{ltxdocext}% |
---|
188 | \RequirePackage{acrofont}% |
---|
189 | \CodelineIndex\EnableCrossrefs |
---|
190 | % \end{macrocode} |
---|
191 | % |
---|
192 | % \subsubsection{Docstrip and info directives} |
---|
193 | % We use so many {\sc docstrip} modules that we set the |
---|
194 | % \texttt{StandardModuleDepth} counter to 1. |
---|
195 | % \begin{macrocode} |
---|
196 | \setcounter{StandardModuleDepth}{1} |
---|
197 | % \end{macrocode} |
---|
198 | % The following command retrieves the date and version information |
---|
199 | % from this file. |
---|
200 | % \begin{macrocode} |
---|
201 | \expandafter\GetFileInfo\expandafter{\jobname.dtx}% |
---|
202 | % \end{macrocode} |
---|
203 | % |
---|
204 | % |
---|
205 | % \subsection{The installer file} |
---|
206 | % |
---|
207 | % The installer \file{ltxdocext.ins} appears here. |
---|
208 | % If you have retrieved the standard distribution of this package, |
---|
209 | % the installer file is already on your filesystem. |
---|
210 | % If you are bootstrapping, |
---|
211 | % the first typesetting of the \file{.dtx} file |
---|
212 | % will cause the installer to be generated. |
---|
213 | % |
---|
214 | % The following modules are used to direct |
---|
215 | % {\sc docstrip} in generating the external files: |
---|
216 | % \begin{center} |
---|
217 | % \begin{tabular}{lll} |
---|
218 | % \textbf{Module}&\textbf{File}&\textbf{Description}\\ |
---|
219 | % doc &\file{ltxdocext.drv}&driver for programmer's documantation\\ |
---|
220 | % extensions&\file{ltxdocext.sty}<xdoc extensions package\\ |
---|
221 | % fonts &\file{acrofont.sty} &package to use only Acrobat fonts |
---|
222 | % \end{tabular} |
---|
223 | % \end{center} |
---|
224 | % |
---|
225 | % \begin{macrocode} |
---|
226 | \begin{filecontents}{ltxdocext.ins} |
---|
227 | %% This file will generate documentation and runtime files |
---|
228 | %% from ltxdocext.dtx when run through LaTeX or TeX. |
---|
229 | \input docstrip |
---|
230 | \preamble |
---|
231 | |
---|
232 | This is a generated file; |
---|
233 | altering it directly is inadvisable; |
---|
234 | instead, modify the original source file. |
---|
235 | See the URL in the file 00readme.txt. |
---|
236 | |
---|
237 | Copyright notice. |
---|
238 | |
---|
239 | These files are distributed |
---|
240 | WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
241 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
---|
242 | |
---|
243 | \endpreamble |
---|
244 | \keepsilent |
---|
245 | \generate{% |
---|
246 | \file{ltxdocext.drv}{\from{ltxdocext.dtx}{doc}}% |
---|
247 | \file{ltxdocext.sty}{\from{ltxdocext.dtx}{extensions}}% |
---|
248 | \file{acrofont.sty}{\from{ltxdocext.dtx}{fonts}}% |
---|
249 | }% |
---|
250 | \ifToplevel{ |
---|
251 | \Msg{***********************************************************} |
---|
252 | \Msg{*} |
---|
253 | \Msg{* To finish the installation, please move} |
---|
254 | \Msg{* ltxdocext.sty} |
---|
255 | \Msg{* into a directory searched by TeX.} |
---|
256 | \Msg{*} |
---|
257 | \Msg{* To produce the user documentation, |
---|
258 | run ltxdocext.tex through LaTeX.} |
---|
259 | \Msg{*} |
---|
260 | \Msg{* To produce the programmer documentation, |
---|
261 | run ltxdocext.dtx through LaTeX.} |
---|
262 | \Msg{*} |
---|
263 | \Msg{* Happy TeXing} |
---|
264 | \Msg{***********************************************************} |
---|
265 | } |
---|
266 | \endbatchfile |
---|
267 | \end{filecontents} |
---|
268 | % \end{macrocode} |
---|
269 | % Note that, because all of the files generated by the installer |
---|
270 | % are part of the standard distribution, it will |
---|
271 | % be necessary to run the installer only when bootstrapping |
---|
272 | % (or, of course, during development). |
---|
273 | % Note, too, that it is rare to generate the \file{doc} |
---|
274 | % module because it suffices to simply typeset the \file{.dtx} file itself. |
---|
275 | % |
---|
276 | % \subsection{The ``Read Me'' File} |
---|
277 | % As promised above, here is the contents of the |
---|
278 | % ``Read Me'' file. That file serves a double purpose, |
---|
279 | % since it also constitutes the beginining of the |
---|
280 | % programmer's documentation. What better thing, after |
---|
281 | % all, to have appear at the beginning of the |
---|
282 | % typeset documentation? |
---|
283 | % |
---|
284 | % A good discussion of how to write a ReadMe file can be found in |
---|
285 | % Engst, Tonya, ``Writing a ReadMe File? Read This'' |
---|
286 | % \emph{MacTech} October 1998, p. 58. |
---|
287 | % |
---|
288 | % Note the appearance of the |
---|
289 | % \cmd\StopEventually\ command, which marks the |
---|
290 | % dividing line between the user documentation |
---|
291 | % and the programmer documentation. |
---|
292 | % |
---|
293 | % The usual user will not be asked to |
---|
294 | % do a full build, not to speak |
---|
295 | % of the bootstrap. |
---|
296 | % Instructions for carrying these processes |
---|
297 | % begin the programmer's manual. |
---|
298 | % |
---|
299 | % \begin{macrocode} |
---|
300 | \begin{filecontents*}{00readme.txt} |
---|
301 | \title{% |
---|
302 | Extensions to the \classname{ltxdoc} class% |
---|
303 | \thanks{% |
---|
304 | This file has version number \fileversion, |
---|
305 | last revised \filedate.% |
---|
306 | % For version number and date, search on "\fileversion" in the .dtx file, |
---|
307 | % or see the end of the 00readme.txt file. |
---|
308 | }% |
---|
309 | }% |
---|
310 | |
---|
311 | \author{% |
---|
312 | Arthur Ogawa (\texttt{mailto:ogawa@teleport.com}), |
---|
313 | \fileversion\\Copyright (C) 1999 Arthur Ogawa |
---|
314 | }% |
---|
315 | \maketitle |
---|
316 | |
---|
317 | This file embodies the \classname{ltxdocext} package, |
---|
318 | the implementation and its user documentation. |
---|
319 | |
---|
320 | The distribution point for this work is |
---|
321 | \url{ftp://ftp.teleport.com/users/ogawa/macros/latex/contrib/supported/ltxdocext...}, |
---|
322 | which contains fully unpacked, prebuilt runtime files and documentation. |
---|
323 | |
---|
324 | To use this document class, you must have a working |
---|
325 | \TeX\ installation equipped with \LaTeXe\ |
---|
326 | and possibly pdftex and Adobe Acrobat Reader or equivalent. |
---|
327 | |
---|
328 | To install, retrieve the distribution, |
---|
329 | unpack it into a directory on the target computer, |
---|
330 | and move the files \file{ltxdocext.sty} and \file{acrofont.sty} |
---|
331 | into a location in your filesystem where they will be found by \LaTeX. |
---|
332 | |
---|
333 | If you will be using the \classname{acrofont} package, you must |
---|
334 | also install the virtual fonts |
---|
335 | \file{zpsynocmrv}, \file{zptmnocmr}, |
---|
336 | \file{zptmnocmrm}, and \file{zpzcnocmry}. |
---|
337 | The corresponding \file{.tfm}, \file{.vf}, and \file{.vpl} |
---|
338 | files are part of this distribution. |
---|
339 | |
---|
340 | To use, read the user documentation \file{ltxdocext.pdf}. |
---|
341 | The \file{.dtx} file, \file{ltxdocext.dtx}, constitutes |
---|
342 | in itself an instance of use of the \classname{ltxdocext} |
---|
343 | package and the \classname{acrofont} package. |
---|
344 | |
---|
345 | \tableofcontents |
---|
346 | |
---|
347 | \section{Processing Instructions} |
---|
348 | |
---|
349 | The package files \file{ltxdocext.sty} and \file{acrofont.sty} |
---|
350 | are generated from this file, \file{ltxdocext.dtx}, |
---|
351 | via the {\sc docstrip} facility of \LaTeX |
---|
352 | via |tex ltxdocext.ins|. |
---|
353 | The typeset documentation that you are now reading is generated from |
---|
354 | the same file by typesetting it with \LaTeX\ or pdftex |
---|
355 | via |latex ltxdocext.dtx| or |pdflatex ltxdocext.dtx|. |
---|
356 | |
---|
357 | \subsection{Build Instructions} |
---|
358 | |
---|
359 | You may bootstrap this suite of files solely from \file{ltxdocext.dtx}. |
---|
360 | Prepare by installing \LaTeXe\ (and either tex or pdftex) on your computer, |
---|
361 | then carry out the following steps: |
---|
362 | \begin{enumerate} |
---|
363 | \item |
---|
364 | Within an otherwise empty directory, |
---|
365 | typeset \file{ltxdocext.dtx} with \LaTeX\ or pdflatex; |
---|
366 | you will obtain the typeset documentation you are now reading, |
---|
367 | along with |
---|
368 | the installer \file{ltxdocext.ins}, |
---|
369 | and the file \file{00readme.txt}. |
---|
370 | \item |
---|
371 | Now typeset \file{ltxdocext.ins}, |
---|
372 | thereby generating the package file \file{ltxdocext.sty}, |
---|
373 | and the package file \file{acrofont.sty}. |
---|
374 | Make sure that {\sc docstrip} receives permission |
---|
375 | to overwrite existing versions of these packages. |
---|
376 | \item |
---|
377 | Install \classname{ltxdocext.sty} and \classname{acrofont.sty} |
---|
378 | by moving them to a location |
---|
379 | in your filesystem where they will be found by \LaTeX. |
---|
380 | \item |
---|
381 | Now complete the typesetting of the documentation by |
---|
382 | retypesetting \file{ltxdocext.dtx}. |
---|
383 | Note: you will have to run \LaTeX\ twice, then \file{makeindex}, then |
---|
384 | \LaTeX\ again in order to obtain a valid index and table of contents. |
---|
385 | \end{enumerate} |
---|
386 | \end{filecontents*} |
---|
387 | % \end{macrocode} |
---|
388 | % |
---|
389 | % \subsection{The Document Body} |
---|
390 | % |
---|
391 | % Here is the document body, containing only a |
---|
392 | % \cmd\DocInput\ directive---referring to this very file. |
---|
393 | % This very cute self-reference is a common \classname{ltxdoc} idiom. |
---|
394 | % \begin{macrocode} |
---|
395 | \begin{document}% |
---|
396 | \expandafter\DocInput\expandafter{\jobname.dtx}% |
---|
397 | % ^^A\PrintChanges |
---|
398 | \end{document} |
---|
399 | % \end{macrocode} |
---|
400 | % |
---|
401 | % \begin{macrocode} |
---|
402 | %</doc> |
---|
403 | % \end{macrocode} |
---|
404 | % |
---|
405 | % \section{Using the \classname{ltxdoc} and \classname{acrofont} packages}% |
---|
406 | % These packages are an adjunct to the |
---|
407 | % standard \LaTeX\ \classname{ltxdoc} class and may be |
---|
408 | % simply invoked as follows: |
---|
409 | %\begin{verbatim} |
---|
410 | %\documentclass[draft]{ltxdoc} |
---|
411 | %\RequirePackage{ltxdocext}% |
---|
412 | %\RequirePackage{acrofont}% |
---|
413 | %\CodelineIndex\EnableCrossrefs |
---|
414 | %\end{verbatim} |
---|
415 | % |
---|
416 | % Your document should simply cleave to the standards of the |
---|
417 | % \classname{ltxdoc} class, with extensions and alterations as noted. |
---|
418 | % |
---|
419 | % \subsection{Extensions to the \classname{ltxdoc} class}% |
---|
420 | % |
---|
421 | % \subsubsection{Extensions to the \env{verbatim} environment and \cs{verb} command}% |
---|
422 | % |
---|
423 | % The delimiters \verb$<<$ and \verb$>>$ within the scope of the verbatim environment |
---|
424 | % or within the argument of the \cmd\verb\ command produce |
---|
425 | % italics surrounded by angle brackets. |
---|
426 | % This typographic convention usually indicates |
---|
427 | % \emph{metalanguage}, i.e., a placeholder. |
---|
428 | % |
---|
429 | % To obtain the angle bracket character per se, |
---|
430 | % double the character, viz., ``\verb$the delimiter \verb+<<<<+$''. |
---|
431 | % |
---|
432 | % \subsubsection{The -\texttt{matter} Commands Work} |
---|
433 | % The sectioning commands \cmd\frontmatter, \cmd\mainmatter, and \cmd\backmatter |
---|
434 | % of the standard \LaTeX\ \classname{book} class are operative in the |
---|
435 | % \classname{ltxdoc} class. |
---|
436 | % |
---|
437 | % \subsubsection{The \cs{GetFileInfo} command}\label{sec:GetFileInfo} |
---|
438 | % You can use the \cmd\GetFileInfo\ command to extract |
---|
439 | % the date, version, and file info of a file which has registered itself |
---|
440 | % via the \cmd\ProvidesFile\ or \cmd\ProvidesClass\ command |
---|
441 | % (employing the optional argument thereto). |
---|
442 | % |
---|
443 | % For instance, if your document contains the following: |
---|
444 | %\begin{verbatim} |
---|
445 | %\RequirePackage{ltxdocext}% |
---|
446 | %\GetFileInfo{ltxdocext.sty}% |
---|
447 | %\end{verbatim} |
---|
448 | % then the following control sequence names will have |
---|
449 | % a value corresponding to that package's \cmd\ProvidesFile\ |
---|
450 | % command: |
---|
451 | % \cmd\filedate: the file's date, |
---|
452 | % \cmd\fileversion: the file's version, and |
---|
453 | % \cmd\fileinfo: the file's info. |
---|
454 | % |
---|
455 | % \subsubsection{Self-Indexing Commands}% |
---|
456 | % Certain commands automatically produce an index entry |
---|
457 | % (or several related entries) according to the meaning. |
---|
458 | % |
---|
459 | % \begin{unnumtable} |
---|
460 | % \begin{tabular}{ll} |
---|
461 | % meta-text &\cmd\m\arg{text}\\ |
---|
462 | % command &\cmd\cmd\cmd\csname\\ |
---|
463 | % environment name &\cmd\env\arg{name}\\ |
---|
464 | % \cmd\begin\verb`{foo}`&\cmd\envb\arg{foo}\\ |
---|
465 | % \cmd\end\verb`{foo}` &\cmd\enve\arg{foo}\\ |
---|
466 | % argument &\cmd\arg\arg{name}\\ |
---|
467 | % optional &\cmd\oarg\arg{name}\\ |
---|
468 | % filename &\cmd\file\arg{name}\\ |
---|
469 | % url &\cmd\url\arg{name}\\ |
---|
470 | % document class &\cmd\classname\arg{name}\\ |
---|
471 | % document substyle &\cmd\substyle\arg{name}\\ |
---|
472 | % class option &\cmd\classoption\arg{name} |
---|
473 | % \end{tabular} |
---|
474 | % \end{unnumtable} |
---|
475 | % |
---|
476 | % \subsubsection{Unnumbered Tables}% |
---|
477 | % |
---|
478 | % When your documentation requires the use of an unnumbered table, |
---|
479 | % use the \env{unnumtable} environment: |
---|
480 | % \begin{verbatim} |
---|
481 | %\begin{unnumtable} |
---|
482 | %\begin{tabular}{ll} |
---|
483 | %<table rows> |
---|
484 | %\end{tabular} |
---|
485 | %\end{unnumtable} |
---|
486 | % \end{verbatim} |
---|
487 | % |
---|
488 | % \subsubsection{Structuring Tables}% |
---|
489 | % The commands \cmd\toprule, \cmd\colrule, and \cmd\botrule |
---|
490 | % allow you to mark the beginning of the column heads |
---|
491 | % the beginning of the table body, and the end of |
---|
492 | % the table body, respectively. |
---|
493 | % In context, |
---|
494 | % \begin{verbatim} |
---|
495 | %\begin{tabular}{ll} |
---|
496 | %\toprule |
---|
497 | %<table head rows> |
---|
498 | %\colrule |
---|
499 | %<table rows> |
---|
500 | %\botrule |
---|
501 | %\end{tabular} |
---|
502 | % \end{verbatim} |
---|
503 | % |
---|
504 | % \subsubsection{A Sectioning Command Below \cs{subsection}}% |
---|
505 | % The \cmd\subsubsection\ command is defined. |
---|
506 | % |
---|
507 | % |
---|
508 | % \subsection{Alterations to the \classname{ltxdoc} class}% |
---|
509 | % The following involve no new markup, but they |
---|
510 | % do change the appearance of your formatted documentation: |
---|
511 | % \begin{enumerate} |
---|
512 | % \item |
---|
513 | % Using the \classname{acrofont} package causes your |
---|
514 | % document to be formatted using the standard |
---|
515 | % Acrobat fonts to the greatest extent possible. |
---|
516 | % This means that for most documents, Computer Modern |
---|
517 | % is not used at all. |
---|
518 | % Math that unavoidable must use CM still exists, however. |
---|
519 | % \item |
---|
520 | % An index will be produced at the end of the document |
---|
521 | % without your needing to explicitly mark it up, and |
---|
522 | % it will have an entry in the TOC. |
---|
523 | % \item |
---|
524 | % The \env{quote} environment has a slightly smaller left margin. |
---|
525 | % \item |
---|
526 | % Array columns are set tight by default. |
---|
527 | % \item |
---|
528 | % A host of \cmd\DoNotIndex\ directives are invoked. |
---|
529 | % I intend this list to grow to encompass |
---|
530 | % even more commands. Send me your suggestions. |
---|
531 | % \end{enumerate} |
---|
532 | % |
---|
533 | % |
---|
534 | % |
---|
535 | %\StopEventually{} |
---|
536 | % |
---|
537 | % \section{Extensions to the ltxdoc class} |
---|
538 | % The \file{extensions} {\sc docstrip} module comprises the |
---|
539 | % package \classname{ltxdocext.sty}, which provides extensions |
---|
540 | % to the standard \LaTeX\ \classname{ltxdoc} class. |
---|
541 | % |
---|
542 | % \subsection{Beginning of the \file{extensions} {\sc docstrip} module} |
---|
543 | % \begin{macrocode} |
---|
544 | %<*extensions> |
---|
545 | \def\class@name{ltxdocext}% |
---|
546 | \expandafter\PackageInfo\expandafter{\class@name}{% |
---|
547 | An extension to the \protect\LaTeXe\space ltxdoc class |
---|
548 | by A. Ogawa (ogawa@teleport.com)% |
---|
549 | }% |
---|
550 | % \end{macrocode} |
---|
551 | % |
---|
552 | % \subsection{Incorporate \classname{ltxguide.cls} extensions} |
---|
553 | % |
---|
554 | % Code extracted from \classname{ltxguide.cls}, by Alan Jeffrey. |
---|
555 | % ``This code stolen from \classname{ltxguide.cls}: |
---|
556 | % Some hacks with verbatim... NB: this would be better done with the |
---|
557 | % verbatim package, but this document has to run on any \LaTeX |
---|
558 | % installation.'' |
---|
559 | % \begin{macrocode} |
---|
560 | \RequirePackage{verbatim}% |
---|
561 | \let\o@verbatim\verbatim |
---|
562 | \def\verbatim{% |
---|
563 | \ifhmode\unskip\par\fi |
---|
564 | % \nopagebreak % Overridden by list penalty |
---|
565 | \ifx\@currsize\normalsize |
---|
566 | \small |
---|
567 | \fi |
---|
568 | \o@verbatim |
---|
569 | }% |
---|
570 | % \end{macrocode} |
---|
571 | % |
---|
572 | % Here we extend the font-setting command to include making \texttt{<>} active |
---|
573 | % (i.e., adjusting the input encoding). |
---|
574 | % \begin{macrocode} |
---|
575 | \renewcommand \verbatim@font {% |
---|
576 | \normalfont \ttfamily |
---|
577 | \catcode`\<=\active |
---|
578 | \catcode`\>=\active |
---|
579 | }% |
---|
580 | % \end{macrocode} |
---|
581 | % |
---|
582 | % Make \verb$|...|$ a synonym for \cmd\verb\verb$|...|$. |
---|
583 | % \begin{macrocode} |
---|
584 | \RequirePackage{shortvrb} |
---|
585 | \AtBeginDocument{% |
---|
586 | \MakeShortVerb{\|}% |
---|
587 | }% |
---|
588 | % \end{macrocode} |
---|
589 | % |
---|
590 | % Make active bracket characters produce italics surrounded by angle brackets |
---|
591 | % (used in \env{verbatim} and \cmd\verb). |
---|
592 | % \verb|<<| produces a less-than, and \verb|>>| produces a greater-than. |
---|
593 | % \begin{macrocode} |
---|
594 | \begingroup |
---|
595 | \catcode`\<=\active |
---|
596 | \catcode`\>=\active |
---|
597 | \gdef<{\@ifnextchar<\@lt\@meta} |
---|
598 | \gdef>{\@ifnextchar>\@gt\@gtr@err} |
---|
599 | \gdef\@meta#1>{\m{#1}} |
---|
600 | \gdef\@lt<{\char`\<} |
---|
601 | \gdef\@gt>{\char`\>} |
---|
602 | \endgroup |
---|
603 | \def\@gtr@err{% |
---|
604 | \ClassError{ltxguide}{% |
---|
605 | Isolated \protect>% |
---|
606 | }{% |
---|
607 | In this document class, \protect<...\protect> |
---|
608 | is used to indicate a parameter.\MessageBreak |
---|
609 | I've just found a \protect> on its own. |
---|
610 | Perhaps you meant to type \protect>\protect>? |
---|
611 | }% |
---|
612 | } |
---|
613 | \def\verbatim@nolig@list{\do\`\do\,\do\'\do\-} |
---|
614 | % \end{macrocode} |
---|
615 | % End of code stolen from \file{ltxguide.cls}. Thanks, Alan. |
---|
616 | % |
---|
617 | % Add functionality from doc.dtx: |
---|
618 | % (code stolen from doc.dtx): |
---|
619 | % \begin{macrocode} |
---|
620 | \def\GetFileInfo#1{% |
---|
621 | \def\filename{#1}% |
---|
622 | \def\@tempb##1 ##2 ##3\relax##4\relax{% |
---|
623 | \def\filedate{##1}% |
---|
624 | \def\fileversion{##2}% |
---|
625 | \def\fileinfo{##3}}% |
---|
626 | \edef\@tempa{\csname ver@#1\endcsname}% |
---|
627 | \expandafter\@tempb\@tempa\relax? ? \relax\relax} |
---|
628 | % \end{macrocode} |
---|
629 | % (end of code stolen from doc.dtx. Thanks FMi.) |
---|
630 | % |
---|
631 | % Various forms of self-indexing commands: |
---|
632 | % \begin{macrocode} |
---|
633 | \DeclareRobustCommand{\m}[1]{% |
---|
634 | \meta{#1}% |
---|
635 | \index{#1=\string\meta{#1} placeholder}\index{placeholder>#1=\string\meta{#1}}% |
---|
636 | }% |
---|
637 | \DeclareRobustCommand\meta[1]{% |
---|
638 | \mbox{\LANGLE\itshape#1\/\RANGLE}% |
---|
639 | }% |
---|
640 | \def\LANGLE{$\langle$}% |
---|
641 | \def\RANGLE{$\rangle$}% |
---|
642 | \DeclareRobustCommand{\arg}[1]{% |
---|
643 | {\ttfamily\string{}\meta{#1}{\ttfamily\string}}% |
---|
644 | \index{#1=\string\ttt{#1}, argument}\index{argument>#1=\string\ttt{#1}}% |
---|
645 | }% |
---|
646 | \let\oarg\undefined |
---|
647 | \DeclareRobustCommand{\oarg}[1]{% |
---|
648 | {\ttfamily[%] |
---|
649 | }\meta{#1}{\ttfamily%[ |
---|
650 | ]}% |
---|
651 | \index{#1=\string\ttt{#1}, optional argument}% |
---|
652 | \index{argument, optional>#1=\string\ttt{#1}}% |
---|
653 | }% |
---|
654 | \DeclareRobustCommand\cmd{\begingroup\makeatletter\@cmd}% |
---|
655 | \def\@cmd#1{% |
---|
656 | \endgroup |
---|
657 | \cs{\expandafter\cmd@to@cs\string#1}% |
---|
658 | \expandafter\cmd@to@index\string#1\@nil |
---|
659 | }% |
---|
660 | \def\cmd@to@cs#1#2{\char\number`#2\relax}% |
---|
661 | \def\cmd@to@index#1#2\@nil{% |
---|
662 | \index{#2=\string\cmd#1#2}%\index{command>#2=\string\cmd#1#2}% |
---|
663 | }% |
---|
664 | \DeclareRobustCommand\cs[1]{{\ttfamily\char`\\#1}}% |
---|
665 | \def\scmd#1{% |
---|
666 | \cs{\expandafter\cmd@to@cs\string#1}% |
---|
667 | \expandafter\scmd@to@index\string#1\@nil |
---|
668 | }% |
---|
669 | \def\scmd@to@index#1#2\@nil#3{% |
---|
670 | \index{\string$#3=\string\cmd#1#2---#3}% |
---|
671 | %\index{command>\string$#3=\string\cmd#1#2---#3}% |
---|
672 | }% |
---|
673 | \DeclareRobustCommand\env{\name@idx{environment}}% |
---|
674 | \DeclareRobustCommand\envb[1]{% |
---|
675 | {\ttfamily\string\begin\string{}\env{#1}{\ttfamily\string}}% |
---|
676 | }% |
---|
677 | \DeclareRobustCommand\enve[1]{{\ttfamily\string\end\string{}\env{#1}{\ttfamily\string}}}% |
---|
678 | \DeclareRobustCommand*{\file}[1]{% |
---|
679 | {\ttfamily#1}% |
---|
680 | \index{#1=\string\ttt{#1}}\index{file>#1=\string\ttt{#1}}% |
---|
681 | }% |
---|
682 | \DeclareRobustCommand\substyle{\name@idx{document substyle}}% |
---|
683 | \DeclareRobustCommand\classoption{\name@idx{document class option}}% |
---|
684 | \DeclareRobustCommand\classname{\name@idx{document class}}% |
---|
685 | \def\name@idx#1#2{% |
---|
686 | {\ttfamily#2}% |
---|
687 | \index{#2\space#1=\string\ttt{#2}\space#1}\index{#1>#2=\string\ttt{#2}}% |
---|
688 | }% |
---|
689 | \DeclareRobustCommand\url@ltxdocext{\begingroup\catcode`\/\active\catcode`\.\active\catcode`\:\active\@url}% |
---|
690 | \AtBeginDocument{% |
---|
691 | \ifx\url\undefined\let\url\url@ltxdocext\fi |
---|
692 | }% |
---|
693 | \def\@url#1{% |
---|
694 | \url@break{\ttfamily#1}% |
---|
695 | \url@char\edef\@tempa{#1=\string\url{#1}}% |
---|
696 | \expandafter\index\expandafter{\@tempa}% |
---|
697 | \expandafter\index\expandafter{\expandafter u\expandafter r\expandafter l\expandafter >\@tempa}% |
---|
698 | \endgroup |
---|
699 | }% |
---|
700 | {\catcode`\:\active\aftergroup\def\aftergroup:}{\active@colon}% |
---|
701 | \def\colon@break{\colon@char\allowbreak}% |
---|
702 | \def\colon@char{:}% |
---|
703 | {\catcode`\/\active\aftergroup\def\aftergroup/}{\active@slash}% |
---|
704 | \def\slash@break{\slash@char\allowbreak}% |
---|
705 | \def\slash@char{/}% |
---|
706 | {\catcode`\.\active\aftergroup\def\aftergroup.}{\active@dot}% |
---|
707 | \def\dot@break{\dot@char\allowbreak}% |
---|
708 | \def\dot@char{.}% |
---|
709 | \def\url@break{\let\active@slash\slash@break\let\active@dot\dot@break\let\active@colon\colon@break}% |
---|
710 | \def\url@char{\let\active@slash\slash@char\let\active@dot\dot@char\let\active@colon\colon@char}% |
---|
711 | % \end{macrocode} |
---|
712 | % |
---|
713 | % \subsection{Changes to the base class of the ltxdoc class} |
---|
714 | % Modify \env{theindex} environment so that it produces a TOC entry |
---|
715 | % \begin{macrocode} |
---|
716 | \renewenvironment{theindex} |
---|
717 | {\if@twocolumn |
---|
718 | \@restonecolfalse |
---|
719 | \else |
---|
720 | \@restonecoltrue |
---|
721 | \fi |
---|
722 | \columnseprule \z@ |
---|
723 | \columnsep 35\p@ |
---|
724 | \def\see##1##2{\textit{See} ##1}% |
---|
725 | \def\seealso##1##2{\textit{See also} ##1}% |
---|
726 | \def\cmd##1{\cs{\expandafter\cmd@to@cs\string##1}}% |
---|
727 | \def\@url##1{\url@break\ttt{##1}\endgroup}% |
---|
728 | \def\ttt##1{{\ttfamily##1}}% |
---|
729 | \mathchardef\save@secnumdepth\c@secnumdepth |
---|
730 | \c@secnumdepth\m@ne |
---|
731 | \twocolumn[\section{\indexname}]% |
---|
732 | % \@mkboth{\MakeUppercase\indexname}% |
---|
733 | % {\MakeUppercase\indexname}% |
---|
734 | \c@secnumdepth\save@secnumdepth |
---|
735 | \thispagestyle{plain}\parindent\z@ |
---|
736 | \parskip\z@ \@plus .3\p@\relax |
---|
737 | \let\item\@idxitem} |
---|
738 | {\if@restonecol\onecolumn\else\clearpage\fi} |
---|
739 | \renewenvironment{quote} |
---|
740 | {\list{}{% |
---|
741 | \leftmargin1em\relax |
---|
742 | \rightmargin\leftmargin |
---|
743 | }% |
---|
744 | \item\relax} |
---|
745 | {\endlist} |
---|
746 | % \end{macrocode} |
---|
747 | % |
---|
748 | % \subsection{Extensions to the base class of \classname{ltxdoc.cls}} |
---|
749 | % |
---|
750 | % Matter commands from \classname{book.cls} |
---|
751 | % \begin{macrocode} |
---|
752 | \newif\if@mainmatter |
---|
753 | \newif\if@openright |
---|
754 | \@openrighttrue |
---|
755 | \DeclareRobustCommand\frontmatter{% |
---|
756 | \cleartorecto |
---|
757 | \@mainmatterfalse |
---|
758 | \pagenumbering{roman}% |
---|
759 | }% |
---|
760 | \DeclareRobustCommand\mainmatter{% |
---|
761 | \cleartorecto |
---|
762 | \@mainmattertrue |
---|
763 | \pagenumbering{arabic}% |
---|
764 | }% |
---|
765 | \DeclareRobustCommand\backmatter{% |
---|
766 | \if@openright |
---|
767 | \cleartorecto |
---|
768 | \else |
---|
769 | \clearpage |
---|
770 | \fi |
---|
771 | \@mainmatterfalse |
---|
772 | }% |
---|
773 | \ifx\undefined\cleartorecto |
---|
774 | \def\cleartorecto{\cleardoublepage}% |
---|
775 | \fi |
---|
776 | % \end{macrocode} |
---|
777 | % |
---|
778 | % Unnumbered tables |
---|
779 | % |
---|
780 | % \begin{environment}{unnumtable} |
---|
781 | % An unnumbered table does not float. |
---|
782 | % \begin{macrocode} |
---|
783 | \def\@to{to}% |
---|
784 | \newenvironment{unnumtable}{% |
---|
785 | \par |
---|
786 | \addpenalty\predisplaypenalty |
---|
787 | \addvspace\abovedisplayskip |
---|
788 | \hbox\@to\hsize\bgroup\hfil\ignorespaces |
---|
789 | \let\@Hline\@empty |
---|
790 | }{% |
---|
791 | \unskip\hfil\egroup |
---|
792 | \penalty\postdisplaypenalty |
---|
793 | \vskip\belowdisplayskip |
---|
794 | \aftergroup\ignorespaces |
---|
795 | \@endpetrue |
---|
796 | }% |
---|
797 | % \end{macrocode} |
---|
798 | % \end{environment} |
---|
799 | % |
---|
800 | % Emulate \cmd\toprule\ and friends |
---|
801 | % \begin{macrocode} |
---|
802 | \newcommand\toprule{\hline\hline}% |
---|
803 | \newcommand\colrule{\\\hline}% |
---|
804 | \newcommand\botrule{\\\hline\hline}% |
---|
805 | % \end{macrocode} |
---|
806 | % |
---|
807 | % Define sectioning command below \cmd\subsubsection. |
---|
808 | % \begin{macrocode} |
---|
809 | \DeclareRobustCommand\subsubsubsection{% |
---|
810 | \@startsection{subsubsection}{4}% |
---|
811 | {\z@}{-15\p@\@plus-5\p@\@minus-2\p@}% |
---|
812 | {5\p@}{\normalfont\normalsize\itshape}% |
---|
813 | }% |
---|
814 | % \end{macrocode} |
---|
815 | % |
---|
816 | % \subsection{In lieu of \file{ltxdoc.cfg}} |
---|
817 | % We don't want everything to appear in the index |
---|
818 | % \begin{macrocode} |
---|
819 | \DoNotIndex{\',\.,\@M,\@@input,\@Alph,\@alph,\@addtoreset,\@arabic} |
---|
820 | \DoNotIndex{\@badmath,\@centercr,\@cite} |
---|
821 | \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} |
---|
822 | \DoNotIndex{\@input,\@ixpt,\@m,\@minus,\@mkboth} |
---|
823 | \DoNotIndex{\@ne,\@nil,\@nomath,\@plus,\roman,\@set@topoint} |
---|
824 | \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} |
---|
825 | \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} |
---|
826 | \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} |
---|
827 | \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} |
---|
828 | \DoNotIndex{\advance,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} |
---|
829 | \DoNotIndex{\bullet} |
---|
830 | \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} |
---|
831 | \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} |
---|
832 | \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} |
---|
833 | \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} |
---|
834 | \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} |
---|
835 | \DoNotIndex{\fbox} |
---|
836 | \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} |
---|
837 | \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} |
---|
838 | \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} |
---|
839 | \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} |
---|
840 | \DoNotIndex{\input} |
---|
841 | \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} |
---|
842 | \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} |
---|
843 | \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} |
---|
844 | \DoNotIndex{\NeedsTeXFormat,\newdimen} |
---|
845 | \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} |
---|
846 | \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} |
---|
847 | \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} |
---|
848 | \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} |
---|
849 | \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} |
---|
850 | \DoNotIndex{\refstepcounter,\relax,\renewcommand} |
---|
851 | \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily} |
---|
852 | \DoNotIndex{\secdef,\selectfont,\setbox,\setcounter,\setlength} |
---|
853 | \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} |
---|
854 | \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} |
---|
855 | \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} |
---|
856 | \DoNotIndex{\viipt,\vipt,\vskip,\vspace} |
---|
857 | \DoNotIndex{\wd,\xiipt,\year,\z@} |
---|
858 | \DoNotIndex{\next} |
---|
859 | % \end{macrocode} |
---|
860 | % |
---|
861 | % Direct \classname{ltxdoc} to produce an index. |
---|
862 | % \begin{macrocode} |
---|
863 | \AtEndDocument{\PrintIndex}% |
---|
864 | % \end{macrocode} |
---|
865 | % |
---|
866 | % \subsection{Extension to \LaTeX's \env{filecontents} Environment} |
---|
867 | % We want to |
---|
868 | % coax the version number into \env{filecontents}-generated files. |
---|
869 | % Note that we expect \cmd\fileversion\ and \cmd\filedate\ to |
---|
870 | % hold the needed information. For this to be the case, |
---|
871 | % your document should execute the \cmd\GetFileInfo\ command |
---|
872 | % (as documented in section~\ref{sec:GetFileInfo}) before |
---|
873 | % any instances of \env{filecontents}. |
---|
874 | % \begin{macrocode} |
---|
875 | \makeatletter |
---|
876 | \def\endfilecontents{% |
---|
877 | \immediate\write\reserved@c{% |
---|
878 | \string\iffalse\space ltxdoc klootch^^J% |
---|
879 | \ifx\undefined\fileversion\else |
---|
880 | \ifx\undefined\filedate\else |
---|
881 | This file has version number \fileversion, last revised \filedate.% |
---|
882 | \fi\fi |
---|
883 | \string\fi |
---|
884 | }% |
---|
885 | \immediate\closeout\reserved@c |
---|
886 | \def\T##1##2##3{% |
---|
887 | \ifx##1\@undefined\else |
---|
888 | \@latex@warning@no@line{##2 has been converted to Blank ##3e}% |
---|
889 | \fi |
---|
890 | }% |
---|
891 | \T\L{Form Feed}{Lin}% |
---|
892 | \T\I{Tab}{Spac}% |
---|
893 | \immediate\write\@unused{}% |
---|
894 | }% |
---|
895 | \expandafter\let\csname endfilecontents*\endcsname\endfilecontents |
---|
896 | \makeatother |
---|
897 | % \end{macrocode} |
---|
898 | % |
---|
899 | % Alter formatting in arrays; set them tight. |
---|
900 | % \begin{macrocode} |
---|
901 | \setlength\arraycolsep{0pt}% |
---|
902 | % \end{macrocode} |
---|
903 | % |
---|
904 | % \subsection{End of the \file{extensions} {\sc docstrip} module} |
---|
905 | % Here ends the module. |
---|
906 | % \begin{macrocode} |
---|
907 | %</extensions> |
---|
908 | % \end{macrocode} |
---|
909 | % |
---|
910 | % |
---|
911 | % \section{Font Package for Acrobat Compatability}% |
---|
912 | % The package \classname{acrofont} |
---|
913 | % substitutes Acrobat-standard fonts for Computer Modern where possible, |
---|
914 | % even in math mode. |
---|
915 | % Documents typeset with this package in effect will require as little |
---|
916 | % downloaded font data as possible, but will not be exemplars of |
---|
917 | % fine math typesetting. |
---|
918 | % |
---|
919 | % \subsection{Beginning of the \file{fonts} {\sc docstrip} module} |
---|
920 | % The document class module comprises this and the next |
---|
921 | % four sections. |
---|
922 | % \begin{macro}{\class@base} |
---|
923 | % We define in exactly one spot the base class. |
---|
924 | % Typically that class will be one of \classname{book}, |
---|
925 | % \classname{article}, or \classname{report}. |
---|
926 | % The base class effectively defines the use and the markup scheme |
---|
927 | % of the class of documents to be handled by this class. |
---|
928 | % |
---|
929 | % This class is a variant of the standard \LaTeX\ book class: |
---|
930 | % \url{ftp://ctan.tug.org/tex-archive/macros/latex/unpacked}. |
---|
931 | % \begin{macrocode} |
---|
932 | %<*fonts> |
---|
933 | \def\class@name{ltxdocext}% |
---|
934 | \expandafter\ClassInfo\expandafter{\class@name}{% |
---|
935 | Written for \protect\LaTeXe\space |
---|
936 | by A. Ogawa (ogawa@teleport.com)% |
---|
937 | }% |
---|
938 | % \end{macrocode} |
---|
939 | % \end{macro} |
---|
940 | % |
---|
941 | % \subsection{Variants on psfonts packages}% |
---|
942 | % The following uses \file{times.sty} from \url{/packages/psnfss/psfonts.dtx} |
---|
943 | % \begin{macrocode} |
---|
944 | \RequirePackage{times}% |
---|
945 | % \end{macrocode} |
---|
946 | % |
---|
947 | % The following uses \file{mathptm.sty} from \url{/packages/psnfss/psfonts.dtx} |
---|
948 | % \begin{macrocode} |
---|
949 | \RequirePackage{mathptm}% |
---|
950 | % \end{macrocode} |
---|
951 | % |
---|
952 | % The following is a customization of \file{ot1ptmcm.fd}. |
---|
953 | % The virtual font referred to here \file{zptmnocmr} is |
---|
954 | % a variant of Sebastian Rahtz's \file{zptmcmr}, but with |
---|
955 | % even more glyphs moved from CM to Acrobat-standard fonts. |
---|
956 | % \begin{macrocode} |
---|
957 | \DeclareFontFamily{OT1}{ptmcm}{} |
---|
958 | \DeclareFontShape{OT1}{ptmcm}{m}{n}{ |
---|
959 | <-> zptmnocmr |
---|
960 | }{} |
---|
961 | \DeclareFontShape{OT1}{ptmcm}{l}{n}{<->ssub * ptmnocm/m/n}{} |
---|
962 | % \end{macrocode} |
---|
963 | % |
---|
964 | % The following is a customization of \file{omlptmcm.fd} |
---|
965 | % The virtual font referred to here \file{zptmnocmrm} is |
---|
966 | % a variant of Sebastian Rahtz's \file{zptmcmrm}, but with |
---|
967 | % even more glyphs moved from CM to Acrobat-standard fonts. |
---|
968 | % \begin{macrocode} |
---|
969 | \DeclareFontFamily{OML}{ptmcm}{\skewchar \font =127} |
---|
970 | \DeclareFontShape{OML}{ptmcm}{m}{it}{ |
---|
971 | <-> zptmnocmrm |
---|
972 | }{} |
---|
973 | \DeclareFontShape{OML}{ptmcm}{l}{it}{<->ssub * ptmcm/m/it}{} |
---|
974 | \DeclareFontShape{OML}{ptmcm}{m}{sl}{<->ssub * ptmcm/m/it}{} |
---|
975 | \DeclareFontShape{OML}{ptmcm}{l}{sl}{<->ssub * ptmcm/m/sl}{} |
---|
976 | % \end{macrocode} |
---|
977 | % |
---|
978 | % The following is a customization of \file{omspzccm.fd} |
---|
979 | % The virtual font referred to here \file{zpzcnocmry} is |
---|
980 | % a variant of Sebastian Rahtz's \file{zpzccmry}, but with |
---|
981 | % even more glyphs moved from CM to Acrobat-standard fonts. |
---|
982 | % \begin{macrocode} |
---|
983 | \DeclareFontFamily{OMS}{pzccm}{} |
---|
984 | \DeclareFontShape{OMS}{pzccm}{m}{n}{ |
---|
985 | <-> zpzcnocmry |
---|
986 | }{}% cmsy10 Symbol Zapf Chancery Medium-Italic Times-Roman |
---|
987 | \DeclareFontShape{OMS}{pzccm}{l}{n}{<->ssub * pzccm/m/n}{} |
---|
988 | % \end{macrocode} |
---|
989 | % |
---|
990 | % The following is a customization of \file{omxpsycm.fd} |
---|
991 | % The virtual font referred to here \file{zpsynocmrv} is |
---|
992 | % a variant of Sebastian Rahtz's \file{zpsycmrv}, but with |
---|
993 | % even more glyphs moved from CM to Acrobat-standard fonts. |
---|
994 | % \begin{macrocode} |
---|
995 | \DeclareFontFamily{OMX}{psycm}{} |
---|
996 | \DeclareFontShape{OMX}{psycm}{m}{n}{ |
---|
997 | <-> zpsynocmrv |
---|
998 | }{} |
---|
999 | \DeclareFontShape{OMX}{psycm}{l}{n}{<->ssub * psycm/m/n}{} |
---|
1000 | % |
---|
1001 | \DeclareFontEncoding{8r}{}{}% from file: 8renc.def |
---|
1002 | \DeclareFontFamily{8r}{cmr}{\hyphenchar\font45 }% from file: 8rcmr.fd |
---|
1003 | \DeclareFontShape{8r}{cmr}{m}{n}{ |
---|
1004 | <-> cmr10 |
---|
1005 | }{} |
---|
1006 | % \end{macrocode} |
---|
1007 | % |
---|
1008 | % \subsection{Font definition files}% |
---|
1009 | % |
---|
1010 | % The following forces \LaTeX\ to do now what it would do anyway: |
---|
1011 | % load the `font definition' information for the fonts that we |
---|
1012 | % use. In this way, we prepare for faster processing through |
---|
1013 | % the \cmd\dump\ of a preformatted macro package that will not |
---|
1014 | % need to read in any packages or font definitions from disk. |
---|
1015 | % \begin{macrocode} |
---|
1016 | \input{8rphv.fd}% |
---|
1017 | \input{8rptm.fd}% |
---|
1018 | \input{ot1phv.fd}% |
---|
1019 | \input{ot1ptm.fd}% |
---|
1020 | \input{t1ptm.fd}% |
---|
1021 | % \end{macrocode} |
---|
1022 | % |
---|
1023 | % \subsection{More math substitutions}% |
---|
1024 | % |
---|
1025 | % The following definitions arrange to get certain glyphs from the |
---|
1026 | % text font instead of out of math pi fonts. |
---|
1027 | % In particular, the copyright and registered symbols |
---|
1028 | % are single glyphs instead of composites involving |
---|
1029 | % the big circle from the \file{cmsy} font. |
---|
1030 | % \begin{macrocode} |
---|
1031 | \def\eightRChar#1{{\def\encodingdefault{8r}\fontencoding\encodingdefault\selectfont\char"#1}}% |
---|
1032 | \def\LANGLE{$<$}%{\eightRChar{8B}}% |
---|
1033 | \def\RANGLE{$>$}%{\eightRChar{9B}}% |
---|
1034 | %\def\ASTER{\eightRChar{2A}}% |
---|
1035 | %\def\DAGGER{\eightRChar{86}}% |
---|
1036 | %\def\DDAGGER{\eightRChar{87}}% |
---|
1037 | \def\BULLET{\eightRChar{95}}% |
---|
1038 | %\def\SECTION{\eightRChar{A7}}% |
---|
1039 | %\def\PARAGRAPH{\eightRChar{B6}}% |
---|
1040 | \def\VERTBAR{\eightRChar{7C}}% |
---|
1041 | \def\COPYRIGHT{\eightRChar{A9}}% |
---|
1042 | \def\REGISTERED{\eightRChar{AE}}% |
---|
1043 | % \end{macrocode} |
---|
1044 | % |
---|
1045 | % \begin{macrocode} |
---|
1046 | \def\textbar{\VERTBAR}% |
---|
1047 | \def\textbullet{\BULLET}% |
---|
1048 | \def\textcopyright{\COPYRIGHT}% |
---|
1049 | \def\textregistered{\REGISTERED}% |
---|
1050 | % \end{macrocode} |
---|
1051 | % |
---|
1052 | % I have removed \cmd\ensuremath\ from the following definition, and |
---|
1053 | % all commands like \cmd\mathsection have been converted to |
---|
1054 | % e.g., \cmd\textsection. |
---|
1055 | % \begin{macrocode} |
---|
1056 | \def\@makefnmark{\@thefnmark}% |
---|
1057 | \def\@fnsymbol#1{{\ifcase#1\or *\or \dagger\or \ddagger\or |
---|
1058 | \textsection\or \textparagraph\or \|\or **\or \dagger\dagger |
---|
1059 | \or \ddagger\ddagger \else\@ctrerr\fi}} |
---|
1060 | % \end{macrocode} |
---|
1061 | % |
---|
1062 | % \subsection{End of the \file{fonts} {\sc docstrip} module} |
---|
1063 | % Here ends the module. |
---|
1064 | % \begin{macrocode} |
---|
1065 | %</fonts> |
---|
1066 | % \end{macrocode} |
---|
1067 | % |
---|
1068 | % |
---|
1069 | % \section{Programming Conventions}% |
---|
1070 | % In writing the above code, I cleave to certain conventions, noted |
---|
1071 | % here. |
---|
1072 | % My goal in explaining them is to encourage others maintaining this |
---|
1073 | % body of code to consider following them as well. |
---|
1074 | % The benefits are twofold: |
---|
1075 | % Some of the coding conventions aim to avoid programming pitfalls; |
---|
1076 | % following them reduces maintenance costs. |
---|
1077 | % Others make the code easier to read; following these eases the |
---|
1078 | % process of understanding how the code works. |
---|
1079 | % |
---|
1080 | % And, for my part, I prefer to read code of this type. |
---|
1081 | % |
---|
1082 | % \subsection{Whitespace Conventions}% |
---|
1083 | % Exactly where code lines break and indent, and where additional |
---|
1084 | % whitespace is inserted is explained here. |
---|
1085 | % \begin{itemize} |
---|
1086 | % \item |
---|
1087 | % Each new macro definition or register assignment begins a new line. |
---|
1088 | % Therefore, \cmd\def, \cmd\newcommand, and their ilk will start in column |
---|
1089 | % 1. |
---|
1090 | % \item |
---|
1091 | % Code is indented one space for each level of nesting within braces |
---|
1092 | % \verb|{}|. |
---|
1093 | % \item |
---|
1094 | % Likewise, if possible, for \cmd\if\dots and matching \cmd\fi. |
---|
1095 | % \item |
---|
1096 | % However, the closing brace or \cmd\fi\ is outdented by one so that it |
---|
1097 | % falls |
---|
1098 | % at the same level of indentation as its matching brace or \cmd\if, |
---|
1099 | % and it appears alone on its line. |
---|
1100 | % \item |
---|
1101 | % Use of the |tab| character is deprecated |
---|
1102 | % (tabs are not standardized across all applications and operating |
---|
1103 | % systems). |
---|
1104 | % \item |
---|
1105 | % Lines of code are limited to 72 characters. |
---|
1106 | % I follow this convention mostly to ease the transmission of files |
---|
1107 | % via email (a deprecated practice) and to accomodate people with |
---|
1108 | % small monitors. |
---|
1109 | % But \classname{ltxdoc} output looks better with the shorter lines, too. |
---|
1110 | % \item |
---|
1111 | % Extraneous whitespace is avoided by using the comment character |%|. |
---|
1112 | % In most cases, if falling at the end of a line of code, |
---|
1113 | % a brace will be immediately followed by a comment character, |
---|
1114 | % as will the macro parameter |#1| and any one-letter control sequence, |
---|
1115 | % like |\\|. |
---|
1116 | % \end{itemize} |
---|
1117 | % These conventions taken together are illustrated by the following: |
---|
1118 | % \begin{verbatim} |
---|
1119 | %\def\prepdef#1#2{% |
---|
1120 | % \@ifxundefined#1{\toks@{}}{\toks@\expandafter{#1}}% |
---|
1121 | % \toks@ii{#2}% |
---|
1122 | % \edef#1{\the\toks@ii\the\toks@}% |
---|
1123 | %}% |
---|
1124 | % \end{verbatim} |
---|
1125 | % In the above, the definition of \cmd\prepdef\ would not fit on a single |
---|
1126 | % line, |
---|
1127 | % and required breaking. The first and last lines have matching braces, |
---|
1128 | % and are a the same level of indentation, with the last line containing |
---|
1129 | % a single brace. |
---|
1130 | % |
---|
1131 | % Each of the three intervening lines has balanced braces and is |
---|
1132 | % indented by one space. Each line that would otherwise end in a single |
---|
1133 | % brace character is terminated by a comment character. |
---|
1134 | % |
---|
1135 | % Some coders rely on the fact that a space character seen by \TeX's |
---|
1136 | % scanner while in vertical mode is a no-op. |
---|
1137 | % Be that as it may, I eliminate them unless actually intentional. |
---|
1138 | % |
---|
1139 | % \subsection{Conventions For Procedures}% |
---|
1140 | % Here are some of my preferences when writing procedures: |
---|
1141 | % \begin{itemize} |
---|
1142 | % |
---|
1143 | % \item |
---|
1144 | % I dislike defining a macro within another macro, especially when the |
---|
1145 | % pattern part is non-nil. |
---|
1146 | % You know, you are not saving much space in |mem| when you do this, |
---|
1147 | % right? |
---|
1148 | % You do save space in the hash table and the string pool, though. |
---|
1149 | % On the other hand, we are not dealing with small \TeX\ engines |
---|
1150 | % anymore; Team \LaTeX\ has made sure of this. |
---|
1151 | % |
---|
1152 | % \item |
---|
1153 | % If two or more macros have very similar replacement parts, consider |
---|
1154 | % layering. |
---|
1155 | % |
---|
1156 | % \item |
---|
1157 | % Macros may perform parsing, may maintain tokens or registers, or may |
---|
1158 | % set type (produce marks). I try to avoid combining the three functions |
---|
1159 | % in a single macro. |
---|
1160 | % |
---|
1161 | % \item |
---|
1162 | % When a procedure both does assignments and sets type, I try to have a |
---|
1163 | % clean separations between the two activities. Try to avoid: |
---|
1164 | % \begin{verbatim} |
---|
1165 | % \vskip10pt |
---|
1166 | % \parindent=0pt |
---|
1167 | % \leavevmode |
---|
1168 | % \end{verbatim} |
---|
1169 | % |
---|
1170 | % \item |
---|
1171 | % The Boolean calculus (cf. \cmd\@ifx) |
---|
1172 | % is very useful and produces code that executes nicely. |
---|
1173 | % Using it also helps avoid your having to debug problems where |
---|
1174 | % \cmd\if\dots\ and \cmd\fi\ are not properly balanced |
---|
1175 | % (a nightmare in case you didn't already experience it). |
---|
1176 | % |
---|
1177 | % \end{itemize} |
---|
1178 | % |
---|
1179 | % \subsection{Conventions For \LaTeX}% |
---|
1180 | % Team \LaTeX\ make certain recommendations in \file{clsguide.tex}. |
---|
1181 | % Ones that I particularly pay attention to are: |
---|
1182 | % \begin{itemize} |
---|
1183 | % |
---|
1184 | % \item |
---|
1185 | % For the sake of ``color safety'', |
---|
1186 | % use \cmd\sbox\ rather than \cmd\setbox, \cmd\mbox\ rather than \cmd\hbox, and |
---|
1187 | % \cmd\parbox\ or \env{minipage} rather than \cmd\vbox. |
---|
1188 | % |
---|
1189 | % \item |
---|
1190 | % Use \cmd\newcommand\ and \cmd\newenvironment\ to declare user-level commands |
---|
1191 | % and environments. Avoid the idiom \cmd\def\cmd\foo, \cmd\def\cmd\endfoo\ to define |
---|
1192 | % an environment. |
---|
1193 | % Ideally, all user-level markup could be extracted from the |
---|
1194 | % document class by grepping on \cmd\newcommand\ and \cmd\newenvironment. |
---|
1195 | % |
---|
1196 | % \item |
---|
1197 | % Prefer to use \cmd\setlength\ to assign registers. |
---|
1198 | % |
---|
1199 | % \end{itemize} |
---|
1200 | % I cannot help but notice that much of the code of \LaTeX\ itself fails |
---|
1201 | % to comply with many of the coding recommendations of Team \LaTeX. |
---|
1202 | % |
---|
1203 | % |
---|
1204 | % \Finale |
---|
1205 | % %Here ends the programmer's documentation. |
---|
1206 | % \endinput |
---|
1207 | % |
---|
1208 | \endinput |
---|