summaryrefslogtreecommitdiff
path: root/usergrps/uktug/baskervi/4_5/clark2.tex
blob: 341a40872502ae7c8e97b0b9f1d29876acd1ea80 (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
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
\title{A Moral Tale}
\author[Malcolm Clark]{Malcolm Clark\\
\texttt{m.clark@warwick.ac.uk}}
\begin{Article}
\section{Keeping to the straight (and narrow)}
Both \TeX\ and \LaTeX\ are remarkably smart.
From time to time they are either too smart, or not quite
smart enough. One area that I have always been dubious about
is how subscripts are handled. In the simple case,
I find that the unevenness of the baselines in a case
like:
\[ x_1y^1_1 \]
is both odd and unsettling. The reasons for this
are mainly in the font dimensions. This is a subject
area which is mostly relegated to a dusty corner, although I do
address it a little in my \emph{Plain \TeX\ Primer}.
At this point, I have to admit that
I strongly believe that the use of \LaTeXe\ is to be
advocated and preferred, at least until \LaTeX3 and \LaTeX4 come along.
Using \LaTeX2.09 is only excusable if you have old documents
you still need to process. Anything new should be done in \LaTeXe.
The justification for the use of \TeX\ is more difficult,
unless you have particularly well developed prejudices.
However, in the explanations that follow
I shall start through plain \TeX\ rather than \LaTeXe.
To some extent, \TeX\ is  the
`accessible basic \LaTeX\ system, which doesn't require
wizardry to tailor to one's own preferences' which
Siep Kroonenberg said is needed (\BV~4.4).
At this point we need something slim and easily tweakable.
I'm therefore using \TeX\ as a sort of `prototyping' system which
allows me to demonstrate things which I will eventually transfer
to \LaTeXe. This is how I think \TeX\ is best used.

\section{A plain explanation}
There are a couple of interactions going on with sub- and superscripts. The
first and easiest to explain is the behaviour of
two of the font dimensions, 16 and 17, which control the distance between
the subscripts and the baseline. If we constrain the two font dimensions
to be equal, our apparent `problem' disappears
(see also Knuth, page 179, a double dangerous bend section).
Therefore, if we set
\begin{verbatim}
\fontdimen16\cmsy=\fontdimen17\cmsy
\end{verbatim}
we can obtain results where the baselines of the  subscripts
are aligned:
\[ x_1^{}y^1_1 \]

This is reasonably well understood, and the explanation,
that we do not wish the superscripts and subscripts to interfere
with one another (in a broader aesthetic sense) seems reasonably
well grounded. I am not too clear how widely this particular attention
to detail is practised in the publishing profession. Perhaps
some readers have information on this. I would be particularly interested
in publishing houses who do not use the `Addison-Wesley' approach
to typesetting mathematics.

The real stimulus for this note was the
common requirement to include pieces of text within
a mathematical expression. When the  concepts
are going to be used frequently, this is unlikely to
be very important, since you would probably  define a
symbol to represent the concept. However, in more informal
works it can make the equation much more accessible to the reader.
To ease terminology,
I shall refer to the relative sizes by the plain \TeX\ terms:
`display style' as in (\ref{naive}), and `script style'
for first level subscripts, diminished in size, as in (\ref{correct}).
In plain \TeX, display style would be a 10\,pt font, and script style would
be 7\,pt.


For example, it may be convenient to be able to say
\begin{equation}
\log(\textrm{amplitude})=-2(2H+1)\log(\textrm{order}) \label{display}
\end{equation}
given by
\begin{verbatim}
\log(\hbox{amplitude})=
  -2(2H+1)\log(\hbox{order})
\end{verbatim}
This is fine until we try to do the same for subscripted
text. For example, the `direct' equivalent of
\begin{verbatim}
 u_{\hbox{ex}}
  =u_{\hbox{maximum Airy wave}}(1-F)
\end{verbatim}
gives
\begin{equation}
 u_{\textrm{ex}}=u_{\textrm{maximum Airy wave}}(1-F)\label{naive}
\end{equation}
which is `subscripted' material  but in display style.
If we really wanted
\begin{equation}
u_{\textrm{\scriptsize ex}}=
   u_{\textrm{\scriptsize maximum Airy wave}}(1-F)\label{correct}
\end{equation}
how would we obtain it?
The answer is fairly straightforward: force the size of the text
to \verb|\scriptstyle| size. Unfortunately we cannot do this by
employing \verb+\scriptstyle+ directly, since it is an instruction
which may be used only within maths. Enclosing it in an \verb+\hbox+
insulates it from maths. The nearest we can do is to recall that
a first level superscript is 7pt, and use \verb+\sevenrm+:
\begin{verbatim}
u_{\hbox{\sevenrm ex}}=
u_{\hbox{\sevenrm maximum Airy wave}}
(1-F)
\end{verbatim}
This is most unsatisfactory. You should never have to declare
explicit font changes like this.

I would also agree that all this \verb|\hbox|  is
a bit of a mouthful, but you are buying convenience for your readers
at the expense of some minor personal inconvenience. But I said earlier,
if you were going to litter your text with this, you really ought
to define a few symbols instead.

There is still a `small' problem with (\ref{naive}).
Let's wind back a little and
assume that we are not all that interested in making sure
the subscripted text is in script style, and that
we are content with display style size for the subscripted
textual material. This is perhaps not
wholly unreasonable, according to the context. Consider the
following equation fragment:
\begin{equation}
a_{\textrm{x}} + a_{\textrm{y}} + a_{\textrm{b}} \label{simple}
\end{equation}
obtained from
\begin{verbatim}
a_{\hbox{x}} + a_{\hbox{y}}
  + a_{\hbox{b}}
\end{verbatim}
The problem is the lack of alignment in the baselines of the subscripted
material, which was also present with the `ex' of (\ref{naive}).
The `x' and `y' are fine, but the `b' has a lower
baseline.  As I said earlier, I find this a little unsettling.
This time however, we have no superscripts interacting with
the positioning.


We can solve the problem of aligning the baselines moderately readily by a
subterfuge. It just `happens' that the left and right parentheses in Computer
Modern are text characters with the maximum vertical extent. No other text
character has a greater ascender or descender. Had our text subscripted material
been parenthetical, the baselines would have been aligned:
\begin{equation}
a_{\textrm{(x)}} + a_{\textrm{(y)}} + a_{\textrm{(b)}} \label{parentheses}
\end{equation}
This is probably not what we wanted, but we could just have a
\verb+\vphantom{)}+ with each subscript. It is ugly and crude,
but it will do what we require.
\begin{equation}
a_{\textrm{x\vphantom{)}}} + a_{\textrm{y\vphantom{)}}}
            + a_{\textrm{b\vphantom{)}}} \label{ugly}
\end{equation}
for example:
\begin{verbatim}
a_{\hbox{x\vphantom{)}}}
  + a_{\hbox{y\vphantom{)}}}
  + a_{\hbox{b\vphantom{)}}}
\end{verbatim}
In passing, those depending on their intuition and considering the use of  a
\verb+\strut+ are sadly wrong. Struts which are
the size of the `local' parenthesis would be a boon, but
unfortunately they are not so defined.


At this point, the question we could ask is `why does
the displaystyle subscripted material behave differently
to the scriptstyle material'. Naturally, all is revealed in
the \TeX\ book. Appendix G (Generating Boxes from Formulas)
reveals all, but in true K(nu)thonic style it demands
great attention to detail.  The answer is clearly not
just in the font dimensions, or placing them equal would have
meant that they all shared the same baseline, and the presence or lack of
superscripts would have been irrelevant. Fighting your way
through the key section (number 18) we will come to the
conclusion that it is the size (mostly the height) of the subscripted
material which determines what happens. In the case of material
set in displaystyle, the extra height of material with an ascender
is sufficient to select a branch which lowers it further. The
material without ascenders does not select the option, and
therefore we can have irregular baselines. The scriptsize material
on the other hand does not branch to this alternative, because it is that
much smaller in the first place, and therefore the baselines remain aligned.

In order to force conditions so that the subscripted display style material
is guaranteed to align, we can fiddle with the font dimensions.
What we cannot do is fiddle with the conditions and rules which are hard
wired into \TeX. This, I think is one of the weaknesses of \TeX. Its
monolithic nature precludes plugging in different rule sets --
either as improvements, or to accommodate new situations. If we
change the two font dimensions to
\begin{verbatim}
\fontdimen16\tensy=1ex
\fontdimen17\tensy=1ex
\end{verbatim}
we can ensure the alignment. Unfortunately, this is less than
perfect when we also wish to have `normal' scriptstyle susbcripts.
They appear much too far below the level of the material they
subscript. The value of 1\,ex is actually a little more than
you would need if you never had superscripts to contend with too
(about 0.95ex would probably do -- you can work it out exactly with
the rules in section 18), but as soon as you bring
in superscripts you then have to contend with an extra vertical
movement designed to ensure that sub- and superscript are apart
by at least four times the thickness of a rule.



\section{Back to the present}
How do we translate all this into \LaTeXe, since that
is what you are going to want to use? It turns out
that the option of altering the font dimensions is not
really one which is open to us. Although the \emph{Companion}
does give an example of the use of \verb+\DeclareFontShape+ where
it demonstrates the syntax of how \verb+\fontdimen+\,s may be changed,
it notes that the example would not work and that `the best way to solve this
problem is to define a virtual font'. I'm afraid that if the solution is to
define a virtual font, then I'll change the problem. Another problem lies in
the fact that you cannot change the characteristics of already loaded fonts.
The fonts we use are almost inevitably preloaded (i.e.~\LaTeXe\ has already
absorbed all their font metric information, including the font dimensions). The
only way to do this is therefore to work with \textsf{tftopl} to convert the
\TeX\ font metric file to a property list, edit the font dimensions by hand,
convert back to a \TeX\ font metric file and then re-create the \LaTeXe\
format. This is almost as bad as using virtual fonts. We do not end up with
something we can switch on and off at will. You cannot change formats part way
through typesetting.

The translations of equations~\ref{display} and~\ref{naive} are
done simply by changing the \TeX\ \verb+\hbox+ instruction into either an
\verb+\mbox+ or \verb+\textrm+. In this instance they are equivalent. In
the case of~\ref{correct}, we do not have a \LaTeXe\ instruction
\verb+\scriptstyle+. How then do we obtain the `correct' size? Things start to
become a little more difficult. \LaTeXe\ does support a number of font size
changing instructions, notably \verb+\small+, \verb+\footnotesize+,
\verb+\scriptsize+ and \verb+\tiny+. In all three size options, \textsf{10pt},
\textsf{11pt} and\textsf{12pt} the relative size gradation is

\[
\texttt{\char'134small}>\texttt{\char'134footnotesize}>
\texttt{\char'134scriptsize}>\texttt{\char'134tiny}
\]
That does not indicate which of these sizes corresponds to a \TeX\ scriptstyle,
although we could make a fair guess that \verb+\scriptsize+ is the likely
candidate. There is also an instruction \verb+\scriptstyle+, but this may only be
used within math style and trying to combine it with \verb+\textrm+ is doomed to
failure. You might have thought that \verb+\mathrm+ could help, but of course
the spacing between letters would be the normal maths spacing between variables.
It is obvious that \LaTeXe\ has a way of doing this properly, or constructs like
\begin{equation}
x_{\log y}
\end{equation}
would not work. If we delve into \textsf{latex2e.ltx}, where this and similar
operators are defined, we discover (certainly to my surprise) that they do not
use the \LaTeXe\ font changing mechanisms, but instead use the definition
\begin{verbatim}
\def\log{\mathop{\rm log}\nolimits}
\end{verbatim}
This is the very font changing mechanism which the \emph{Companion} describes
with the admonishment: `we suggest that you refrain from using such commands in
new documents'. To be fair, this isn't any sort of \LaTeX, but \TeX,
since the \verb+\def+  instruction is \emph{not} a \LaTeX\
command.\footnote{I've tried persuading FM that it should be removed at
\LaTeX3. He smiled.} To be even more fair, this deficiency has been
recognised, and my \textsf{latex2e.ltx} is the beta release. Apparently current
versions refer instead to \verb+\operator@font+: not normally accessible
to humans. 
However, although the sizes will be correct, the inter word spacing
disappears altogether.

The conclusion is therefore that we have to select one of the font size
changing instructions. Before we do that, let's look to see which of these
sizes would give us aligned subscripts. The earlier experiments with \TeX\
indicated that the alignment was sensitive to the size.
Here are the size changing mechanisms of
\verb+\small+ (\ref{small}), \verb+\footnotesize+
(\ref{footnotesize}), \verb+\scriptsize+ (\ref{scriptsize}),
 and \verb+\tiny+ (\ref{tiny}):
\begin{equation}
a_{\textrm{\small x}}
   + a_{\textrm{\small y}}
   + a_{\textrm{\small b}} \label{small}
\end{equation}
\begin{equation}
a_{\textrm{\footnotesize x}}
   + a_{\textrm{\footnotesize y}}
   + a_{\textrm{\footnotesize b}} \label{footnotesize}
\end{equation}
\begin{equation}
a_{\textrm{\scriptsize x}}
   + a_{\textrm{\scriptsize y}}
   + a_{\textrm{\scriptsize b}} \label{scriptsize}
\end{equation}
\begin{equation}
a_{\textrm{\tiny x}}
   + a_{\textrm{\tiny y}}
   + a_{\textrm{\tiny b}} \label{tiny}
\end{equation}
Examination reveals that \verb+\tiny+, and, as anticipated,
\verb+\scriptsize+ are aligned.
The problem stated however, was to have the subscripted material at
`normal' text size. Therefore the easy solution is to incorporate the
\verb+\vphantom+\,s, as in equation~(\ref{ugly}):
\begin{verbatim}
a_{\textrm{x\vphantom{)}}}
+ a_{\textrm{y\vphantom{)}}}
+ a_{\textrm{b\vphantom{)}}}
\end{verbatim}
Of course to save typing you would use \verb+\newcommand+ to
make \verb+\vphantom{)}+ shorter.
Should you wish to reduce the size, then you could do something like
\begin{verbatim}
a_{\textrm{\scriptsize x}}
   + a_{\textrm{\scriptsize y}}
   + a_{\textrm{\scriptsize b}}
\end{verbatim}

\section{Conclusions}
It therefore appears to be cumbersome to come up with some
neat fix, and the rather inelegant solution of phantom parentheses
seems to be about the least inoffensive we can manage. Do
remember that it only works in a guaranteed way with Computer Modern.
There is no reason to assume that other maths fonts will share this
characteristic. If you want to subscripted material to match in size to other
susbcripts, use \verb+\scriptsize+. In some ways the \LaTeX\ solutions are
tidier and marginally less inelegant than the plain \TeX\ solutions.

\section{Afterword}
There is yet hope. After I wrote this, I was alerted to the \textsf{amstext}
package which  produces  \verb+\scriptsize+ text when subscripted, without
any of the trickery outlined here. This is outlined on page 227 of \emph{The
Companion}. I should really have known, since, as Lamport says on page 52 of
\emph{The \LaTeX\ User's Guide}, `sooner or later you'll encounter one
(formula) which can't be handled with the commands described so far\dots
consider using the
\textsf{amstex} package'. \textsf{Amstext} is a sub-package of \textsf{amstex}.
\textsc{rtfm}.

If RAB's handy mathematical hints don't get there first, I'll look
at \textsf{amstex}  more closely in the future\dots
\end{Article}