summaryrefslogtreecommitdiff
path: root/macros/luatex/optex/base/languages.opm
blob: 52b52f775e73fa9ff42968007273798d2a8de294 (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
%% This is part of the OpTeX project, see http://petr.olsak.net/optex

\_codedecl \_mtext {Languages <2020-12-05>} % preloaded in format

   \_doc -----------------------------
   Only four words are generated by \OpTeX/ macros: \"Chapter",
   \"Table", \"Figure" and \"Subject". These phrases can be generated depending
   on the current value of `\language` register, if you use \`\_mtext``{<phrase-id>}`,
   specially `\_mtext{chap}`, `\_mtext{t}`, `\_mtext{f}` or `\_mtext{subj}`.
   If your macros generate more words then
   you can define such words by `\sdef{_mt:<phrase-id>:<lang>}` where
   `<phrase-id>` is a label for the declared word and `<lang>` is a language shortcut
   (iso code).
   \_cod -----------------------------

\_def\_mtext#1{\_trycs{_mt:#1:\_trycs{_lan:\_the\_language}{en}}
   {\_csname _mt:#1:en\_endcsname}}

\_sdef{_mt:chap:en}{Chapter} \_sdef{_mt:chap:cs}{Kapitola} \_sdef{_mt:chap:sk}{Kapitola}
\_sdef{_mt:t:en}{Table}      \_sdef{_mt:t:cs}{Tabulka}     \_sdef{_mt:t:sk}{Tabuľka}
\_sdef{_mt:f:en}{Figure}     \_sdef{_mt:f:cs}{Obrázek}     \_sdef{_mt:f:sk}{Obrázok}
\_sdef{_mt:subj:en}{Subject} \_sdef{_mt:subj:cs}{Věc}      \_sdef{_mt:subj:sk}{Vec}

   \_doc -----------------------------
   Using \`\_langw` `<lang> <chapter> <table> <figure> <subject>` you can
   declare these words more effectively:
   \maxlines=13
   \_cod -----------------------------

\_def \_langw #1 #2 #3 #4 #5 {%
   \_sdef{_mt:chap:#1}{#2}\_sdef{_mt:t:#1}{#3}\_sdef{_mt:f:#1}{#4}%
   \_sdef{_mt:subj:#1}{#5}%
}

\_langw en  Chapter      Table       Figure       Subject
%--------------------------------------------------------------
\_langw cs  Kapitola     Tabulka     Obrázek      Věc
\_langw de  Kapitel      Tabelle     Abbildung    Betreff
\_langw es  Capítulo     Tabla       Figura       Sujeto
\_langw fr  Chaptire     Tableau     Figure       Matière
\_langw it  Capitolo     Tabella     Fig.         Oggetto
\_langw pl  Rozdział     Tabela      Ilustracja   Temat
\_langw gr  Κεφάλαιο     Πίνακας     Σχήμα        θέμα
\_langw ru  Глава        Таблица     Рисунок      Предмет
\_langw sk  Kapitola     Tabuľka     Obrázok      Vec

   \_doc -----------------------------
   You can add more words as you wish. For example \`\today` macro:
   \_cod -----------------------------

\_def \_monthw #1 #2 #3 #4 #5 #6 #7 {%
   \_sdef{_mt:m1:#1}{#2}\_sdef{_mt:m2:#1}{#3}\_sdef{_mt:m3:#1}{#4}%
   \_sdef{_mt:m4:#1}{#5}\_sdef{_mt:m5:#1}{#5}\_sdef{_mt:m6:#1}{#5}%
   \_monthwB #1
}
\_def \_monthwB #1 #2 #3 #4 #5 #6 #7 {%
   \_sdef{_mt:m7:#1}{#2}\_sdef{_mt:m8:#1}{#3}\_sdef{_mt:m9:#1}{#4}%
   \_sdef{_mt:m10:#1}{#5}\_sdef{_mt:m11:#1}{#5}\_sdef{_mt:m12:#1}{#5}%
}

\_monthw en  January February March April May June
             July August September October November December
\_monthw cs  ledna února března dubna května června
             července srpna září října listopadu prosince
\_monthw sk  januára februára marca apríla mája júna
             júla augusta septembra októbra novembra decembra
\_monthw it  gennaio febbraio marzo aprile maggio giugno
             luglio agosto settembre ottobre novembre dicembre


\_sdef{_mt:today:en}{\_mtext{m\_the\_month} \_the\_day, \_the\_year}
\_sdef{_mt:today:cs}{\_the\_day.~\_mtext{m\_the\_month} \_the\_year}
\_slet{_mt:today:sk}{_mt:today:cs}

\_def\_today{\_mtext{today}}
\_public \today ;

   \_doc -----------------------------
   Quotes should be tagged by `\"<text>"` and `\'<text>'` if `\<iso-code>quotes`
   is declared at beginning of the document (for example `\enquotes`).
   If not, then the control
   sequences `\"` and `\'` are undefined. Remember, that they are used in
   another meaning when the `\oldaccents` command is used.
   The macros `\"` and `\'` are not defined as `\protected` because we need
   their expansion when `\outlines` are created.
   User can declare quotes by \^`\quoteschars``<clqq><crqq><clq><crq>`, where
   `<clqq>...<crqq>` are normal quotes and `<clq>...<crq>` are alternative quotes.
   or use \`\altquotes` to swap between the meaning of these two types of quotes.
   \nl
   \`\enquotes`, \`\csquotes`, \`\dequotes`, \`\frquotes` etc. are defined here.
   \_cod -----------------------------

\_def \_enquotes {\_quoteschars “”‘’}
\_def \_csquotes {\_quoteschars „“‚‘}
\_def \_frquotes {\_quoteschars “”«»}
\_let \_plquotes = \_frquotes
\_let \_esquotes = \_frquotes
\_let \_grquotes = \_frquotes
\_let \_ruquotes = \_frquotes
\_let \_itquotes = \_frquotes
\_let \_skquotes = \_csquotes
\_let \_dequotes = \_csquotes

   \_doc -----------------------------
   The \`\quoteschars``<lqq><rqq><lq><rq>` defines `\"` and `\"` as `\_qqA`
   in in normal mode and as expadable macros in outline mode.
   We want to well process the common cases: \code{\\"`&`"} or \code{\\"`\{`"}.
   This is the reason why the quotes parameter is read in verbatim mode and retokenized
   again by `\scantextokens`. We want to allow to quote the quotes mark
   itself by \code{\\"{`"`}"}. This is the reason why the sub-verbatim mode is
   used when the first character is \code{\{} in the parameter.\nl
   The `\"` is defined as `\_qqA\_qqB<lqq><rqq>` and `\'` as `\_qqA\_qqC<lq><rq>`.
   The \`\_qqA``\_qqB<clqq><crqq>` runs \`\_qqB``<lqq><rqq><text>"`.
   \_cod -----------------------------

\_def \_quoteschars #1#2#3#4{\_def\_altquotes{\_quoteschars#3#4#1#2}\_public\altquotes;%
   \_protected\_def \"{\_qqA\_qqB#1#2}\_protected\_def \'{\_qqA\_qqC#3#4}%
   \_regmacro{}{}{\_def \"##1"{#1##1#2}\_def \'##1'{#3##1#4}}}

\_def\_qqA#1#2#3{\_bgroup\_setverb \_catcode`\ =10
   \_isnextchar\_bgroup{\_catcode`\{=1 \_catcode`\}=2 #1#2#3}{#1#2#3}}
\_long\_def\_qqB#1#2#3"{\_egroup#1\_scantextokens{#3}#2}
\_long\_def\_qqC#1#2#3'{\_egroup#1\_scantextokens{#3}#2}

   \_doc -----------------------------
   Sometimes should be usable to leave the markup `"such"` or `'such'` i.e.~without
   the first backslash. Then you can make the characters `"` and `'` active
   by the \`\activequotes` macro and leave quotes without the first backslash.
   First, declare `\<iso-code>quotes`, then \^`\altquotes` (if needed) and finally
   \^`\activequotes`.

   \`\_resetaquotes` redefines expandable version of `\"<text>"` and `\'<text>'`
   used in outlines in order to the delimiter is {\em active} character. We
   are testing if \^`\quoteschars` were used now because the error in outlines
   can be more confusing.
   \_cod -----------------------------

\_def\_activequotes{\_adef"{\"}\_adef'{\'}\_resetaquotes}

\_bgroup \_catcode`,=13 \_lccode`\~=`\" \_lccode`\,=`\' \_lowercase{\_egroup
   \_def\_resetaquotes{%
      \_bgroup \_the\_regoul \_edef\_tmp{\"?"}\_egroup % test if \quoteschar were used
      \_regmacro{}{}{\_edef\"##1~{\"##1"}\_edef\'##1,{\'##1'}}}
}

\_public \quoteschars \activequotes \enquotes \csquotes \skquotes \frquotes \plquotes
   \esquotes \grquotes \ruquotes \itquotes \dequotes ;

   \_doc -----------------------------
   Bibliography references generated by \^`\usebib` uses more
   language-dependent phrases. They are declared here. We don't want to save
   all these phrases into the format, so the trick with {`\_endinput`}
   is used here. When \^`\usebib` is processed then the following part of the file
   `languages.opm` is read again.

   Only phrases of few languages are declared here now. If you want to declare
   phrases of your language, please create an \"issue" or a \"request" at
   \url{https://github.com/olsak/OpTeX} or send me an email with new
   phrases for your language (or language you know:). I am ready to put them here.
   Temporarily, you can put your definitions into `\bibtexhook` token list.
   \_cod -----------------------------

\_endinput  % don't save these \def's to the format

\_def\_langb#1 #2#3#4#5#6#7#8#9{\_def\_mbib##1##2{\_sdef{_mt:bib.##2:#1}{##1}}%
   \_mbib{#2}{and}\_mbib{#3}{etal}\_mbib{#4}{edition}\_mbib{#5}{citedate}\_mbib{#6}{volume}%
   \_mbib{#7}{number}\_mbib{#8}{prepages}\_mbib{#9}{postpages}\_langbA}
\_def\_langbA#1#2#3#4#5#6#7{\_mbib{#1}{editor}\_mbib{#2}{editors}\_mbib{#3}{available}%
   \_mbib{#4}{availablealso}\_mbib{#5}{bachthesis}\_mbib{#6}{masthesis}\_mbib{#7}{phdthesis}}

\_langb en {, and }  { et al.} { ed.} {cit.~} {Vol.~} {No.~} {pp.~} {~p.} {,~ed.} {,~eds.}
           {Available from } {Available also from }
           {Bachelor's Thesis} {Master's Thesis} {Ph.D. Thesis}
%------------------------------------------------------------------------------------------
\_langb cs { a } { a~kol.} { vyd.} {vid.~} {ročník~} {č.~} {s.~} {~s.} {,~editor} {,~editoři}
           {Dostupné na } {Dostupné též na }
           {Bakalářská práce} {Diplomová práce} {Disertační práce}
\_langb sk { a } { a~kol.} { vyd.} {vid.~} {ročník~} {č.~} {s.~} {~s.} {,~editor} {,~editoři}
           {Dostupné na } {Dostupné tiež na }
           {Bakalárska práca} {Diplomová práca} {Dizertačná práca}

% \_<lang>dateformat year/month/day\relax, for example: \_csdateformat 2020/05/21\relax
% This is used in iso690 bib-style when the field "citedate" is used.

\_def\_endateformat #1/#2/#3\relax{#1-#2-#3}
% \_csdateformat 2020/05/21\relax -> \hbox{21. 5. 2020}
\_def\_csdateformat #1/#2/#3\relax{\hbox{\_tmpnum=#3 \_the\_tmpnum. \_tmpnum=#2 \_the\_tmpnum. #1}}
\_let\_skdateformat =\_csdateformat

\_endcode % -------------------------------------

2020-12-05 bib phrases moved here
2020-04-29 Obrazek -> Abbildung: bug fixed
2020-03-15 introduced