%% 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``{}`, 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::}` where `` is a label for declared word and `` 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` `
` 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 `\""` and `\''` if `\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```, where `...` are normal quotes and `...` 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``` 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` and `\'` as `\_qqA\_qqC`. The \`\_qqA``\_qqB` runs \`\_qqB``"`. \_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 `\quotes`, then \^`\altquotes` (if needed) and finally \^`\activequotes`. \`\_resetaquotes` redefines expandable version of `\""` and `\''` 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} % \_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