| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- // ==========================================
- // НУМЕРАЦИЯ, КИРИЛЛИЦА И ФОРМАТЫ СПИСКОВ
- // ==========================================
- // Глобальный массив кириллических букв для нумерации по ГОСТ
- // (обычно исключают Ё, З, Й, О, Ч, Ь, Ы, Ъ)
- #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)
- }
- }
- // Формат 1.1. (наследует всех родителей)
- #let num_11 = (..nums) => nums.pos().map(str).join(".") + "."
- // Формат 1.а. (наследует всех родителей, чередует цифры и кириллицу)
- #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 {
- let letter = if n > 0 and n <= cyrillic_letters_lower.len() {
- cyrillic_letters_lower.at(n - 1)
- } else {
- str(n)
- }
- out += letter + "."
- }
- }
- out
- }
- // Формат 1., а. (без наследования родителей, чередует цифры и кириллицу)
- #let num_1_a = (..nums) => {
- let pos = nums.pos()
- let n = pos.last()
- if calc.rem(pos.len() - 1, 2) == 0 { str(n) + "." } else {
- let letter = if n > 0 and n <= cyrillic_letters_lower.len() {
- cyrillic_letters_lower.at(n - 1)
- } else {
- str(n)
- }
- letter + "."
- }
- }
|