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
|
@Section
@Title { "@Language" and "@CurrLang" }
@Tag { language }
@Begin
@PP
The @@Language symbol informs Lout that its right parameter is written
language.sym @Index { @@Language symbol }
in the language of its left parameter:
@ID @Code "Danish @Language { ... }"
Basser Lout Version 3 uses this information in two ways: to hyphenate
words appropriately to that language, and to change the value of the
@@CurrLang symbol (see below). Other uses, such as right-to-left
formatting of certain languages, may be added in the future.
@PP
The left parameter must either be empty (which means to leave the current
language unchanged) or else it must have been given in a @Code "langdef"
langdef.sym @Index { @Code langdef language definition }
language definition at the beginning of the input:
@ID {
@Code "langdef Danish Dansk {" @I implementation-dependent @Code "}"
}
After @Code "langdef" comes a sequence of one or more simple words,
which are alternative names for the language being defined. Following
them comes an implementation-dependent part between braces. In Basser
Lout Version 3 this part contains the name of the Lout hyphenation
information file (minus its .lh suffix) to be used when hyphenating
words in this language, followed by a sequence of words which define
the ends of sentences. For example:
@ID @Code "langdef English { english . : ? ! .) ?) !) }"
defines a language called English with hyphenation patterns file
{@Code english.lh} and seven ways to end a sentence. The use of
these sentence endings is described in Section {@NumberOf space}. If
there is no hyphenation file available, this is indicated by writing
@Code "-" for the file name; if there are no sentence ends, they are
simply omitted.
@PP
The @@CurrLang symbol, which has no parameters, evaluates to the first
currlang.sym @Index { @@CurrLang symbol }
name given in the @Code "langdef" of the language in force at the point
where it is invoked:
@ID @Code "Dansk @Language { This is @CurrLang. }"
has result
@ID { Dansk @Language { This is @CurrLang. } }
It is typically used with the @@Case symbol like this:
@ID @Code {
"@CurrLang @Case {"
" Danish @Yield tirsdag"
" English @Yield Tuesday"
" French @Yield Mardi"
"}"
}
This example evaluates to the name of the third day of the week in the
current language.
@PP
The current language is part of the style of an object, like its
font. As explained in Section {@NumberOf size}, style is inherited
through the point of appearance, which for language can be
unexpected. For example, an index entry which originates in a French
chapter but appears in an English index will have English for its
language, so must be explicitly set to French using @@Language.
@End @Section
|