diff options
Diffstat (limited to 'tex/context/base/core-con.mkiv')
-rw-r--r-- | tex/context/base/core-con.mkiv | 175 |
1 files changed, 120 insertions, 55 deletions
diff --git a/tex/context/base/core-con.mkiv b/tex/context/base/core-con.mkiv index a43473ced..f7d718f44 100644 --- a/tex/context/base/core-con.mkiv +++ b/tex/context/base/core-con.mkiv @@ -67,44 +67,43 @@ %D \showsetup{romannumerals} %D \showsetup{Romannumerals} -\def\romannumerals#1{\ctxcommand{romannumerals(\number#1)}} -\def\Romannumerals#1{\ctxcommand{Romannumerals(\number#1)}} +\def\romannumerals#1{\clf_romannumerals\numexpr#1\relax} +\def\Romannumerals#1{\clf_Romannumerals\numexpr#1\relax} %D Arabic etc: -\def\abjadnumerals #1{\ctxcommand{abjadnumerals (\number#1)}} -\def\abjadnodotnumerals#1{\ctxcommand{abjadnodotnumerals(\number#1)}} -\def\abjadnaivenumerals#1{\ctxcommand{arabicnumerals (\number#1)}} +\def\abjadnumerals #1{\clf_abjadnumerals \numexpr#1\relax} +\def\abjadnodotnumerals#1{\clf_abjadnodotnumerals\numexpr#1\relax} +\def\abjadnaivenumerals#1{\clf_alphabetic \numexpr#1\relax{arabic}} % okay? -\def\languagecharacters#1{\ctxcommand{alphabetic(\number#1,"\currentlanguage")}} % new -\def\languageCharacters#1{\ctxcommand{Alphabetic(\number#1,"\currentlanguage")}} % new +\def\languagecharacters#1{\clf_alphabetic\numexpr#1\relax{\currentlanguage}} % new +\def\languageCharacters#1{\clf_Alphabetic\numexpr#1\relax{\currentlanguage}} % new -% we could use an auxiliary macro to save some bytes in the format -% -% \def\dolanguagecharacters#1#2{\ctxcommand{alphabetic(\number#2,"#1")}} - -\def\thainumerals #1{\ctxcommand{alphabetic(\number#1,"thai")}} -\def\devanagarinumerals#1{\ctxcommand{alphabetic(\number#1,"devanagari")}} -\def\gurmurkhinumerals #1{\ctxcommand{alphabetic(\number#1,"gurmurkhi")}} -\def\gujaratinumerals #1{\ctxcommand{alphabetic(\number#1,"gujarati")}} -\def\tibetannumerals #1{\ctxcommand{alphabetic(\number#1,"tibetan")}} -\def\greeknumerals #1{\ctxcommand{alphabetic(\number#1,"greek")}} -\def\Greeknumerals #1{\ctxcommand{Alphabetic(\number#1,"greek")}} -\def\arabicnumerals #1{\ctxcommand{alphabetic(\number#1,"arabic")}} -\def\persiannumerals #1{\ctxcommand{alphabetic(\number#1,"persian")}} +\def\alphabeticnumerals#1{\clf_alphabetic\numexpr#1\relax{}} +\def\Alphabeticnumerals#1{\clf_Alphabetic\numexpr#1\relax{}} + +\def\thainumerals #1{\clf_alphabetic\numexpr#1\relax{thai}} +\def\devanagarinumerals#1{\clf_alphabetic\numexpr#1\relax{devanagari}} +\def\gurmurkhinumerals #1{\clf_alphabetic\numexpr#1\relax{gurmurkhi}} +\def\gujaratinumerals #1{\clf_alphabetic\numexpr#1\relax{gujarati}} +\def\tibetannumerals #1{\clf_alphabetic\numexpr#1\relax{tibetan}} +\def\greeknumerals #1{\clf_alphabetic\numexpr#1\relax{greek}} +\def\Greeknumerals #1{\clf_Alphabetic\numexpr#1\relax{greek}} +\def\arabicnumerals #1{\clf_alphabetic\numexpr#1\relax{arabic}} +\def\persiannumerals #1{\clf_alphabetic\numexpr#1\relax{persian}} \let\arabicexnumerals \persiannumerals -\def\koreannumerals #1{\ctxcommand{alphabetic(\number#1,"korean")}} -\def\koreannumeralsp #1{\ctxcommand{alphabetic(\number#1,"korean-parent")}} -\def\koreannumeralsc #1{\ctxcommand{alphabetic(\number#1,"korean-circle")}} +\def\koreannumerals #1{\clf_alphabetic\numexpr#1\relax{korean}} +\def\koreannumeralsp #1{\clf_alphabetic\numexpr#1\relax{korean-parent}} +\def\koreannumeralsc #1{\clf_alphabetic\numexpr#1\relax{korean-circle}} \let\koreanparentnumerals\koreannumeralsp \let\koreancirclenumerals\koreannumeralsc -\def\chinesenumerals #1{\ctxcommand{chinesenumerals (\number#1)}} -\def\chinesecapnumerals#1{\ctxcommand{chinesecapnumerals(\number#1,"cap")}} -\def\chineseallnumerals#1{\ctxcommand{chineseallnumerals(\number#1,"all")}} +\def\chinesenumerals #1{\clf_chinesenumerals\numexpr#1\relax{normal}} +\def\chinesecapnumerals#1{\clf_chinesenumerals\numexpr#1\relax{cap}} +\def\chineseallnumerals#1{\clf_chinesenumerals\numexpr#1\relax{all}} %D \macros %D {character,Character} @@ -124,8 +123,8 @@ \def\unknowncharacter{-} % else in lists \relax -\def\character#1{\ctxcommand{character(\number#1)}} -\def\Character#1{\ctxcommand{Character(\number#1)}} +\def\character#1{\clf_character\numexpr#1\relax} +\def\Character#1{\clf_Character\numexpr#1\relax} %D \macros %D {characters,Characters} @@ -136,8 +135,8 @@ %D \showsetup{characters} %D \showsetup{Characters} -\def\characters#1{\ctxcommand{characters(\number#1)}} -\def\Characters#1{\ctxcommand{Characters(\number#1)}} +\def\characters#1{\clf_characters\numexpr#1\relax} +\def\Characters#1{\clf_Characters\numexpr#1\relax} %D \macros %D {greeknumerals,Greeknumerals} @@ -206,8 +205,8 @@ %D %D Anyhow, the conversion looks like: -\unexpanded\def\monthlong #1{\ctxcommand{monthname(#1)}} -\unexpanded\def\monthshort#1{\ctxcommand{monthmnem(#1)}} +\unexpanded\def\monthlong #1{\clf_monthname\numexpr#1\relax} +\unexpanded\def\monthshort#1{\clf_monthmnem\numexpr#1\relax} \let\convertmonth\monthlong % for old times sake @@ -240,16 +239,16 @@ %D \showsetup{weekday} %D \showsetup{WEEKDAY} -\unexpanded\def\weekday#1{\ctxcommand{day(#1)}} -\unexpanded\def\WEEKDAY#1{\WORD{\weekday{#1}}} +\unexpanded\def\weekday#1{\clf_day\numexpr#1\relax} +\unexpanded\def\WEEKDAY#1{\WORD{\clf_day\numexpr#1\relax}} %D \macros %D {getdayoftheweek, dayoftheweek} \newcount\normalweekday - \def\dayoftheweek #1#2#3{\ctxcommand{weekdayname(\number#1,\number#2,\number#3)}} % name -\unexpanded\def\getdayoftheweek#1#2#3{\normalweekday\ctxcommand{weekday(\number#1,\number#2,\number#3)}\relax} % number + \def\dayoftheweek #1#2#3{\clf_weekdayname\numexpr#1\relax\numexpr#2\relax,\numexpr#3\relax} % name +\unexpanded\def\getdayoftheweek#1#2#3{\normalweekday\clf_weekday\numexpr#1\relax\numexpr#2\relax,\numexpr#3\relax\relax} % number %D Using this macro in %D @@ -294,14 +293,16 @@ %D %D The number of days is available in the macro \type {\numberofdays}. -\def\doifleapyearelse#1% - {\ctxcommand{doifleapyearelse(\number#1)}} +\def\doifelseleapyear#1% + {\clf_doifelseleapyear\numexpr#1\relax} + +\let\doifleapyearelse\doifelseleapyear \unexpanded\def\getdayspermonth#1#2% - {\edef\numberofdays{\ctxcommand{nofdays(\number#1,\number#2)}}} + {\edef\numberofdays{\clf_nofdays\numexpr#1\relax\numexpr#2\relax}} \def\dayspermonth#1#2% - {\ctxcommand{nofdays(\number#1,\number#2)}} + {\clf_nofdays\numexpr#1\relax\numexpr#2\relax} % \dayoftheweek{2006}{9}{15} % \doifleapyearelse{2000}{OK}{NOT OK} @@ -413,7 +414,7 @@ {\begingroup \the\everycurrentdate \doifsomething{#1}{\edef\currentdatespecification{#1}}% - \ctxcommand{currentdate(\!!bs\currentdatespecification\!!es,"\labellanguage")}% + \clf_currentdate{\currentdatespecification}{\labellanguage}% \endgroup} \unexpanded\def\date @@ -434,7 +435,7 @@ \endgroup} \def\rawdate[#1]% expandable and no labels - {\ctxcommand{rawdate(\!!bs\currentdatespecification\!!es)}} + {\clf_rawdate{\currentdatespecification}} %D \macros %D {currenttime} @@ -443,9 +444,9 @@ %D to the previous date macro using the keys \type {h}, \type {m} and a separator. \unexpanded\def\calculatecurrenttime - {\edef\currenthour {\ctxcommand{hour ()}}% - \edef\currentminute{\ctxcommand{minute()}}% - \edef\currentsecond{\ctxcommand{second()}}} + {\edef\currenthour {\clf_hour }% + \edef\currentminute{\clf_minute}% + \edef\currentsecond{\clf_second}} \let\currenthour \!!plusone \let\currentminute\!!plusone @@ -454,7 +455,7 @@ \def\currenttimespecification{h,:,m} \unexpanded\def\currenttime - {\doifnextoptionalelse\syst_converters_current_time_yes\syst_converters_current_time_nop} + {\doifelsenextoptional\syst_converters_current_time_yes\syst_converters_current_time_nop} \unexpanded\def\syst_converters_current_time_yes[#1]% {\calculatecurrenttime @@ -520,6 +521,13 @@ \installcorenamespace {conversionarguments} \installcorenamespace {conversionwords} +%D It might be better to move more to lua as we also need conversion there +%D and doublicating logic doesn't make things cleaner. It means that all +%D conversions will get a language argument too. However, we permit definitions +%D at the \TEX\ end so we have to provide some hybrid method. + +% checkedconversion(method,n,language) + \unexpanded\def\defineconversion {\dotripleempty\syst_converters_define_conversion} @@ -531,13 +539,13 @@ \fi} \def\syst_converters_define_conversion_indeed#1#2#3% - {\doifinstringelse{,}{\detokenize{#3}} - {\ctxcommand{defineconversion("#2",\!!bs\detokenize{#3}\!!es)}% + {\doifelseinstring{,}{\detokenize{#3}} + {\clf_defineconversion{#2}{\detokenize{#3}}% a set e.g. of symbols \setgvalue{\??conversion#1}{\syst_converters_checked_conversion{#2}}} {\setgvalue{\??conversion#1}{#3}}} \def\syst_converters_checked_conversion#1#2% - {\ctxcommand{checkedconversion("#1",#2)}} + {\clf_checkedconversion{#1}\numexpr#2\relax} %D If a conversion is just a font switch then we need to make sure that the %D number is indeed ends up as number in the input, so we need to handle the @@ -557,7 +565,11 @@ \setvalue{\??conversionarguments2}#1{\csname\??conversion #1\endcsname} \letvalue{\??conversionarguments3}\syst_converters_checked_conversion -\def\doifconversiondefinedelse#1% +% we can also add a \ctxcommand{doifelseconversion("#1","\currentlanguage")} to check +% if we have definitions that are not matched at the lua end .. eventually we might do +% that when more shows up + +\def\doifelseconversiondefined#1% {\ifcsname\??conversion\currentlanguage#1\endcsname \expandafter\firstoftwoarguments \else\ifcsname\??conversion#1\endcsname @@ -573,6 +585,9 @@ \expandafter\secondoftwoarguments \fi} +\let\doifconversiondefinedelse\doifelseconversiondefined +\let\doifconversionnumberelse \doifelseconversionnumber + %D Handy. \setvalue{\??conversionwords\v!one }{1} @@ -595,10 +610,10 @@ \def\highordinalstr #1{\high{\notsmallcapped{#1}}} \def\ordinalstr #1{\notsmallcapped{#1}} -\def\ordinaldaynumber #1{\ctxcommand{ordinal(#1,"\currentlanguage")}} +\def\ordinaldaynumber #1{\clf_ordinal\numexpr#1\relax{\currentlanguage}} -\def\verbosenumber #1{\ctxcommand{verbose(#1,"\currentlanguage")}} -\def\VerboseNumber #1{\Words{\ctxcommand{verbose(#1,"\currentlanguage")}}} +\def\verbosenumber #1{\clf_verbose\numexpr#1\relax{\currentlanguage}} +\def\VerboseNumber #1{\Words{\clf_verbose\numexpr#1\relax{\currentlanguage}}} %D As longs as symbols are linked to levels or numbers, we can also use the %D conversion mechanism, but in for instance the itemization macros, we prefer @@ -627,6 +642,9 @@ \defineconversion [AK] [\smallcappedcharacters] \defineconversion [KA] [\smallcappedcharacters] +\defineconversion [\v!alphabetic] [\alphabeticnumerals] +\defineconversion [\v!Alphabetic] [\Alphabeticnumerals] + \defineconversion [\v!number] [\numbers] \defineconversion [\v!numbers] [\numbers] \defineconversion [\v!Numbers] [\Numbers] @@ -662,6 +680,9 @@ \defineconversion [g] [\greeknumerals] \defineconversion [G] [\Greeknumerals] +%defineconversion [ñ] [\spanishnumerals] +%defineconversion [Ñ] [\Spanishnumerals] + \defineconversion [abjadnumerals] [\abjadnumerals] \defineconversion [abjadnodotnumerals] [\adjadnodotnumerals] \defineconversion [abjadnaivenumerals] [\adjadnaivenumerals] @@ -686,13 +707,53 @@ \defineconversion [kr-c] [\koreancirclenumerals] \defineconversion [chinesenumerals] [\chinesenumerals] -\defineconversion [chinesecapnumeralscn] [\chinesecapnumerals] -\defineconversion [chineseallnumeralscn] [\chineseallnumerals] +\defineconversion [chinesecapnumerals] [\chinesecapnumerals] +\defineconversion [chineseallnumerals] [\chineseallnumerals] \defineconversion [cn] [\chinesenumerals] \defineconversion [cn-c] [\chinesecapnumerals] \defineconversion [cn-a] [\chineseallnumerals] +%D Moved from lang-def.mkiv: +%D +%D Define these as the general character enumeration when language is Slovenian. If +%D you feel uncomfortable with this, mail Mojca, since she promised to to take the +%D heat. Pablo was next to request this. We changed characters to numerals for this +%D feature. We do need these definitions for mechanisms like itemize that check +%D for converters. + +\def\sloveniannumerals#1{\clf_alphabetic\numexpr#1\relax{sl}} +\def\slovenianNumerals#1{\clf_Alphabetic\numexpr#1\relax{sl}} + +\def\spanishnumerals #1{\clf_alphabetic\numexpr#1\relax{es}} +\def\spanishNumerals #1{\clf_Alphabetic\numexpr#1\relax{es}} + +\defineconversion [\s!sl] [character] [\sloveniannumerals] +\defineconversion [\s!sl] [Character] [\slovenianNumerals] +\defineconversion [\s!sl] [characters] [\sloveniannumerals] +\defineconversion [\s!sl] [Characters] [\slovenianNumerals] + +\defineconversion [\s!sl] [a] [\sloveniannumerals] +\defineconversion [\s!sl] [A] [\slovenianNumerals] +\defineconversion [\s!sl] [AK] [\smallcapped\sloveniannumerals] +\defineconversion [\s!sl] [KA] [\smallcapped\sloveniannumerals] + +\defineconversion [\s!es] [character] [\spanishnumerals] +\defineconversion [\s!es] [Character] [\spanishNumerals] +\defineconversion [\s!es] [characters] [\spanishnumerals] +\defineconversion [\s!es] [Characters] [\spanishNumerals] + +\defineconversion [\s!es] [a] [\spanishnumerals] +\defineconversion [\s!es] [A] [\spanishNumerals] +\defineconversion [\s!es] [AK] [\smallcapped\spanishnumerals] +\defineconversion [\s!es] [KA] [\smallcapped\spanishnumerals] + +\defineconversion [sloveniannumerals] [\sloveniannumerals] +\defineconversion [slovenianNumerals] [\slovenianNumerals] + +\defineconversion [spanishnumerals] [\spanishnumerals] +\defineconversion [spanishNumerals] [\spanishNumerals] + %D In case a font has no greek (WS): \defineconversion [mathgreek] @@ -701,6 +762,10 @@ \m{ν},\m{ξ},\m{ο},\m{π},\m{ρ},\m{σ}, \m{τ},\m{υ},\m{φ},\m{χ},\m{ψ},\m{ω}] +%D Handy too (expanded!): + +\def\unihex#1{\clf_unihex\numexpr#1\relax} + %D Symbol sets: \ifdefined\symbol \else \def\symbol[#1]{#1} \fi % todo |