[texhax] learning tex vs latex
Philip TAYLOR
P.Taylor at Rhul.Ac.Uk
Fri Oct 30 15:39:17 CET 2009
Adam Fenn wrote:
> Philip Taylor wrote:
>
> > They will also almost
> > certainly follow Knuth's style of coding which (sadly) does
> > almost nothing to separate form from content (\bigskip and
> > friends are really evil, IMHO).
>
> Could you elaborate upon this for a self-taught plain TeXer?
By all means (and perhaps "evil" was a bit strong :-)) --
Let me start by saying that, IMHO, the Plain format is
neither fish nor fowl : it is not a minimal set of
definitions on which a more powerful format could
be layered, nor is it sufficiently powerful in itself
to be used for more than a very small subset of possible
documents. If it were to set out to be the former,
it would need to do little more initialise catcodes
and provide some basic definitions; if it were to set
out to be the latter, at the very least it would need
to provide an orthogonal font size selection mechanism.
In fact, it does neither. It provides a lot of
syntactic sugar which is best eschewed, and fails to
address the fundamental problem of wishing to use other
than 10pt as the root font size.
So what's particularly wrong with \bigskip ? Of itself,
nothing. Indeed, Don's introduction thereto contains
nothing but good sense. I quote :-
> Instead of sprinkling various amounts of glue throughout a manuscript, expressing
> each of them explicitly in terms of points, you will find it much better
> to explain your intentions more clearly by typing something like `\smallskip'
> when you want abnormal spacing. The definition of \smallskip can readily
> be changed later, in case you want such spaces to be smaller or larger. Plain
> \TeX also provides you with `\medskip', which is worth two smallskips, and
> `\bigskip', which is worth two medskips.
But what Don fails to do at this point (although it
could be argued that many of his later usages of
\bigskip are intended to illustrate the point) is
to state clearly that THE USE OF \bigskip SHOULD BE
RESTRICTED TO MACRO DEFINITIONS. Indeed, when he
gives his "Concert" example in Appendix E ("Example
Formats"), he even violates this "rule" himself :-
> \input concert
> \tsaologo
> \medskip
> \centerline{Friday, November 19, 1982, 8:00 p.m.}
> \bigskip
> \centerline{\bf PROGRAM}
> \medskip
> \composition{Variations on a Theme by Tchaikovsky}
> \composer{Anton S. Arensky (1861--1906)}
> \smallskip
> {\medtype
> \movements{Tema: Moderato\cr
> Var.~I: Un poco pi\`u mosso&Var.~V: Andante\cr
> Var.~II: Allegro non troppo&Var.~VI: Allegro con spirito\cr
> Var.~III: Andantino tranquillo&Var.~VII: Andante con moto\cr
> Var.~IV: Vivace&Coda: Moderato\cr}
> }
As a result, almost every beginning Plain TeX user creates
his or her documents on exactly this model :-
> \tsaologo
> \medskip
> \centerline{Friday, November 19, 1982, 8:00 p.m.}
> \bigskip
> \centerline{\bf PROGRAM}
> \medskip
> \composition{Variations on a Theme by Tchaikovsky}
> \composer{Anton S. Arensky (1861--1906)}
> \smallskip
whereas what they should be doing (IMHO, of course)
is creating macros such as \datetime, \heading that
provide a clean separation between content and form.
Indeed, the above example would be ten times better
(IMHO) if Don had written something like :
> \settsaologo
> \datetime {Friday, November 19, 1982, 8:00 p.m.}
> \heading {PROGRAM}
> \composition {Variations on a Theme by Tchaikovsky}
> \composer {Anton S.~Arensky (1861--1906)}
where \settsalogo, \datetime, \heading, etc.,
perform all the necessary formatting implicitly,
leaving a cleanly marked-up document with no
expolicit formatting whatsoever.
OK, rant over (as William would say !). Does this
clarify things, Adam ?
** Phil.
More information about the texhax
mailing list