diff options
Diffstat (limited to 'Master/texmf-dist/source/alatex/base/alatex.dtx')
-rw-r--r-- | Master/texmf-dist/source/alatex/base/alatex.dtx | 531 |
1 files changed, 0 insertions, 531 deletions
diff --git a/Master/texmf-dist/source/alatex/base/alatex.dtx b/Master/texmf-dist/source/alatex/base/alatex.dtx deleted file mode 100644 index 0f7539b5694..00000000000 --- a/Master/texmf-dist/source/alatex/base/alatex.dtx +++ /dev/null @@ -1,531 +0,0 @@ -%^^A* file information -% \iffalse -% -% alatex.dtx -- discussion and documentation of ALaTeX and its standard metaclass -% -% Copyright 1995 Matt Swift <swift@bu.edu>. All rights reserved. -% -% This file is part of the ALaTeX system. -% Please see the file 0areadme.txt for further information. -% -% All correspondence regarding ALaTeX should go to -% Matt Swift <swift@bu.edu>, not the LaTeX maintainers. -% -% This program is free software; you can redistribute it and/or modify -% it under the terms of the GNU General Public License as published by -% the Free Software Foundation; either version 2 of the License, or -% (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -% -% \fi -% -%^^A* checks -% -%^^A NOTE: The character table, with two %'s, will get written to all files. -%% \CharacterTable -%% {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 -%% 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 -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} -% -% \CheckSum{287} -% -%^^A* abstract -% \begin{abstract} -% \ALaTeX{} is a document preparation system that provides the user with all -% the functionality of \LaTeX{} and a general, legal way to override standard -% \LaTeX{} behavior without altering source files. An important consequence is -% that \ALaTeX{} can interpret official \LaTeX{} markup in an abstract way. -% -% This discussion builds on the author's paper ``Modularity in \LaTeX'' -% in the forthcoming TUGboat \textbf{16} (3). -% \end{abstract} -% \tableofcontents -% \clearpage -% -% \StopEventually{} -% -% \section{Introduction} -% -% The purpose of writing \ALaTeX{} was to facilitate typesetting official -% \LaTeX{} markup as \emph{abstract} markup, that is, markup that is not fixed -% to a ``standard'' appearance on a typeset page. Official \LaTeX{} markup has -% a standard appearance. Together with the broad portability of the \TeX{} -% program, this standard is a highly valuable feature of \LaTeX. In achieving -% this important goal, however, the \LaTeX{} developers compromised the -% valuable ability of \LaTeX{} to interpret markup abstractly. \ALaTeX{} -% attempts to provide users with the ability to process official \LaTeX{} -% markup with the power of full abstraction, without compromising their ability -% to process official \LaTeX{} markup in the standard way. -% -% You are not allowed to modify the distributed \LaTeX{} files without changing -% their names; yet filenames are how classes and packages are identified. In -% many cases it is desirable to produce \emph{different} \ext{dvi} files from -% the same source document. Suppose you make a small modification of the -% standard \class{article} class. To use it to process a source which calls -% for the \class{article} class, you must either break the law and call your -% derivative class \file{article.cls}, or modify the source to call for a -% different class. Both options are unacceptable, the first for obvious -% reasons, the second because a document class---and indeed all the markup in a -% source---ought to be abstractly descriptive without specifying the details of -% presentation. Font specifications are absurd in a document to be read aloud; -% volume specifications are absurd in a document to be printed; page -% specifications are absurd in a document to be viewed on a screen. -% -% Even were it agreed to privilege a single medium for presentation, sometimes -% the source simply cannot be modified, and making a copy would cause version -% control or storage difficulties, or itself be a violation of law. -% -% It is unnecessary to dwell on the necessary failure of any markup scheme to -% be suitably abstract for all interesting documents and presentation media. -% Fortunately, we are aiming to advance computer-aided typesetting, not the -% philosophy of essence and accident, syntax and semantics. What is true of -% \ALaTeX{} and not of \LaTeX{} is that all directives with a \emph{necessary} -% influence on typeset appearance appear outside the source document. -% -% It is very difficult to have a working \ALaTeX{} without also having a -% working \LaTeX. For this reason, \ALaTeX{} is unlikely to compromise the -% availability and ubiquity of systems that conveniently produce standard -% \LaTeX{} \ext{dvi} files from sources containing official \LaTeX{} markup. -% To help insure this harmlessness (and for lack of a reasonable alternative), -% \ALaTeX{} as distributed produces \ext{dvi} files identical to ones that -% \LaTeX{} produces from the same source. Differences are conceivable only in -% the perverse cases listed in Appendix \ref{perverse}. -% -% Abstracting those cases, therefore, a user must actively alter \LaTeX{} or -% \ALaTeX{} before she can produce a \ext{dvi} file that differs from the one -% standard \LaTeX{} produces from the same source file. \ALaTeX, however, is -% much easier to alter in useful ways than \LaTeX. -% -% \begin{em} -% When you compose a document, please preview it with (standard) \LaTeX. -% There is absolutely no reason at all to use \ALaTeX{} during document -% composition. Using \LaTeX{} will ensure that your document can be -% consistently compiled and viewed at every \LaTeX{} site in the world. Use -% \ALaTeX{} \emph{only} on existing sources when you can't or don't want to -% modify them, and yet want to present them in a nonstandard way. -% \end{em} -% -% \section{How \ALaTeX{} works} -% -% Most of the \ALaTeX{} distribution is designed to make a single small change -% to the \LaTeX{} kernel easy and legal to use. The change causes the -% |\documentclass| command to store its arguments in variables and load the -% file \file{metaclas.cfg} called the \term{metaclass} before continuing. -% That's it! -% -% The significance of this change is in the variety and scope of what can be -% accomplished by code in the metaclass. In the metaclass, the |@| character -% is a letter, as in normal class files. -% -% \DescribeMacro\mc@class@options -% \DescribeMacro\mc@class@name -% \DescribeMacro\mc@class@version -% When the metaclass is executed, the \ALaTeX{} kernel is loaded, and the -% source file has been processed from the beginning through the first -% |\documentclass| command and all its arguments. The arguments have been -% stored in macros as follows: -% \begin{description} -% \item[\bslash mc@class@options] holds the first optional argument to -% |\documentclass|. -% \item[\bslash mc@class@name] holds the mandatory argument to -% |\documentclass|. -% \item[\bslash mc@class@version] holds the second optional -% argument to |\documentclass|. -% \end{description} -% -% A metaclass can do anything at all with this information. The distributed -% metaclass below emulates \LaTeX's behavior. Code in comments below provides -% two convenient mechanisms to do something else, causing \ALaTeX's typeset -% documents to differ from \LaTeX's. \ALaTeX{} is as flexible as possible, and -% the number of other possibilities is countless. -% -% \DescribeMacro\alt@cls@extension -% \DescribeMacro\ds@foo -% The nonstandard mechanisms are as follows. Let \meta{class} be the class -% named by the |\documentclass| command, \meta{altX} be the value of -% |\alt@cls@extension| defined in the metaclass, and \meta{normX} be the value -% of |\@cls@extension| defined in the \ALaTeX{} (and \LaTeX) kernel. -% \begin{enumerate} -% \item When a file \file{\meta{class}.\meta{altX}} exists in the search path, -% it will be loaded instead of the usual \file{\meta{class}.\meta{normX}}. -% \item When a command |\ds@|\meta{class} is defined, it will be executed -% instead of loading \file{\meta{class}.\meta{normX}}. -% \end{enumerate} -% -% Notice that there is no reason to use \ALaTeX{} unless you create a -% nonstandard metaclass. The standard metaclass emulates standard \LaTeX{} -% because the user should have to take active steps to get nonstandard output. -% If you modify this file, please change the |\fileinfo| declaration near the -% end. -% -% \section{The game of the name} -% -% You may understand the \word{A} in \ALaTeX{} to stand for \word{alternate} or -% \word{abstract}, or to be the definite article, which emphasizes that fact -% that when you process with \ALaTeX{}, you are seeing just one of an infinite -% number of possibile presentations of your document's content. -% -% You may pronounce \ALaTeX{} however you like, of course. -% -% \section{A sampler of applications} -% -% \ALaTeX{} is a powerful tool, but newly born. Sophisticated applications -% have neither been conceived nor implemented. The author would appreciate -% hearing from you. -% -% \ALaTeX{} is potentially useful in situations where without \ALaTeX{} one -% would need to alter the source in a way that affects its presentation but not -% its content. For example, without \ALaTeX{} you must modify the source to -% change the paper size or font characteristics of the typeset document. -% \ALaTeX{} allows you to make this kind of change by altering the typesetting -% procedure instead of the source itself. -% -% You can use \ALaTeX{} to specify options to package and classes or even to -% load packages. You can invoke debugging or profiling code. -% -% Since the metaclass can control the style of a document, a system of files -% could be arranged in which there exist companion files for sources, which -% would function like style sheets. Common hierarchical path searching -% mechanisms would permit cascading styles with a flexible inheritance scheme -% at the levels of site, user, directory, and individual source. -% -% \section{The future} -% -% I envision removing most of the decisions embodied in the preamble and in -% package and class options from the source file to the invocation of the -% processing run. The decisions might be specified on the command line or in -% files separate from the source that are managed by a convenient interface. -% Is not an analogous development occurring as style sheets are brought to -% HTML? -% -% Since the choices a user would typically make via \ALaTeX{} are likely to be -% few and from among a small number of known alternatives, it is easy to -% imagine a convenient user interface for the common options. Such a front end -% written \TeX{} would have the advantage of being \%100 portable. A graphical -% interface could be integrated in an existing front end which manages a broad -% array of \TeX-related tasks. -% -% If metaclasses become tricky, a |\tracingmetaclasses| command might be -% warranted. -% -% \StopEventually{} -% -% \section{Version control} -% -% \begin{macro}{\fileinfo} -% \begin{macro}{\fileversion} -% \begin{macro}{\filedate} -% \begin{macro}{\docdate} -% \begin{macro}{\PPOptArg} -% First we take care of the business of keeping track of the version of this -% document. -% \begin{macrocode} -%<*metaclass> -\def\fileinfo{standard ALaTeX metaclass} -\def\fileversion{v1.0} -\def\filedate{1996/01/24} -\def\docdate{1996/01/24} -\edef\PPOptArg{\filedate\space \fileversion\space \fileinfo} -\ProvidesFile{metaclas.cfg}[\PPOptArg] -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \section{Emulate \LaTeX{} (the default)} -% -% \begin{macro}{\documentclass} -% \begin{macro}{\mc@load@class} -% The following |\documentclass| command behaves exactly like \LaTeX's. It -% looks a little different here because we've already read the three arguments. -% \begin{macrocode} -\def\documentclass{% - \let\documentclass\@twoclasseserror - \if@compatibility\else\let\usepackage\RequirePackage\fi - \mc@load@class} -\def\mc@load@class{% - \edef\reserved@a{% - \noexpand\@fileswithoptions - \noexpand\@clsextension - [\mc@class@options]{\mc@class@name}[\mc@class@version]}% - \reserved@a} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \section{Privelege alternate extensions} -% -% \begin{macro}{\alt@cls@extension} -% \begin{macro}{\documentclass} -% To enable divergences from standard \LaTeX{} of the first kind only, -% uncomment the following four definitions in this section and ensure that the -% definitions in following sections are commented out. Please also change the -% definition of |\fileinfo| above. -% \begin{macrocode} -% \def\alt@cls@extension{acl} -% \def\documentclass{% -% \let\documentclass\@twoclasseserror -% \if@compatibility\else\let\usepackage\RequirePackage\fi -% \IfFileExists{\mc@class@name.\alt@cls@extension} -% {\let\mc@extension\alt@cls@extension -% \mc@load@class -% \def\mc@extension{\@currext}} -% {\mc@load@class}} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\mc@extension} -% \begin{macro}{\@onefilewithoptions} -% A lot of code here for two tiny changes of |\@currext| to |\mc@extension|. -% The file with the alternate extension masquerades as one with the normal -% extension in every way except the actual filename. -% \begin{macrocode} -% \def\mc@extension{\@currext} -% \def\@onefilewithoptions#1[#2][#3]#4{% -% \@pushfilename -% \xdef\@currname{#1}% -% \global\let\@currext#4% -% \expandafter\let\csname\@currname.\@currext-h@@k\endcsname\@empty -% \let\CurrentOption\@empty -% \@reset@ptions -% \makeatletter -% \def\reserved@a{% -% \@ifl@aded\@currext{#1}% -% {\@if@ptions\@currext{#1}{#2}{}% -% {\@latex@error -% {Option clash for \@cls@pkg\space #1}% -% {The package #1 has already been loaded -% with options:\MessageBreak -% \space\space[\@ptionlist{#1.\@currext}]\MessageBreak -% There has now been an attempt to load it -% with options\MessageBreak -% \space\space[#2]\MessageBreak -% Adding the line:\MessageBreak -% \space\space\string\usepackage -% [\@ptionlist{#1.\@currext},#2]{#1}\MessageBreak -% to your document may fix this.\MessageBreak -% Try typing \space <return> \space to proceed.}}}% -% {\@pass@ptions\@currext{#2}{#1}% -% \global\expandafter -% \let\csname ver@\@currname.\@currext\endcsname\@empty -% \InputIfFileExists -% {\@currname.\mc@extension}% -% {}% -% {\@missingfileerror\@currname\mc@extension}% -% \let\@unprocessedoptions\@@unprocessedoptions -% \csname\@currname.\@currext-h@@k\endcsname -% \expandafter\let\csname\@currname.\@currext-h@@k\endcsname -% \@undefined -% \@unprocessedoptions} -% \@ifl@ter\@currext{#1}{#3}{}% -% {\@latex@warning@no@line -% {You have requested,\on@line, -% version\MessageBreak -% `#3' of \@cls@pkg\space #1,\MessageBreak -% but only version\MessageBreak -% `\csname ver@#1.\@currext\endcsname'\MessageBreak -% is available}}% -% \ifx\@currext\@clsextension\let\LoadClass\@twoloadclasserror\fi -% \@popfilename -% \@reset@ptions}% -% \reserved@a} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \section{Pass control to a macro} -% -% \begin{macro}{\documentclass} -% To enable divergences from standard \LaTeX{} of the second kind only, -% uncomment the following definition and ensure that all definitions in the -% next and previous sections are commented out. Please also change the -% definition of |\fileinfo| above. You must define |\dc@|\meta{class} in your -% \file{metaclass.cfg} or before the |\documentclass| command in your document, -% if you want to define it at all. -% \begin{macrocode} -% \def\documentclass{% -% \let\documentclass\@twoclasseserror -% \if@compatibility\else\let\usepackage\RequirePackage\fi -% \@ifundefined{dc@\mc@class@name} -% {\mc@load@class} -% {\@nameuse{dc@\mc@class@name}}} -% \end{macrocode} -% \end{macro} -% -% \section{First extension then macro} -% -% \begin{macro}{\documentclass} -% To enable divergences from standard \LaTeX{} of both the first and second -% kinds, uncomment the following definition as well as the definitions of -% |\alt@cls@extension|, |\mc@extension|, and |\@onefilewithoptions| above. -% Please also change the definition of |\fileinfo| above. -% \begin{macrocode} -% \def\documentclass{% -% \let\documentclass\@twoclasseserror -% \if@compatibility\else\let\usepackage\RequirePackage\fi -% \IfFileExists{\mc@class@name.\alt@cls@extension} -% {\let\mc@extension\alt@cls@extension -% \mc@load@class -% \def\mc@extension{\@currext}} -% {\@ifundefined{dc@\mc@class@name} -% {\mc@load@class} -% {\@nameuse{dc@\mc@class@name}}}} -% \end{macrocode} -% \end{macro} -% -% \section{Actually do something} -% -% So far we've just defined a command called |\documentclass|. It's time to -% use it. It's probably best if this remains at the end of the (extracted) -% file. -% \begin{macrocode} -\documentclass -% \end{macrocode} -% -% \begin{macrocode} -%</metaclass> -% \end{macrocode} -% -% \appendix -% \section{Perverse cases} -% \label{perverse} -% -% \ALaTeX{} as distributed produces \ext{dvi} files identical to ones that -% \LaTeX{} produces from the same source. Differences are conceivable -% only in the following perverse cases. -% \begin{enumerate} -% \item The document contains \TeX{} code that depends upon the exact -% definitions or undefined state of the macros -% \begin{quote}\raggedright -% |\ALaTeX|, |\documentclass|, |\mc@documentclass|, -% |\mc@@documentclass|, |\mc@class@options|, |\mc@class@name|, -% |\mc@class@version|, and |\mc@load@class|. -% \end{quote} -% \item Processing the document requires the (almost trivial) internal -% resources consumed by defining the above macros and loading the metaclass -% file. -% \item There is unfriendly code in the source before the |\documentclass| -% command. Normally only harmless comments and \env{filecontents} -% environments will precede the |\documentclass| command, but other code is -% possible, that would cause the \ALaTeX's output to differ from \LaTeX's. -% \item The arguments to |\documentclass| are very unusual, for example, they -% change catcodes or have complicated expansions. \ALaTeX{} scans the -% arguments to |\documentclass| slightly differently than \LaTeX{} does. -% \end{enumerate} -% No one should have to worry about these cases, and if they come up the -% problem should be obvious. -% -% \section{Kernel Patch} -% -% This is the code that patches the \LaTeX{} kernel. -% -% \begin{macrocode} -%<*alatex> -\def\fileinfo{ALaTeX patch to LaTeX kernel} -\def\fileversion{v1.0} -\def\filedate{1996/01/24} -\def\docdate{1996/01/24} -\edef\PPOptArg{\filedate\space \fileversion\space \fileinfo} -\ProvidesFile{metaclas.cfg}[\PPOptArg] - -\makeatletter -% \end{macrocode} -% -% This is \ALaTeX, so make sure to announce it, and that it's nonstandard. We -% don't want to change the |\fmtversion|. We want \ALaTeX{} to masquerade as -% \LaTeX{} to the programs but not the users. -% -% This startup banner may be further modified by the code in |ltfinal.dtx| if a -% patch file is present. -% \begin{macrocode} -\everyjob{\typeout{ALaTeX\space<\fmtversion\space R1> (NOT STANDARD LATEX)}} -\immediate\write16{ALaTeX\space<\fmtversion\space R1> (NOT STANDARD LATEX)} -% \end{macrocode} -% -% \begin{macro}{\ALaTeX} -% Provide a logo. -% \begin{macrocode} -\DeclareRobustCommand{\ALaTeX} - {A\LaTeX} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\documentclass} -% \begin{macro}{\mc@documentclass} -% \begin{macro}{\mc@@documentclass} -% \begin{macro}{\mc@class@options} -% \begin{macro}{\mc@class@name} -% \begin{macro}{\mc@class@version} -% If the file |metaclas.cfg| exists in the search path, then the -% |\documentclass| command reads its three arguments (two are optional) into -% variables, and passes control to that file. If there is no such file, then -% we proceed just as in \LaTeX. Since |\documentstyle| loads some code then -% calls |\documentclass|, 2.09 documents also fall under the control of the -% metaclass mechanism. -% \begin{macrocode} -\def\documentclass{% - \IfFileExists{metaclas.cfg} - {\@ifnextchar[%] - {\mc@documentclass} - {\mc@documentclass[]}} - {\let\documentclass\@twoclasseserror - \if@compatibility\else\let\usepackage\RequirePackage\fi - \@fileswithoptions\@clsextension}} - -\def\mc@documentclass[#1]#2{% - \@ifnextchar[%] - {\mc@@documentclass{#1}{#2}} - {\mc@@documentclass{#1}{#2}[]}} - -\def\mc@@documentclass#1#2[#3]{% - \def\mc@class@options{#1}% - \def\mc@class@name{#2}% - \def\mc@class@version{#3}% - \makeatletter - \input{metaclas.cfg}% - \makeatother} - -\@onlypreamble\documentclass -\@onlypreamble\mc@documentclass -\@onlypreamble\mc@@documentclass -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% Dump the format. -% \begin{macrocode} -\makeatother -\dump -% \end{macrocode} -% -% \begin{macrocode} -%</alatex> -% \end{macrocode} -% -% \Finale |