diff --git a/src/worlds/Asteron/Mosici.typ b/src/worlds/Asteron/Mosici.typ index b871da1..eb54ebb 100644 --- a/src/worlds/Asteron/Mosici.typ +++ b/src/worlds/Asteron/Mosici.typ @@ -3,12 +3,12 @@ #import "/templates/utils/lang-mos.typ": * #let high = html.span.with(class: "high") #show: conf.with(page-title: "Mosici") -%lang %mos -#set heading(numbering: "1.") +%lang %mos %langauge-documentation +#set heading(numbering: "I’A’1’a’") #let low = html.span.with(class: "low") #let gloss-opts = ( - txt-style: sn, - translation-style: low + txt-style: sn, + translation-style: low, ) #let g = gloss.with(..gloss-opts) #let ex = example.with(..gloss-opts) @@ -19,20 +19,20 @@ == Phonolgy Mosici has the following phonemes #table( - columns: 5, - [], [*Labial*], [*Coronal*], [*Palatal*], [*Dorsal*], - [*Nasal*], [m], [n], [], [], - [*Stop*], [p], [t], [], [k], - [*Fricative*], [f v], [s z], [ɕ ʑ], [ʀ], - [*Approximants*], [w], [], [j], [ʟ], + columns: 5, + [], [*Labial*], [*Coronal*], [*Palatal*], [*Dorsal*], + [*Nasal*], [m], [n], [], [], + [*Stop*], [p], [t], [], [k], + [*Fricative*], [f v], [s z], [ɕ ʑ], [ʀ], + [*Approximants*], [w], [], [j], [ʟ], ) #table( - columns: 3, - [], [*Front*], [*Back*], - [*Close*], [i y], [u], - [*Close-Mid*], [e ø], [o], - [*Open-Mid*], [ɛ], [ɔ], - [*Open*], table.cell(colspan: 2)[a], + columns: 3, + [], [*Front*], [*Back*], + [*Close*], [i y], [u], + [*Close-Mid*], [e ø], [o], + [*Open-Mid*], [ɛ], [ɔ], + [*Open*], table.cell(colspan: 2)[a], ) All vowels can also all be long, @@ -46,10 +46,10 @@ There is also the following allophony rules: - /n/ itself is not pronounced in coda positions.#footnote[still applies nasalisation] - Nasalised close vowels are realised as mid-centralised: /ĩ ĩː ỹ ỹː ũ ũː/ [ɪ̃ ɪ̃ː ʏ̃ ʏ̃ː ʊ̃ ʊ̃ː] - The dorsal plosive ⁊ approximant are realised as palatal before /i y e j/ #footnote[or their or their long and/or - nasalised variants] , + nasalised variants] , - The dorsal plosive ⁊ approximant are realised as uvular before ther /u o w/@fn-dorsal-assimilation - The dorsal plosive ⁊ approximant are realised as palatal after /e i j/@fn-dorsal-assimilation or in the coda of a - syllable with /e i/@fn-dorsal-assimilation as the nucleus. + syllable with /e i/@fn-dorsal-assimilation as the nucleus. - The dorsal plosive ⁊ approximant are realised as velar otherwise - Plosives are realised as voiced next to other phonemically voiced consonants. - Plosives are realised as non-sibilant fricatives of the same place of articulation word finally. @@ -64,22 +64,22 @@ The process goes thusly (before applying the allophony): 1. Group all consecutive vowels by pairs, starting at near the start of the word 2. Combine all pairs of vowels according to the table below (the first vowel indexes the row, and the second vowel - indexes the column) + indexes the column) 3. If any vowel is long, the resulting vowel is long; 4. Repeat from #context link(query().first().location())[step 1] until all hiatus has been - resolved. + resolved. #table( - columns: 10, - [ ], [*a*], [*ɛ*], [*ɔ*], [*e*], [*ø*], [*o*], [*i*], [*y*], [*u*], - [*a*], [ɔ], [a], [ɔ], [ɛ], [ɛ], [ɔ], [e], [ø], [o], - [*ɛ*], [ɛ], [i], [ø], [i], [e], [ø], [i], [ø], [ø], - [*ɔ*], [ɔ], [ø], [ɔ], [ø], [ø], [o], [ø], [ø], [o], - [*e*], [ɛ], [i], [ø], [i], [e], [ø], [i], [ø], [ø], - [*ø*], [ø], [e], [ø], [e], [y], [ø], [y], [y], [y], - [*o*], [ɔ], [ø], [o], [ø], [ø], [u], [ø], [ø], [u], - [*i*], [ja], [jɛ], [jɔ], [je], [jø], [jo], [i], [jy], [ju], - [*y*], [ø], [ø], [ø], [ø], [y], [ø], [i], [i], [y], - [*u*], [wa], [wɛ], [wɔ], [we], [wø], [wo], [wi], [y], [u], + columns: 10, + [ ], [*a*], [*ɛ*], [*ɔ*], [*e*], [*ø*], [*o*], [*i*], [*y*], [*u*], + [*a*], [ɔ], [a], [ɔ], [ɛ], [ɛ], [ɔ], [e], [ø], [o], + [*ɛ*], [ɛ], [i], [ø], [i], [e], [ø], [i], [ø], [ø], + [*ɔ*], [ɔ], [ø], [ɔ], [ø], [ø], [o], [ø], [ø], [o], + [*e*], [ɛ], [i], [ø], [i], [e], [ø], [i], [ø], [ø], + [*ø*], [ø], [e], [ø], [e], [y], [ø], [y], [y], [y], + [*o*], [ɔ], [ø], [o], [ø], [ø], [u], [ø], [ø], [u], + [*i*], [ja], [jɛ], [jɔ], [je], [jø], [jo], [i], [jy], [ju], + [*y*], [ø], [ø], [ø], [ø], [y], [ø], [i], [i], [y], + [*u*], [wa], [wɛ], [wɔ], [we], [wø], [wo], [wi], [y], [u], ) == The Nahan Script @@ -88,29 +88,29 @@ which in Mosici is considered to have the following letters, digraphs and diacri called the #sn[] 〈sitrapaóha〉. #table( - columns: 5, - [Letter], [Transliteration], [Value (IPA)], [Name], [Name (IPA)], - sn[], [p], [/p/], sn[], [[pe]], - sn[], [o], [/o/], sn[], [[us]], - sn[], [l], [/ʟ/], sn[], [[ʟɔ̃]], - sn[], [i], [/e/], sn[], [[iɐ̯nɛ]], - sn[], [a], [/a/], sn[], [[ɔ̃ɸ]], - sn[], [h], [/∅/#footnote[Lengthens a preceeding vowel] ], sn[], [[apfɛ]], - sn[], - [r], - [/ʀ/], - sn[ #footnote[Literally "sounded 〈base letter〉"] ], - [[fasteɕɛx apfɛ]], + columns: 5, + [Letter], [Transliteration], [Value (IPA)], [Name], [Name (IPA)], + sn[], [p], [/p/], sn[], [[pe]], + sn[], [o], [/o/], sn[], [[us]], + sn[], [l], [/ʟ/], sn[], [[ʟɔ̃]], + sn[], [i], [/e/], sn[], [[iɐ̯nɛ]], + sn[], [a], [/a/], sn[], [[ɔ̃ɸ]], + sn[], [h], [/∅/#footnote[Lengthens a preceeding vowel] ], sn[], [[apfɛ]], + sn[], + [r], + [/ʀ/], + sn[ #footnote[Literally "sounded 〈base letter〉"] ], + [[fasteɕɛx apfɛ]], - sn[], [c], [/k/], sn[], [[kaẅ]], - sn[], [n], [/n/], sn[], [[nɔẅ]], - sn[], [e], [/e/], sn[], [[istaẅ]], - sn[], [s], [/s/], sn[], [[ɕpaẅ]], - sn[], [z], [/z/], sn[  @fn-script-sounded], [[fasteɕɛx ɕpaẅ]], - sn[], [f], [/f/], sn[], [[fasoː]], - sn[], [v], [/v/], sn[  @fn-script-sounded], [[fasteɕex fasoː]], - sn[], [m], [/m/], sn[], [[miʎɔ]], - sn[], [t], [/t/], sn[], [[tɛɟjo]], + sn[], [c], [/k/], sn[], [[kaẅ]], + sn[], [n], [/n/], sn[], [[nɔẅ]], + sn[], [e], [/e/], sn[], [[istaẅ]], + sn[], [s], [/s/], sn[], [[ɕpaẅ]], + sn[], [z], [/z/], sn[  @fn-script-sounded], [[fasteɕɛx ɕpaẅ]], + sn[], [f], [/f/], sn[], [[fasoː]], + sn[], [v], [/v/], sn[  @fn-script-sounded], [[fasteɕex fasoː]], + sn[], [m], [/m/], sn[], [[miʎɔ]], + sn[], [t], [/t/], sn[], [[tɛɟjo]], ) == Examples @@ -134,9 +134,12 @@ called the #sn[] 〈sitrapaóha〉. == Nouns === Number -Number is marked by reduplicating the last orthographic vowel of the root without the sitrapaóha #low[(see following table)]. In most cases the pronunciation of the plural isn't directly derivable from the pronunciation of the singular. +Number is marked by reduplicating the last orthographic vowel of the root without the sitrapaóha #low[(see following + table)]. In most cases the pronunciation of the plural isn't directly derivable from the pronunciation of the +singular. -#table(columns: 2, +#table( + columns: 2, [*Singular*], [*Plural*], sn[], sn[], sn[], sn[], @@ -150,29 +153,29 @@ Number is marked by reduplicating the last orthographic vowel of the root withou === Cases -Nouns are also marked for case. There are 5 simple cases --- agent, patient, -genitive, dative and ablative --- and 2 compound cases --- spatial and temporal -locative. +Nouns are also marked for case. There are 5 simple cases --- agent, patient, genitive, dative and ablative --- and 2 +compound cases --- spatial and temporal locative. -They are 7 patterns for the simple cases based on the the coda consonant(s) of -the agent form: the concatenative pattern, and the 6 substitutive patterns -(#sn[], #sn[], #sn[], #sn[], #sn[], #sn[]) +They are 7 patterns for the simple cases based on the the coda consonant(s) of the agent form: the concatenative +pattern, and the 6 substitutive patterns (#sn[], #sn[], #sn[], #sn[], #sn[], #sn[]) #table( - columns: 8, align: center, + columns: 8, + align: center, [], [*C*], [*Sub* #sn[]], [*Sub* #sn[]], [*Sub* #sn[]], [*Sub* #sn[]], [*Sub* #sn[]], [*Sub* #sn[]], [*Agent*], [∅], sn[], sn[], sn[], sn[], sn[], sn[], [*Patient*], table.cell(colspan: 7, sn[]), [*Genitive*], table.cell(colspan: 7, sn[]), - [*Dative*], table.cell(colspan: 2, sn[]), sn[], sn[], sn[], + [*Dative*], table.cell(colspan: 2, sn[]), sn[], sn[], sn[], sn[], sn[], - [*Ablative*], table.cell(colspan: 3, sn[]),table.cell(colspan: 2, sn[]), - table.cell(colspan: 2, sn[]) + [*Ablative*], table.cell(colspan: 3, sn[]), table.cell(colspan: 2, sn[]), + table.cell(colspan: 2, sn[]), ) ==== Agent -The Agent case #low(sc[age]) indicates the agent of a transitive clause, or the subject of an active intransitive clause. +The Agent case #low(sc[age]) indicates the agent of a transitive clause, or the subject of an active intransitive +clause. #ex( caption: [Agent case in an transitive clause], @@ -181,30 +184,32 @@ The Agent case #low(sc[age]) indicates the agent of a transitive clause, or the phono: (bl + high[ʟɔɐ̯nɛ], [ɛ̃ð], [eʎɔʎeː] + br), morphemes: (high[Loarne.#sc[age]], sc[dem.pat], [say.#sc[pst.3sa]]), translation: [#high[Loarne] said that], - lbl: "ex-case-age-trans" + lbl: "ex-case-age-trans", ) #ex( caption: [Agent case in an active intransitve clause], txt: [#high[]  #high[] ], - translit: ([#high[loarne]], [i], high[mazealn],[vionreor.]), - phono: (bl + high[ʟɔɐ̯nɛ], [e], high[mazɛ̃ẅ], [vjõʀøɐ̯] + br), + translit: ([#high[loarne]], [i], high[mazealn], [vionreor.]), + phono: (bl + high[ʟɔɐ̯nɛ], [e], high[mazɛ̃ẅ], [vjõʀøɐ̯] + br), morphemes: (high[Loarne.#sc[age]], [and], high[Mazealn.#sc[age]], [eat.#sc[fut.3pa]]), translation: [#high[Loarne] and #high[Mazealn] will eat], - lbl: "ex-case-age-intrans" + lbl: "ex-case-age-intrans", ) ==== Patient -The Patient case #low(sc[pat]) indicates the patient of a transitive clause, or the subject of a stative intransitive clause. +The Patient case #low(sc[pat]) indicates the patient of a transitive clause, or the subject of a stative intransitive +clause. #ex( - caption: [Patient case in a transitive clause#footnote[Note that while the pronoun is dropped thanks to the verb conjugation, but the clause is still transitive]], + caption: [Patient case in a transitive clause#footnote[Note that while the pronoun is dropped thanks to the verb + conjugation, but the clause is still transitive]], txt: [#high[] ], - translit: (high[nriiht],[vionreef.]), + translit: (high[nriiht], [vionreef.]), phono: (bl + high[nʁiːθ], [vjõʀiɸ] + br), morphemes: (high[grain#sc[.pl.pat]], [eat#sc[.prs.1s]]), translation: [I eat #high[grains]], - lbl: "ex-case-pat-trans" + lbl: "ex-case-pat-trans", ) #ex( @@ -214,12 +219,13 @@ The Patient case #low(sc[pat]) indicates the patient of a transitive clause, or phono: (bl + high[ʀɛ̃ð], [ytas] + br), morphemes: (high[house#sc[.pat]], [be\_tall#sc[gno.3si]]), translation: [#high[The house] is tall], - lbl: "ex-case-pat-intrans" + lbl: "ex-case-pat-intrans", ) ==== Genitive -The genitive case #low(sc[gen]) indicates poessesion or qualification. Note that in the case of qualification, the formation of a compound is also possible. Note: Compounding is not subject to coalescence. +The genitive case #low(sc[gen]) indicates poessesion or qualification. Note that in the case of qualification, the +formation of a compound is also possible. Note: Compounding is not subject to coalescence. #ex( caption: [Possessive genitive case], @@ -228,7 +234,7 @@ The genitive case #low(sc[gen]) indicates poessesion or qualification. Note that phono: (bl + high[eẅɣ], [ʀɛ̃] + br), morphemes: (high(sc[1s.gen]), [house#sc[.age]]), translation: [#high[my] house], - lbl: "ex-case-gen-poss" + lbl: "ex-case-gen-poss", ) #ex( caption: [Qualificative genitive case], @@ -237,7 +243,7 @@ The genitive case #low(sc[gen]) indicates poessesion or qualification. Note that phono: (bl + high[øːx], [esovɛ] + br), morphemes: (high[fiction.#sc[gen]], [job#sc[.age]]), translation: [a #high[fictional] job], - lbl: "ex-case-gen-qual" + lbl: "ex-case-gen-qual", ) #ex( @@ -247,12 +253,14 @@ The genitive case #low(sc[gen]) indicates poessesion or qualification. Note that phono: (bl + [øː-], [esovɛ] + br), morphemes: ([fiction-], [job#sc[.age]]), translation: [a fictional job], - lbl: "ex-case-gen-compound" + lbl: "ex-case-gen-compound", ) ==== Dative -The dative case #low(sc[dat]) indicates the beneficiary of a ditransitive verbs, as well as indicating a direction faced. Note hover that it isn't used with verbs of movement towards something, for those use the patient case (see @case-patient) instead, the dative instead indicates the means of displacement. +The dative case #low(sc[dat]) indicates the beneficiary of a ditransitive verbs, as well as indicating a direction +faced. Note hover that it isn't used with verbs of movement towards something, for those use the patient case (see +@case-patient) instead, the dative instead indicates the means of displacement. #ex( caption: [Dative in ditransitive clauses], txt: [#high[]  ], @@ -260,7 +268,7 @@ The dative case #low(sc[dat]) indicates the beneficiary of a ditransitive verbs, phono: (bl + high[ɛẅɕ], [ʀɛ̃ð], [ɕjɛːf] + br), morphemes: (high(sc[2s.dat]), [house#sc[.pat]], [give.#sc[pres.1s]]), translation: [I give #high[you] a house], - lbl: "ex-case-dat-ditrans" + lbl: "ex-case-dat-ditrans", ) #ex( caption: [Dative as means of displacement for verbs of movement towards], @@ -269,98 +277,164 @@ The dative case #low(sc[dat]) indicates the beneficiary of a ditransitive verbs, phono: (bl + [ãɕaẅmosicɛθ], high[fydztsɛʟaɕ], [øsɛʎẽ] + br), morphemes: ([#sc[ppn-]Chalmosique#sc[.dat]], high[train.#sc[dat]], [go#sc[.pst.2s]]), translation: [You#ann[sg] went to Chalmosique #high[by train]], - lbl: "ex-case-dat-mot" + lbl: "ex-case-dat-mot", ) #ex( caption: [Dative as an allative substitute for other verbs], txt: [#high[]   ], translit: (high[an·cairniasialsi], [an·sialmosécet], [foítztselavia], [vilinef.]), phono: (bl + high[ãkɛɐ̯nɛɕaẅɕ], [ãɕaẅmosicɛθ], [fydztsɛʟavja], [veʎẽnɛf] + br), - morphemes: (high[#sc[ppn-]Quernechal#sc[.dat]], [#sc[ppn-]Chalmosique#sc[.pat]], [train.#sc[abl]], [leave.#sc[prs.1s]]), + morphemes: ( + high[#sc[ppn-]Quernechal#sc[.dat]], + [#sc[ppn-]Chalmosique#sc[.pat]], + [train.#sc[abl]], + [leave.#sc[prs.1s]], + ), translation: [I leave Chalmosique by train #high[to Quernechal].], - lbl: "ex-case-dat-all" + lbl: "ex-case-dat-all", ) ==== Ablative -The ablative case #low(sc[abl]) indicates the provenance of the action. It is also used as an instrumental, indicating the means by which the action is done. -For verbs of movement away from something, it only has it's instrumental meaning, the source is indicated by the patient case (see @case-patient). For verbs of movement towards something, the ablative doesn't have the instrumental meaning, for that role use the dative instead. +The ablative case #low(sc[abl]) indicates the provenance of the action. It is also used as an instrumental, indicating +the means by which the action is done. For verbs of movement away from something, it only has it's instrumental meaning, +the source is indicated by the patient case (see @case-patient). For verbs of movement towards something, the ablative +doesn't have the instrumental meaning, for that role use the dative instead. -#ex(caption: [Ablative case in an ablative meaning], +#ex( + caption: [Ablative case in an ablative meaning], txt: [#high[]  ], translit: (high[an·sialmosécevia], [nriiht], [vionreef.]), phono: (bl + [ãɕaẅmosicɛvja], [nʁiːθ], [vjõʀiɸ] + br), morphemes: (high[#sc[ppn]-Chalmosique.#sc[abl]], [grain#sc[.pl.pat]], [eat#sc[.prs.1s]]), translation: [I eat grains #high[from Chalmosique]], - lbl: "ex-case-abl-abl" + lbl: "ex-case-abl-abl", ) -#ex(caption: [Ablative case as instrumental], +#ex( + caption: [Ablative case as instrumental], txt: [#high[] ], translit: (high[hoévenvia], [cirtív.]), phono: (bl + high[yvɛ̃vja], [ceɐ̯div] + br), morphemes: (high[pen#sc[.abl]], [write#sc[.past.1pe]]), translation: [We#ann[excl] wrote #high[with a pen].], - lbl: "ex-case-abl-inst" + lbl: "ex-case-abl-inst", ) ==== Spatial Locative -The spatial locative cases #low(sc[sploc]) is used to indicate a spacial location. it is marked by expressing the noun in the genitive case, followed by the #sn[] ⟨la⟩ particle. +The spatial locative cases #low(sc[sploc]) is used to indicate a spacial location. it is marked by expressing the noun +in the genitive case, followed by the #sn[] ⟨la⟩ particle. -#ex(caption: [Spatial Locative], +#ex( + caption: [Spatial Locative], txt: [ #high[ ]], translit: ([il], high[an·vansterilc‿la] + [.]), phono: (bl + [eẅ], [ãvãstɛʀeẅʝ ʟa] + br), morphemes: (sc[1s.age], [#sc[ppn-]Vansterel#sc[.gen‿sploc]]), translation: [We#ann[excl] wrote #high[with a pen].], - lbl: "ex-case-sploc" + lbl: "ex-case-sploc", ) ==== Temporal Locative -There are four temporal locatives: past, present, future and gnomic #low(sc[tmploc.pst, tmploc.prs, tmploc.fut] + [ and ] + sc[tmploc.gno]). The past case (resp. present and future) is used, as its name indicates, to locate events that happened in the past (resp. present and future). The gnomic case locates events that are either generally happeneing, happening at an unknown point in time, or happening repeatedly. -The past case (resp. present, future, gnomic) are indicated by expressing the noun in the oblique followed by the particle #sn[] ⟨anip⟩ (resp #sn[] ⟨anep⟩, #sn[] ⟨anop⟩ and #sn[] ⟨anap⟩) -However the present case is rarely used outside of set phrases like #sn[ ] “today” or #sn[ ] “now” +There are four temporal locatives: past, present, future and gnomic #low( + sc[tmploc.pst, tmploc.prs, tmploc.fut] + [ and ] + sc[tmploc.gno], +). The past case (resp. present and future) is used, as its name indicates, to locate events that happened in the past +(resp. present and future). The gnomic case locates events that are either generally happeneing, happening at an unknown +point in time, or happening repeatedly. The past case (resp. present, future, gnomic) are indicated by expressing the +noun in the oblique followed by the particle #sn[] ⟨anip⟩ (resp #sn[] ⟨anep⟩, #sn[] ⟨anop⟩ and +#sn[] ⟨anap⟩) However the present case is rarely used outside of set phrases like #sn[ ] “today” or +#sn[ ] “now” -#ex(caption: [Present temporal locative], +#ex( + caption: [Present temporal locative], txt: [#high[ ] ], translit: (high[vint‿anep], [mareves.]), phono: (bl + high[vẽð ãneɸ], [maʀɛvɛs] + br), morphemes: (high[day.#sc[pat‿tmploc.prs]], [be_cold.#sc[prs.3si]]), translation: [It’s cold #high[today]], - lbl: "ex-case-tmploc-prs" + lbl: "ex-case-tmploc-prs", ) #ex( - caption: [Past temporal locative], - txt: [ #high[ ] ], - translit: ([il], high[vionreipt‿anip], [,], [cirtin.]), - phono: (bl + [eẅ], high[vjõʀipθ ãneɸ], [|], [ceɐ̯dẽ]+ br), - morphemes: (sc[1s.act], high[eat#sc[.pst.pcp.pat‿tmploc.pst]], [|], [write] + sc[.pst.2s]), - translation: [#high[When] I #high[ate], you#ann[sg] wrote], - lbl: "ex-case-tmploc-pst" + caption: [Past temporal locative], + txt: [ #high[ ] ], + translit: ([il], high[vionreipt‿anip], [,], [cirtin.]), + phono: (bl + [eẅ], high[vjõʀipθ ãneɸ], [|], [ceɐ̯dẽ] + br), + morphemes: (sc[1s.act], high[eat#sc[.pst.pcp.pat‿tmploc.pst]], [|], [write] + sc[.pst.2s]), + translation: [#high[When] I #high[ate], you#ann[sg] wrote], + lbl: "ex-case-tmploc-pst", ) #ex( - caption: [Future temporal locative], - txt: [ #high[ ] ], - translit: ([il], high[vionreapt‿anop], [,], [cirton.]), - phono: (bl + [eẅ], high[vjõʀøpθ ãnoɸ], [|], [ceɐ̯dõ]+ br), - morphemes: (sc[1s.act], high[eat#sc[.fut.pcp.pat‿tmploc.fut]], [|], [write] + sc[.fut.2s]), - translation: [#high[When] I#high[’ll eat], you#ann[sg]’ll write], - lbl: "ex-case-tmploc-fut" + caption: [Future temporal locative], + txt: [ #high[ ] ], + translit: ([il], high[vionreapt‿anop], [,], [cirton.]), + phono: (bl + [eẅ], high[vjõʀøpθ ãnoɸ], [|], [ceɐ̯dõ] + br), + morphemes: (sc[1s.act], high[eat#sc[.fut.pcp.pat‿tmploc.fut]], [|], [write] + sc[.fut.2s]), + translation: [#high[When] I#high[’ll eat], you#ann[sg]’ll write], + lbl: "ex-case-tmploc-fut", ) #ex( - caption: [Gnomic temporal locative], - txt: [ #high[ ] ], - translit: ([il], high[vionreapt‿anap], [,], [cirtan.]), - phono: (bl + [eẅ], high[vjõʀɛpθ ãnaɸ], [|], [ceɐ̯dã]+ br), - morphemes: (sc[1s.act], high[eat#sc[.gno.pcp.pat‿tmploc.gno]], [|], [write] + sc[.gno.2s]), - translation: [#high[Whenever] I #high[eat], you#ann[sg] write], - lbl: "ex-case-tmploc-gno" + caption: [Gnomic temporal locative], + txt: [ #high[ ] ], + translit: ([il], high[vionreapt‿anap], [,], [cirtan.]), + phono: (bl + [eẅ], high[vjõʀɛpθ ãnaɸ], [|], [ceɐ̯dã] + br), + morphemes: (sc[1s.act], high[eat#sc[.gno.pcp.pat‿tmploc.gno]], [|], [write] + sc[.gno.2s]), + translation: [#high[Whenever] I #high[eat], you#ann[sg] write], + lbl: "ex-case-tmploc-gno", ) -=== Proper noun clitic +=== Proper noun clitic #sn[] + +Proper nouns that aren't personal names always take the proper noun clitic #low(sc[ppn]) #sn[] ⟨an·⟩ + +The affix #sn[] ⟨ni-⟩ --- which on proper nouns forms demonyms --- attaches to the front of the proper noun clitic: +#sn[] gives #sn[] and not \*#sn[] or \*#sn[]. Demonyms formed this way also +mark plural on the proper noun clitic: #sn[] pluralises to #sn[] and not \*#sn[]. == Pronouns + +Mosici has a full set of personal, demonstrative and interrogative pronouns (see table at the end of this section). However, the use of personal pronouns is limited to situations where they are necessary. + +The Agent and patient forms especially are often dropped in non-participal clauses. Indeed, a speaker would more often use the passive marking and avoid a pronoun altogether than use an patient form: Use #sn[ ] #low[(Loarne.#sc[age] #sc[pass.]eat#sc[.prs.3si])] rather than ?#sn[  ] #low[?(Loarne#sc[.age] #sc[3si.pat] eat#sc[.prs.3sa])] for "Loarne eats it." + +#mos-pron(none) + == Verbs +Verbs are mainly conjugated according to their tense and the grammatical person of the agent, unless marked with the +passive voice prefix #sn[] ⟨na-⟩, in which case, it agrees with the patient instead. + +Orthographically the pattern is completely regular, however the vowel coalescence (see @sec-coalescence) causes the +pronunciation to be quite chaotic. The plural forms of past and present tense are always identical when spoken but +distinguished in writing. + +Verbs are typically listed in their gnomic infinitive form. to derive the stem, remove the final #sn[]. Here is a +conjugation table for an hypothetical null-stemmed verb as a way to list the affixes#footnote[You may find those forms + verbatim in some older texts as a now defunct copula.] + +#mos-v("") + +=== Aspect, mood ⁊ related nonsense + +If you need other moods or aspects than an unaspected indicative, there is a pletora of affixes you can stack on verbs +to specify them further, they all are interpreted as nested, coming away from the verb, and can be combined and stacked +for more specific meanings + +Here is a (eventually but not yet) exhaustive list of such affixes: #low[(all of them are prefixes)] + +==== Conditionals, irrealis +==== Imperfective, durative, iterative +==== Perfective, terminative +==== Desirative, Optative, Hortative +==== Imperative +==== Causatives +==== Passive +==== Negation +The negation prefix is #sn[] ⟨ta-⟩. It negates whatever component of the verb is immediately following it. + +==== Also on other parts of speach +While frowned upon in more formal texts, all of the above mood and aspect affixes can be added to nouns to great effect +in less formal or more poetic registers. Execption is of the negation affix which is considered perfectly acceptable in +all registers. + diff --git a/templates/base.typ b/templates/base.typ index 3366ea9..154d28d 100644 --- a/templates/base.typ +++ b/templates/base.typ @@ -25,7 +25,7 @@ it.body }) } - show regex("%[a-z0-9/]+"): it => tag(it.text.slice(1)) + show regex("%[a-z0-9/-]+"): it => tag(it.text.slice(1)) show link-re: it => wl(..it.text.match(link-re).captures) set table(stroke: none) html.head({ diff --git a/templates/utils/lang-mos.typ b/templates/utils/lang-mos.typ index 7aaea4d..a66f437 100644 --- a/templates/utils/lang-mos.typ +++ b/templates/utils/lang-mos.typ @@ -1,14 +1,15 @@ #import "/templates/base.typ" #let mos-sec = [ -= Mosici -#base.tag("word") #base.tag("mos") + = Mosici + #base.tag("word") #base.tag("mos") ] #let sn = base.s.with("nahan") #let mos-pro(ipa) = [ -- #base.wl("/worlds/Asteron/Mosici", [Standard], none) [#ipa] + - #base.wl("/worlds/Asteron/Mosici", [Standard], none) [#ipa] ] #let mos-translit(s) = { - s .replace("", "a") + s + .replace("", "a") .replace("", "á") .replace("", "c") .replace("", "e") @@ -35,13 +36,13 @@ } #let mos-cit(t) = [#sn(t) #html.span(class: "low", mos-translit(t))] #let mos-nstem(w) = { - if w.ends-with("") {(w.clusters().slice(0, -2).join(), "")} - else if w.ends-with("") {(w.clusters().slice(0, -2).join(), "")} - else if w.ends-with("") {(w.clusters().slice(0, -2).join(), "")} - else if w.ends-with("") {(w.clusters().slice(0, -2).join(), "")} - else if w.ends-with("") {(w.clusters().slice(0, -1).join(), "")} - else if w.ends-with("") {(w.clusters().slice(0, -1).join(), "")} - else {(w, "")} + if w.ends-with("") { (w.clusters().slice(0, -2).join(), "") } else if w.ends-with("") { + (w.clusters().slice(0, -2).join(), "") + } else if w.ends-with("") { (w.clusters().slice(0, -2).join(), "") } else if w.ends-with("") { + (w.clusters().slice(0, -2).join(), "") + } else if w.ends-with("") { (w.clusters().slice(0, -1).join(), "") } else if w.ends-with("") { + (w.clusters().slice(0, -1).join(), "") + } else { (w, "") } } #let mos-vstem(w) = w.clusters().slice(0, -1).join() @@ -50,31 +51,34 @@ let revw = w.rev() let pos = revw.position(regex("[]")) let v = revw.at(pos) - if v == "" {v = ""} - if v == "" {v = ""} - if v == "" {v = ""} - if v == "" {v = ""} + if v == "" { v = "" } + if v == "" { v = "" } + if v == "" { v = "" } + if v == "" { v = "" } revw = revw.slice(0, pos) + v + revw.slice(pos) revw.rev() } #let mos-n(sg, pl: none) = { - let pr = if pl == false {""} else if pl != none {pl} else {mos-pluralise(sg)} + let pr = if pl == false { "" } else if pl != none { pl } else { mos-pluralise(sg) } let (ps, pv) = mos-nstem(pr) let (ss, sv) = mos-nstem(sg) let c(it) = [#base.s("nahan", it) \ #html.span(class: "low", mos-translit(it))] html.details({ - html.summary[ *Declension for* _#mos-cit(sg)_ #if pl != none and pl != false [*Irr. pl. stem* _#mos-cit(pl)_] else if pl == false [*(Uncountable)*]] - table(columns: if pl != false {3} else {2}, - ..if pl != false { ([], - base.sc[*sg*], base.sc[*pl*],)} else {()}, - base.sc[*age*], c(sg), ..if pl != false {(c(pr),)} else {()}, - base.sc[*pat*], c(ss + ""), ..if pl != false {(c(ps + ""),)} else {()}, - base.sc[*gen*], c(ss + ""), ..if pl != false {(c(ps + ""),)} else {()}, - base.sc[*dat*], c(ss + sv + ""), ..if pl != false {(c(ps + pv + ""),)} else {()}, - base.sc[*abl*], c(ss + ""), ..if pl != false {(c(ps + ""),)} else {()}, + html.summary[ + *Declension for* _#mos-cit(sg)_ #if pl != none and pl != false [*Irr. pl. stem* _#mos-cit(pl)_] else if ( + pl == false + ) [*(Uncountable)*]] + table( + columns: if pl != false { 3 } else { 2 }, + ..if pl != false { ([], base.sc[*sg*], base.sc[*pl*]) } else { () }, + base.sc[*age*], c(sg), ..if pl != false { (c(pr),) } else { () }, + base.sc[*pat*], c(ss + ""), ..if pl != false { (c(ps + ""),) } else { () }, + base.sc[*gen*], c(ss + ""), ..if pl != false { (c(ps + ""),) } else { () }, + base.sc[*dat*], c(ss + sv + ""), ..if pl != false { (c(ps + pv + ""),) } else { () }, + base.sc[*abl*], c(ss + ""), ..if pl != false { (c(ps + ""),) } else { () }, ) }) } @@ -83,47 +87,101 @@ let c(it) = [#base.s("nahan", it) \ #html.span(class: "low", mos-translit(it))] html.details({ html.summary[*Conjugation for* _#mos-cit(w)_] - table(columns: 5, + table( + columns: 5, [], base.sc[*prs*], base.sc[*pst*], base.sc[*fut*], base.sc[*gno*], - base.sc[*1s*], c(s+""), c(s+""), c(s+""), c(s+""), - base.sc[*2s*], c(s+""), c(s+""), c(s+""), c(s+""), - base.sc[*3sa*], c(s+""), c(s+""), c(s+""), c(s+""), - base.sc[*3si*], c(s+""), c(s+""), c(s+""), c(s+""), - base.sc[*1pi*], c(s+""), c(s+""), c(s+""), c(s+""), - base.sc[*1pe*], c(s+""), c(s+""), c(s+""), c(s+""), - base.sc[*2p*], c(s+""), c(s+""), c(s+""), c(s+""), - base.sc[*3pa*], c(s+""), c(s+""), c(s+""), c(s+""), - base.sc[*3pi*], c(s+""), c(s+""), c(s+""), c(s+""), - base.sc[*inf*], c(s+""), c(s+""), c(s+""), c(s+""), - base.sc[*pcp.sg*], c(s+""), c(s+""), c(s+""), c(s+""), - base.sc[*pcp.pl*], c(s+""), c(s+""), c(s+""), c(s+"") + base.sc[*1s*], c(s + ""), c(s + ""), c(s + ""), c(s + ""), + base.sc[*2s*], c(s + ""), c(s + ""), c(s + ""), c(s + ""), + base.sc[*3sa*], c(s + ""), c(s + ""), c(s + ""), c(s + ""), + base.sc[*3si*], c(s + ""), c(s + ""), c(s + ""), c(s + ""), + base.sc[*1pi*], c(s + ""), c(s + ""), c(s + ""), c(s + ""), + base.sc[*1pe*], c(s + ""), c(s + ""), c(s + ""), c(s + ""), + base.sc[*2p*], c(s + ""), c(s + ""), c(s + ""), c(s + ""), + base.sc[*3pa*], c(s + ""), c(s + ""), c(s + ""), c(s + ""), + base.sc[*3pi*], c(s + ""), c(s + ""), c(s + ""), c(s + ""), + base.sc[*inf*], c(s + ""), c(s + ""), c(s + ""), c(s + ""), + base.sc[*pcp.sg*], c(s + ""), c(s + ""), c(s + ""), c(s + ""), + base.sc[*pcp.pl*], c(s + ""), c(s + ""), c(s + ""), c(s + ""), ) }) } #let mos-pron(this) = { let c(k, h: false) = if h and k != this [ - #base.wl("dict/"+mos-translit(k), base.s("nahan", k), "mos") \ #html.span(class: "low", mos-translit(k)) - ] else [ - #base.s("nahan", k) \ #html.span(class: "low", mos-translit(k)) - ] + #base.wl("/dict/" + mos-translit(k), base.s("nahan", k), "mos") \ #html.span(class: "low", mos-translit(k)) + ] else [ + #base.s("nahan", k) \ #html.span(class: "low", mos-translit(k)) + ] html.details({ html.summary[Mosici Pronouns] - table(columns: 6, - [], base.sc[*agt*], base.sc[*pat*], base.sc[*gen*], base.sc[*dat*], base.sc[*abl*], - base.sc[*1s*], c(h: true, ""), c(""), c(""), c(""), c(""), - base.sc[*1p*], c( ""), c(""), c(""), c(""), c(""), - base.sc[*2s*], c(h: true, ""), c(""), c(""), c(""), c(""), - base.sc[*2p*], c( ""), c(""), c(""), c(""), c(""), - base.sc[*3sa*], c(h: true, ""), c(""), c(""), c(""), c(""), - base.sc[*3pa*], c( ""), c(""), c(""), c(""), c(""), - base.sc[*3si*], c(h: true, ""), c(""), c(""), c(""), c(""), - base.sc[*3pi*], c( ""), c(""), c(""), c(""), c(""), + table( + columns: 6, + [], base.sc[*age*], base.sc[*pat*], base.sc[*gen*], base.sc[*dat*], base.sc[*abl*], + base.sc[*1s*], c(h: true, ""), c(""), c(""), c(""), c(""), + base.sc[*1p*], c(h: true, ""), c(""), c(""), c(""), c(""), + base.sc[*2s*], c(h: true, ""), c(""), c(""), c(""), c(""), + base.sc[*2p*], c(h: true, ""), c(""), c(""), c(""), c(""), + base.sc[*3sa*], c(h: true, ""), c(""), c(""), c(""), c(""), + base.sc[*3pa*], c(h: true, ""), c(""), c(""), c(""), c(""), + base.sc[*3si*], c(h: true, ""), c(""), c(""), c(""), c(""), + base.sc[*3pi*], c(h: true, ""), c(""), c(""), c(""), c(""), base.sc[*dem.sg*], c(h: true, ""), c(""), c(""), c(""), c(""), - base.sc[*dem.pl*], c( ""), c(""), c(""), c(""), c(""), - base.sc[*q*], c(h: true, ""), c(""), c(""), c(""), c(""), + base.sc[*dem.pl*], c(h: true, ""), c(""), c(""), c(""), c(""), + base.sc[*q*], c(h: true, ""), c(""), c(""), c(""), c(""), ) }) - +} + +#let nahan-numeral(n) = { + let res = () + while n > 6 { + res = (..res, calc.rem-euclid(n, 6)) + n = calc.div-euclid(n, 6) + } + if n != 0 { res = (..res, n) } + for _ in range(res.len()) { + for i in range(res.len() - 1, -1, step: -1) { + if (res.at(i) == 0 and i != res.len() - 1 and res.at(i + 1) != 0) { + res = (..res.slice(0, i), 6, res.at(i + 1) - 1, ..res.slice(i + 2)) + } + } + } + sn(res.map(it => ("", "", "", "", "", "", "").at(it)).join("")) +} + +#let num-nahan-sh(..nums) = nums.pos().map(nahan-numeral).join(sn[]) +#let num-nahan-let(..nums) = { + let base13 = ( + "0": 0, + "1": 1, + "2": 2, + "3": 3, + "4": 4, + "5": 5, + "6": 6, + "7": 7, + "8": 8, + "9": 9, + "a": 10, + "b": 11, + "c": 12, + ) + let res = nums + .pos() + .map(it => str(it, base: 13)) + .map(str.clusters) + .map(it => it.map(this => base13.at(this))) + .map(it => { + for _ in range(it.len()) { + for i in range(1, it.len()) { + if (it.at(i) == 0 and it.at(i - 1) != 0) { + it = (..it.slice(0, i - 1), it.at(i - 1) - 1, 13, ..it.slice(i + 1)) + } + } + } + let letters = ("", "", "", "", "", "", "", "", "", "", "", "", "", "") + sn(it.map(this => letters.at(this)).join()) + }) + res.join(sn[]) }