| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // ==========================================
- // 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))
- }
- }
|