%% This is part of the OpTeX project, see http://petr.olsak.net/optex \_codedecl \_mtext {Languages <2022-11-18>} % preloaded in format \_doc ----------------------------- Four words are generated by \OpTeX/ macros: \"Chapter", \"Table", \"Figure" and \"Subject". These phrases are generated depending on the current value of the `\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 the declared word and `` is a language shortcut declared by \~`\_preplang`. \_cod ----------------------------- \_def\_mtext#1{\_trycs{_mt:#1:\_trycs{_lan:\_the\_language}{en}} {\_csname _mt:#1:en\_endcsname}} \_doc ----------------------------- We can declare such language-dependent words by \begtt \_sdef{_mt:chap:en}{Chapter} \_sdef{_mt:chap:cs}{Kapitola} \_sdef{_mt:t:en}{Table} \_sdef{_mt:t:cs}{Tabulka} \endtt etc. but we use more \"compact" macro \`\_langw` `
` for declaring them. \_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}% } \_doc ----------------------------- More phrases are auto-generated in bibliography references. They are declared by\nl \`\_langb` ` {} {} {} {} {} {} {} {

} {} {}`\nl ` {} {} {} {} {}`. It is used similar way as the \^`\_langw` above. Both these macros are used in `lang-data.opm` file, see the end of section~\ref[langdecl]. \_cod ----------------------------- \_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}} \_doc ----------------------------- \`\today` macro needs auto-generated words for each name of the month.\nl \`\_monthw` ` ... ` is used for decaring them.\nl The language-dependent format for printing date should be declared like \begtt \_sdef{_mt:today:en}{\_mtext{m\_the\_month} \_the\_day, \_the\_year} \endtt This example declares date format for English where is `en`. \_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}{#6}\_sdef{_mt:m6:#1}{#7}% \_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}{#6}\_sdef{_mt:m12:#1}{#7}% } \_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 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```, where `...` are normal quotes and `...` are alternative quotes. or use \`\altquotes` to swap between the meaning of these two types of quotes. \`\enquotes`, \`\csquotes`, \`\frquotes`, \`\dequotes`, \`\skquotes` are defined here. Languages in general provide the \`\quotes` declaration macro. It declares the quotation marks depending on the actual selected language. For example, `\eslang \quotes` declares Spanish language including its quotation marks used for `\""` and `\''`. The language-dependent quotation marks should be declared by \`\_quotationmarks` ` {}` in the `lang-data.opm` file. \_cod ----------------------------- \_def \_enquotes {\_quoteschars “”‘’} \_def \_csquotes {\_quoteschars „“‚‘} \_def \_frquotes {\_quoteschars “”«»} \_let \_dequotes = \_csquotes \_let \_skquotes = \_csquotes \_def \_quotes {\_trycs{_qt:\_trycs{_lan:\_the\_language}{en}}{\_enquotes}} \_def \_quotationmarks #1 #2{\_sdef{_qt:#1}{\_quoteschars #2}} \_public \quotes \enquotes \csquotes \frquotes \dequotes \skquotes ; \_doc ----------------------------- The \`\quoteschars``` defines `\"` and `\"` as `\_qqA` 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` and `\'` as `\_qqA\_qqC`. The \`\_qqA``\_qqB` runs \`\_qqB``"`.\nl The \`\_regquotes``\""` does `\def\"#1"{#1}` for outlines but the `"` separator is active (because `"` and `'` are active in \^`\pdfunidef`). \_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{}{}{\_regquotes\""#1#2\_regquotes\''#3#4}} \_def\_qqA#1#2#3{\_bgroup\_setverb \_catcode`\ =10 \_isnextchar\_bgroup{\_catcode`\{=1 \_catcode`\}=2 #1#2#3}{#1#2#3}} \_def\_qqB#1#2#3"{\_egroup#1\_scantextokens{#3}#2} \_def\_qqC#1#2#3'{\_egroup#1\_scantextokens{#3}#2} \_def\_regquotes#1#2#3#4{\_bgroup \_lccode`~=`#2\_lowercase{\_egroup \_def#1##1~}{#3##1#4}} \_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 `\quotes`, then \^`\altquotes` (if needed) and finally \^`\activequotes`. \_cod ----------------------------- \_def\_activequotes{\_let\_actqq=\"\_adef"{\_actqq}\_let\_actq=\'\_adef'{\_actq}% \_regmacro{}{}{\_adef"{\"}\_adef'{\'}}} \_public \quoteschars \activequotes ; \_endcode % ------------------------------------- 2022-11-18 \"..." are not \long now 2022-02-19 \quotes, \_quotationmarks introduced 2022-02-04 \_langinput, words-lan.opm introduced 2021-05-23 \_monthw: bug fix 2021-01-21 more robust quotes in outlines 2020-12-05 bib phrases moved here 2020-04-29 Obrazek -> Abbildung: bug fixed 2020-03-15 introduced