Initial commit

This commit is contained in:
tkachenko committed 2026-10-09 01:45:17 +00:00
commit 41d230d524
163 files changed
+11500

No files matched your search

+105
View File
@@ -0,0 +1,105 @@
// ==========================================
// НУМЕРАЦИЯ, КИРИЛЛИЦА И ФОРМАТЫ СПИСКОВ
// ==========================================
// Глобальный массив кириллических букв для нумерации по ГОСТ
// (обычно исключают Ё, З, Й, О, Ч, Ь, Ы, Ъ)
#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 + "."
}
}