summaryrefslogtreecommitdiff
path: root/macros/generic/midnight/gloss.doc
blob: 225180806ab4c3042e021ac3414b95386e563cdc (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
% gloss.doc  --- version 1.0 (26 November 1990)
% This is the documentation for gloss.tex.
% To read this file, process it with (plain) TeX: tex gloss.doc
% (To do that, you need both gloss.tex and manmac.tex. The latter has
% the macros for typesetting the TeXbook, as explained in appendix E.
% It comes free with the standard distribution of TeX.)
%
% NOTE: Processing this file with TeX will create empty files
%       index.tex and answers.tex in your directory. And if you
%	have a file pages.tex in your directory, TeX will probably
%	get very confused.
%	The manmac format will try to load a font called cmman; if
%	TeX complains that it cannot find that font you can savely
%	ignore that, since the font is not actually used.
%
% This file: copyright (c) 1990  Marcel van der Goot.
%	You may redistribute this file and printed versions of it.
%
% original: csvax.cs.caltech.edu [131.215.131.131] in pub/tex
%           (use anonymous ftp). Also in various archives.
%
% Marcel van der Goot
% marcel@cs.caltech.edu
%   Caltech 256--80
%   Pasadena, CA 91125
%   (818) 356--4603

% ------ definitions for manual pages:
% The documentation is typeset using Knuth's ``manmac'' macros, with a
% few additional things defined here. You are free to use or adapt these
% extra definitions.

\input manmac % the macros used for typesetting The TeXbook (appendix E)
\catcode`^=7 % manmac makes ^ active for creating an index
	% we don't make an index, and we need ^ to be non-active

{\catcode`\^^M=12 \endlinechar=-1 % 12 = other
\long\gdef\manpagehead#1^^M#2^^M#3^^M^^M% tex-file, description, version
   {\egroup % matches \bgroup in \manpage
    \par\vfill\eject
    \edef\rhead{\manualname: #1\unskip}%
    \setbox1=\hbox{\titlefont #1\quad}%
    \setbox3=\vtop{\advance\hsize by-\wd1 \parindent=0pt \raggedright
		   #2\par
		   #3\par
		   \cnotice
		  }%
    \line{\box1\box3}%
    \bigskip\bigskip\bigskip\noindent
   }%
} % restore \catcode`\^^M

\outer\def\manpage
   {\bgroup\catcode`\^^M=12
    \manpagehead
   }

\hsize=6.5in\vsize=8.9in % default plain TeX values
\pagewidth=\hsize \pageheight=\vsize

\def\cnotice{Copyright \copyright\ 1991 Marcel R. van der Goot}
\def\manualname{Midnight Macros}

% LaTeX logo, from latex.tex (except for the capital `A': manmac
% doesn't have a real smallcaps font)
\def\LaTeX{{\rm L\kern-.36em\raise.3ex\hbox{\sc A}\kern-.15em
    T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}

\tenpoint

% (end of extra definitions)

% -------------------- gloss.doc:

\input Midnight/gloss % change this to refer to gloss.tex on your system

\pageno=5 % follows quire.doc

\manpage gloss.tex
Macros for vertically aligning words in consecutive sentences.
Version: 1.0 (26 November 1990) (doc: 10 November 1990)

To gloss means to insert explanations or translations of words
between the lines of a text. For ease of reading, one generally
wants the explained word and the explanation to line up, as in
\gloss Dit is een Nederlands voorbeeld.
This is a Dutch example.
\begindisplay
\box\gline
\enddisplay
The macros defined in gloss.tex make it convenient to typeset
such glossed sentences. To use the macros, you first have to
|\input gloss|\footnote*{We have made no attempt to \LaTeX ify gloss.tex,
but you can use the macros in \LaTeX\ just as in plain \TeX.}.
The main macro for typesetting glossed sentences
is |\gloss|. It should be followed by the two sentences, each
terminated by a \<return>. The previous example was typeset with
\begintt
\gloss Dit is een Nederlands voorbeeld.
This is a Dutch example.
\endtt
But instead of printing the glossed sentence, |\gloss| puts the
whole construction in an hbox, called |\gline|. To actually insert
that box in your text, you use |\box\gline| or |\unhbox\gline|.
The text is put in a box to make it easier to handle. For instance,
it makes it easy to put extra indentation or an example number
in front of the sentence. (The baseline of the hbox is the baseline
of the second line in the box.) The difference between |\box\gline|
and |\unhbox\gline| is that the latter allows line breaks in the
glossed sentence. That is obviously only useful if the glossed
sentence is quite long; we will see an example later on.

The |\gloss| macro splits each sentence into words, and then aligns
the words. In this context, a word is a sequence of characters separated
by spaces. The number of spaces between words is irrelevant, so that
you can line up the words in your input as well. Using
\begintt
\gloss Dit  is een Nederlands voorbeeld.
       This is a   Dutch      example.
\endtt
gives exactly the same output as the input given before. However,
you should not insert extra \<return> symbols. The sentences
can have a different number of words.
Sometimes one of the two sentences has a word without equivalent
in the other sentence. In such cases you can insert an empty word
with |{}|. You can also combine several words into a single word,
by using grouping. The following example illustrates both.
\begintt
\gloss Dit is een voorbeeldje     in het Nederlands.
       This is a {little example} in {}  Dutch.
\endtt
gives
\gloss Dit is een voorbeeldje     in het Nederlands.
       This is a {little example} in {}  Dutch.
\begindisplay
\box\gline
\enddisplay
Without the grouping ``example'' would have been lined up
with ``{\it in\/}.''

By default the first sentence of a glossed pair is set in italic font
(|\it|), the second in roman font (|\rm|). You can change this by,
for instance, setting |\let\eachwordone=\rm|, which will set
each word in the first sentence in roman font. The font of the second
sentence is governed by |\eachwordtwo|. This use of the |\eachword|
macros is an instance of a more general mechanism that is explained
later. You can insert font changes in the middle
of a sentence, but they only apply to the next word.
\begintt
\gloss Dit  is een Nederlands voorbeeld.
       This is a   \sl Dutch      example.
\endtt
will set ``Dutch'' in slanted font, but ``example'' in the default
font. The |\gloss| macro considers |\sl Dutch| to be a single word,
and sets this word in an hbox so that the effect of the font change
is limited. |\sl| is not considered a word by itself, because
spaces following a macro are always skipped.

{
\let\eachwordone=\rm
\def\sixstrut{\vrule height5pt depth1.5pt width0pt }
\def\eachwordtwo{\let\strut=\sixstrut\sixrm}
\baselineskip=22.5pt
\setbox0=\hbox{ }\advance\rightskip by-\wd0
\let\s=\string

\gloss You may want to gloss more than a single sentence, maybe
       {} verb verb {} verb  {}   {}   {} {}    noun
\gloss a whole paragraph.
       {} {}   noun
\gloss It would however be quite inconvenient if you had to
       {} verb {}     verb
\gloss follow |\s\gloss| by a whole paragraph on a single line (by
       verb    macro     {} {} {}   noun      {} {} {}    noun
\gloss terminating each line with a {|\%|-sign}), followed by a line
       verb        {}   noun  {} {} noun             verb  {} {} noun
\gloss containing all the glosses. Especially if there are a lot of
       verb {} {}         noun      {}        {} {}   verb {} noun
\gloss unglossed (empty) words, it would be hard to get the sentences
       verb?       {}     noun   {} verb verb {} {} verb {} noun
\gloss lined up properly. Fortunately, a paragraph like the current
       verb {} {}          {}         {} noun
\gloss one can be set quite easily. |\s\gloss| puts the created sentence
       noun verb verb verb {} {}      macro    verb {} verb noun
\gloss  in |\s\gline|, and |\s\gline| is emptied by using |\s\box| or
       {} box        {}   box   verb verb    {} verb
\gloss  |\s\unhbox|. But if you don't empty |\s\gline|, the next
       {}          {}  {} {} verb   verb     box
\gloss usage of |\s\gloss| will append the new sentence to the older
       noun  {}  macro  verb verb    {}   {} noun
\gloss one. Hence, this paragraph was typeset with
       noun {}    {}   noun     verb  verb
\unhbox\gline

}
\beginlines
|\gloss You may want to gloss more than a single sentence, maybe|
\nobreak
|       {} verb verb {} verb  {}   {}   {} {}    noun|
|\gloss a whole paragraph.|
\nobreak
|       {} {}   noun|
\quad\vdots\ {\sevenrm(10 more)}\smallskip
|\gloss one. Hence, this paragraph was typeset with|
\nobreak
|       noun {}    {}   noun     verb  verb|
\nobreak\smallskip\nobreak
|\unhbox\gline|
\endlines
Of course, a few more things, like the fonts, had to be changed. We
discuss that next. Also notice that it takes \TeX\ quite some time
to typeset such a paragraph.

\medskip
\def\word{{\rm\<word>}}
\danger Each word from the first line following |\gloss| is set in
an hbox as follows
\begintt
\hbox{\eachwordone\strut|word|]}
\endtt
The macro |\eachwordone| is by default |\let| equal to |\it|, but
can be redefined. The previous paragraph was made with
\begintt
\let\eachwordone=\rm
\def\sixstrut{\vrule height5pt depth1.5pt width0pt }
\def\eachwordtwo{\let\strut=\sixstrut\sixrm}
\endtt
(If |\strut| were not redefined, there would be too much space between
the first and the second line.) Furthermore, to obtain a larger separation
between the pairs of lines, the |\baselineskip| was set to 22.5 pt
(|\baselineskip| governs the spacing between the glossed pairs, the
spacing within the pair is governed by the |\strut|s.) Since a word
does not contain spaces, and each word is followed by a space,
the |\eachword| macros can easily be made to take the word (and the
|\strut|) as argument. For instance, the following definition will
underline every word in the first line.
\begintt
\def\eachwordone#1|]{\rm\underbar{#1}|]}
\endtt
The space following the word does not disappear at a line break, because
it is hidden within an hbox. To hide this extra space between the last
word and the right margin, the final thing needed to typeset the
previous paragraph was
\begintt
\setbox0=\hbox{|]}\advance\rightskip by-\wd0
\endtt
This is not perfect, because the size of the space depends on the font:
there is a {\sixrm verb} sticking out slightly.

\danger The word boxes are paired together in a single vbox, and
|\gline| consists of a sequence of these vboxes. The vboxes are separated
by some glue, equal to |\glossglue|. Without this glue no line breaks
would be possible, nor would the spaces between the words be stretchable.
|gloss.tex| says |\glossglue=0pt plus2pt minus1pt|. The stretch and
shrink components are only relevant if |\unhbox\gline| is used.

Sometimes you would rather not have extra space following a word,
for instance when parts of a word are glossed separately: In
\gloss Dit is een voorbeeld- je in het Nederlands.
This is an example (``little'') in {} Dutch.
\begindisplay
\box\gline
\enddisplay
it is preferable to have no space following ``{\it voorbeeld-}'' if it
is not necessary. This can easily be achieved with a macro like
\begintt
\def\+#1|]{#1}
\endtt
which is inserted just before the word that should not have a space:
|\+voorbeeld- je|.
It can also be done by making the hyphen gobble up the space, as in
\begintt
\let\hyphen=-
\catcode`-=\active
\def-#1|]{\hyphen#1}
\endtt
However, this does not work if there is a word with a hyphen in the
middle. To handle that situation, a more sophisticated definition
of |-| can check what the next character is, using
|\futurelet|. We will not do that here, as it has little to do with
glossed sentences.

\bye