[ADD] пометка правок ==текст== жёлтым выделением

Рецензент просит показывать в отчёте только исправленные места, чтобы не
перечитывать текст целиком. Разметка разбирается на уровне текстовых узлов,
поэтому «==» в листингах на C++ остаётся сравнением.

Выделяется каждое слово отдельно: одной плашкой на всё выделение строка не
разорвётся по его середине, а выделять приходится и целые предложения.
Составное слово делится по дефису — плашка неразрывна, и шорткат переноса
внутри неё не работает. soul не подошёл: под XeLaTeX его \hl теряет кириллицу.
This commit is contained in:
Arseny
2026-09-07 17:06:17 +03:00
parent be64bf475f
commit fa440049e1
3 changed files with 66 additions and 1 deletions
+24
View File
@@ -37,6 +37,30 @@ def test_unnumbered_heading() -> None:
assert "ВВЕДЕНИЕ" in tex
def test_mark_highlights_every_word() -> None:
tex = render("Обычный ==правленый текст== дальше.\n")
assert "\\hlw{правленый} \\hlw{текст}" in tex
assert "Обычный " in tex
assert " дальше." in tex
def test_mark_splits_compound_word_into_separate_boxes() -> None:
# Плашка неразрывна: составное слово одним боксом вылезает за поле.
tex = render("==аппаратно-программный комплекс==\n")
assert "\\hlw{аппаратно}\\hlw{-}\\allowbreak \\hlw{программный}" in tex
def test_mark_in_heading_reaches_the_contents() -> None:
tex = render("## ==Контейнеризация серверного приложения==\n")
assert "\\subsection{\\hlw{Контейнеризация}" in tex
def test_comparison_in_listing_is_not_a_mark() -> None:
tex = body(render("```cpp\nif (a==b && c==d) return;\n```\n"))
assert "\\hlw" not in tex
assert "a==b" in tex
def test_list_punctuation() -> None:
tex = render("- один\n- два\n- три\n")
assert " \\item один;" in tex