// ========================================== // SHARED: ЧИСТЫЕ СТРАТЕГИИ НУМЕРАЦИИ // ========================================== #let cyrillic_letters = ( "А", "Б", "В", "Г", "Д", "Е", "Ж", "И", "К", "Л", "М", "Н", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ш", "Щ", "Э", "Ю", "Я", ) #let cyrillic_letters_lower = ( "а", "б", "в", "г", "д", "е", "ж", "и", "к", "л", "м", "н", "п", "р", "с", "т", "у", "ф", "х", "ц", "ш", "щ", "э", "ю", "я", ) #let cyrillic_numbering = (..nums) => { let n = nums.pos().first() if n > 0 and n <= cyrillic_letters.len() { cyrillic_letters.at(n - 1) } else { str(n) } } #let cyrillic_lower_numbering = (..nums) => { let n = nums.pos().last() if n > 0 and n <= cyrillic_letters_lower.len() { cyrillic_letters_lower.at(n - 1) } else { str(n) } } #let num_11 = (..nums) => nums.pos().map(str).join(".") + "." #let num_1a = (..nums) => { let pos = nums.pos() let out = "" for (i, n) in pos.enumerate() { if calc.rem(i, 2) == 0 { out += str(n) + "." } else { out += cyrillic_lower_numbering(n) + "." } } out } #let num_1_a = (..nums) => { let pos = nums.pos() let n = pos.last() if calc.rem(pos.len() - 1, 2) == 0 { str(n) + "." } else { cyrillic_lower_numbering(n) + "." } } #let attachment_numbering(policy, n) = { if policy == "arabic" { str(n) } else if policy == "cyrillic" { cyrillic_numbering(n) } else if policy == "none" { "" } else { panic("Scientia / attachment-numbering: неизвестная политика " + repr(policy)) } }