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 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 declared word and `<lang>` is 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 `\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 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 reason why the quotes parameter is read in verbatim mode and retokenized
again by `\scantextokens`. We want to allow to quote the quoutes mark
itself by \code{\\"{`"`}"}. This is reason why the sub-verbatim mode is
used when 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 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 format, so the trick with {`\_endinput`}
is used here. When \^`\usebib` is processed then 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 email with new
phrarses 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 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
|