[FIX] рефакторинг: C1-C4 критичные + W1-W10 предупреждения

C1: LaTeX escaping спецсимволов (& % $ # _ { } ~ ^ \)
C2: text.capitalize() → first char uppercase only
C3: run_xelatex проверяет returncode
C4: парсинг лога при ошибке второго прохода

W1: Удалены мёртвые счётчики section/subsection/subsubsection
W2: text.upper() вычисляется один раз
W3: Единая сигнатура хендлеров (r, tok) для всех
W4: Джэгged строки таблицы паддятся до max колонок
W5: Пустой lang в code fence → без [language=]
W6: hr() вынесен из code.py в hr.py
W7: Валидация обязательных полей front matter
W8: Имя вуза конфигурируется через front matter
W9: -> None аннотация main()
W10: \n в конце END_DOCUMENT

+ Dockerfile: добавлен texlive-fonts-recommended
This commit is contained in:
Arseny
2026-07-16 08:52:58 +03:00
parent 288a5682db
commit 59ba0555bb
13 changed files with 95 additions and 75 deletions
+2 -5
View File
@@ -10,8 +10,5 @@ if TYPE_CHECKING:
def fence(r: Renderer, tok: Token) -> str:
lang = tok.info.strip()
code = tok.content.rstrip()
return f"\\begin{{lstlisting}}[language={lang}]\n{code}\n\\end{{lstlisting}}"
def hr(r: Renderer) -> str:
return r"\noindent\rule{\textwidth}{0.4pt}"
opts = f"[language={lang}]" if lang else ""
return f"\\begin{{lstlisting}}{opts}\n{code}\n\\end{{lstlisting}}"