mod: еще больше html-мнемокода

This commit is contained in:
2025-07-25 23:43:46 +03:00
parent d716d394bb
commit 359f766115

View File

@@ -22,97 +22,498 @@ SUPPORTED_LANGS = frozenset([LANG_RU, LANG_RU_OLD, LANG_EN])
# === Соответствия `unicode` и `mnemonic` для типографа # === Соответствия `unicode` и `mnemonic` для типографа
# Переносы # Переносы
KEY_SHY = 'SHY' KEY_SHY = 'shy'
SHY_ENTITIES = { SHY_ENTITIES = {
KEY_SHY: ('\u00AD', '­'), # Мягкий перенос KEY_SHY: ('\u00AD', '­'), # Мягкий перенос
} }
# Пробелы и неразрывные пробелы # Пробелы и неразрывные пробелы
KEY_NBSP = 'NBSP' KEY_NBSP = 'nbsp'
KEY_THINSP = 'THINSP' KEY_THINSP = 'thinsp'
KEY_ENSP = 'ENSP' KEY_ENSP = 'ensp'
KEY_EMSP = 'EMSP' KEY_EMSP = 'emsp'
KEY_ZWNJ = 'ZWNJ' KEY_ZWNJ = 'zwnj'
KEY_ZWJ = 'ZWJ' KEY_ZWJ = 'zwj'
SPACE_ENTITIES = { SPACE_ENTITIES = {
KEY_NBSP: ('\u00A0', ' '), # Неразрывный пробел KEY_NBSP: ('\u00A0', ' '), # Неразрывный пробел
KEY_THINSP: ('\u2009', ' '), # Тонкий пробел KEY_ENSP: ('\u2002', ' '), # Полу-широкий пробел (En space)
KEY_ENSP: ('\u2002', ' '), # Полу-широкий пробел KEY_EMSP: ('\u2003', ' '), # Широкий пробел (Em space)
KEY_EMSP: ('\u2003', ' '), # Широкий пробел KEY_THINSP: ('\u2009', ' '), # Тонкий пробел (Thin space)
KEY_ZWNJ: ('\u200C', '‌'), # Разрывный пробел нулевой ширины (без пробела) KEY_ZWJ: ('\u200D', '‍'), # Нулевая ширина (с объединением) (Zero Width Joiner)
KEY_ZWJ: ('\u200D', '‍'), # Неразрывный пробел нулевой ширины KEY_ZWNJ: ('\u200C', '‌'), # Нулевая ширина (без объединения) (Zero Width Non-Joiner)
} }
# Тире и дефисы # Тире и дефисы
DASH_ENTITIES = { DASH_ENTITIES = {
'NDASH': ('\u2013', '–'), # Cреднее тире (En dash) 'ndash': ('\u2013', '–'), # Cреднее тире (En dash)
'MDASH': ('\u2014', '—'), # Длинное тире 'mdash': ('\u2014', '—'), # Длинное тире
'HYPHEN': ('\u2010', '‐'), # Обычный дефис (если нужно отличать от минуса) 'hyphen': ('\u2010', '‐'), # Обычный дефис (если нужно отличать от минуса)
'HORBAR': ('\u2015', '―'), # Горизонтальная линия (длинная черта) 'horbar': ('\u2015', '―'), # Горизонтальная линия (длинная черта)
} }
# Кавычки # Кавычки
KEY_QUOT = 'quot'
KEY_LAQUO = 'laquo'
KEY_RAQUO = 'raquo'
KEY_LDQUO = 'ldquo'
KEY_RDQUO = 'rdquo'
QUOTE_ENTITIES = { QUOTE_ENTITIES = {
'QUOT': ('\u0022', '"'), # Двойная кавычка (универсальная) -- " KEY_QUOT: ('\u0022', '"'), # Двойная кавычка (универсальная) -- "
'APOS': ('\u0027', '''), # Апостроф (одинарная кавычка) -- ' 'apos': ('\u0027', '''), # Апостроф (одинарная кавычка) -- '
'LAQUO': ('\u00AB', '«'), # Открывающая (левая) кавычка «ёлочка» -- « KEY_LAQUO: ('\u00AB', '«'), # Открывающая (левая) кавычка «ёлочка» -- «
'RAQUO': ('\u00BB', '»'), # Закрывающая (правая) кавычка «ёлочка» -- » KEY_RAQUO: ('\u00BB', '»'), # Закрывающая (правая) кавычка «ёлочка» -- »
'LDQUO': ('\u201C', '“'), # Oткрывающая (левая) двойная кавычка -- “ KEY_LDQUO: ('\u201C', '“'), # Oткрывающая (левая) двойная кавычка -- “
'RDQUO': ('\u201D', '”'), # Закрывающая (правая) двойная кавычка -- ” KEY_RDQUO: ('\u201D', '”'), # Закрывающая (правая) двойная кавычка -- ”
'BDQUO': ('\u2039', '„'), # Нижняя двойная кавычка -- „ 'bdquo': ('\u2039', '„'), # Нижняя двойная кавычка -- „
'LSQUO': ('\u2018', '‘'), # Открывающая (левая) одинарная кавычка -- 'lsquo': ('\u2018', '‘'), # Открывающая (левая) одинарная кавычка --
'RSQUO': ('\u2019', '’'), # Закрывающая (правая) одинарная кавычка -- 'rsquo': ('\u2019', '’'), # Закрывающая (правая) одинарная кавычка --
'SBQUO': ('\u201A', '‚'), # Нижняя одинарная кавычка -- 'sbquo': ('\u201A', '‚'), # Нижняя одинарная кавычка --
'LSAQUO': ('\u2039', '‹'), # Открывающая французская угловая кавычка -- 'lsaquo': ('\u2039', '‹'), # Открывающая французская угловая кавычка --
'RSAQUO': ('\u203A', '›'), # Закрывающая французская угловая кавычка -- 'rsaquo': ('\u203A', '›'), # Закрывающая французская угловая кавычка --
} }
# Символы валют # Символы валют
CURRENCY_ENTITIES = { CURRENCY_ENTITIES = {
'DOLLAR': ('\u0024', '$'), # Доллар 'dollar': ('\u0024', '$'), # Доллар
'CENT': ('\u00A2', '¢'), # Цент 'cent': ('\u00A2', '¢'), # Цент
'POUND': ('\u00A3', '£'), # Фунт стерлингов 'pound': ('\u00A3', '£'), # Фунт стерлингов
'CURREN': ('\u00A4', '¤'), # Знак валюты (обычно используется для обозначения "без конкретной валюты") 'curren': ('\u00A4', '¤'), # Знак валюты (обычно используется для обозначения "без конкретной валюты")
'YEN': ('\u00A5', '¥'), # Йена 'yen': ('\u00A5', '¥'), # Йена
'EURO': ('\u20AC', '€'), # Евро 'euro': ('\u20AC', '€'), # Евро
'RUBLE': ('\u20BD', '₽'), # Российский рубль (₽) 'ruble': ('\u20BD', '₽'), # Российский рубль (₽)
} }
# Математические символы # Математические символы
KEY_LT = 'LT' KEY_LT = 'lt'
KEY_GT = 'GT' KEY_GT = 'gt'
MATH_ENTITIES = { MATH_ENTITIES = {
KEY_LT: ('\u00B7', '&lt;'), # Меньше (<) KEY_LT: ('\u00B7', '&lt;'), # Меньше (<)
KEY_GT: ('\u00B7', '&gt;'), # Больше (>) KEY_GT: ('\u00B7', '&gt;'), # Больше (>)
'PLUS': ('\u002B', '&plus;'), # Плюс (+) 'plus': ('\u002B', '&plus;'), # Плюс (+)
'MINUS': ('\u2212', '&minus;'), # Минус () 'minus': ('\u2212', '&minus;'), # Минус ()
'MULTIPLY': ('\u00D7', '&times;'), # Умножение (×) 'times': ('\u00D7', '&times;'), # Умножение (×)
'DIVIDE': ('\u00F7', '&divide;'), # Деление (÷) 'divide': ('\u00F7', '&divide;'), # Деление (÷)
'EQUALS': ('\u003D', '&equals;'), # Равно (=) 'equals': ('\u003D', '&equals;'), # Равно (=)
'NOT_EQUAL': ('\u2260', '&ne;'), # Не равно (≠) 'ne': ('\u2260', '&ne;'), # Не равно (≠)
'PLUSMN': ('\u00B1', '&plusmn;'), # Плюс-минус (±) 'plusmn': ('\u00B1', '&plusmn;'), # Плюс-минус (±)
'LESS_EQUAL': ('\u2264', '&le;'), # Меньше или равно () 'not': ('\u00AC', '&not;'), # Знак отрицания (¬)
'GREATER_EQUAL': ('\u2265', '&ge;'), # Больше или равно () 'deg': ('\u00B0', '&deg;'), # Знак градуса (°)
'APPROX_EQUAL': ('\u2245', '&cong;'), # Приблизительно равно () 'sup1': ('\u00B9', '&sup1;'), # Верхний индекс 1 (¹)
'APPROX_EQ': ('\u2245', '&approxeq;'), # Приблизительно равно () 'sup2': ('\u00B2', '&sup2;'), # Верхний индекс 2 (²)
'APPROX': ('\u2248', '&asymp;'), # Приблизительно равно () 'sup3': ('\u00B3', '&sup3;'), # Верхний индекс 3 (³)
'fnof': ('\u0192', '&fnof;'), # Латинская строчная буква «f» с хвостиком или знак флорина (ƒ)
'percnt': ('\u0025', '&percnt;'), # Знак процента (%)
'permil': ('\u0089', '&permil;'), # Знак промилле (‰)
'pertenk': ('\u2031', '&pertenk;'), # Знак на десять тысяч (‱)
'forall': ('\u2200', '&forall;'), # Для всех (∀)
'comp': ('\u2201', '&comp;'), # Дополнение (∁)
'part': ('\u2202', '&part;'), # Частный дифференциал (∂)
'exist': ('\u2203', '&exist;'), # Существует (∃)
'nexist': ('\u2204', '&nexist;'), # Не существует (∄)
'empty': ('\u2205', '&empty;'), # Пустое множество (∅)
'nabla': ('\u2207', '&nabla;'), # Набла (∇)
'isin': ('\u2208', '&isin;'), # Принадлежит (∈)
'notin': ('\u2209', '&notin;'), # Не принадлежит (∉)
'ni': ('\u220B', '&ni;'), # Содержит как член (∋)
'notni': ('\u220C', '&notni;'), # Не содержит как член (∌)
'prod': ('\u220F', '&prod;'), # N-арное произведение (∏)
'coprod' : ('\u2210', '&coprod;'), # N-арный сомножитель (∐)
'sum': ('\u2211', '&sum;'), # N-арная сумма (∑)
'mnplus': ('\u2213', '&mnplus;'), # Минус-плюс (∓)
'minusd': ('\u2212', '&minusd;'), # Минус с точкой (∸)
'plusdo': ('\u2214', '&plusdo;'), # Плюс с точкой (∔)
'setminus': ('\u2216', '&setminus;'), # Разность множеств ()
'lowast': ('\u2217', '&lowast;'), # Оператор звездочка ()
'compfn': ('\u2218', '&compfn;'), # Кольцевой оператор (∘)
'radic': ('\u221A', '&radic;'), # Квадратный корень (√)
'prop': ('\u221D', '&prop;'), # Пропорционально (∝)
'infin': ('\u221E', '&infin;'), # Бесконечность (∞)
'ang': ('\u2220', '&ang;'), # Угол (∠)
'angrt': ('\u221F', '&angrt;'), # Правый угол (∟)
'angmsd': ('\u2221', '&angmsd;'), # Измеримый угол (∡)
'angsph': ('\u2222', '&angsph;'), # Сферический угол (∢)
'mid': ('\u2223', '&mid;'), # Делит ()
'nmid': ('\u2224', '&nmid;'), # Не делит (∤)
'parallel': ('\u2225', '&parallel;'), # Параллельно (∥)
'npar': ('\u2226', '&npar;'), # Не параллельно (∦)
'and': ('\u2227', '&and;'), # Логическое И (∧)
'or': ('\u2228', '&or;'), # Логическое ИЛИ ()
'cap': ('\u2229', '&cap;'), # Пересечение (∩)
'cup': ('\u222A', '&cup;'), # Объединение ()
'int': ('\u222B', '&int;'), # Интеграл (∫)
'int2': ('\u222C', '&Int;'), # Двойной интеграл (∬)
'int3': ('\u222D', '&iiint;'), # Тройной интеграл (∭)
'conint': ('\u222E', '&conint;'), # Интеграл по контуру (∮)
'Conint': ('\u222F', '&Conint;'), # Поверхностный интеграл (∯)
'Cconint': ('\u2230', '&Cconint;'), # Интеграл по объёму (∰)
'cwint': ('\u2231', '&cwint;'), # Круговой интеграл (∱)
'cwconint': ('\u2232', '&cwconint;'), # Круговой интеграл по контуру (∲)
'awconint': ('\u2233', '&awconint;'), # Антикруговой интеграл по контуру (∳)
'there4': ('\u2234', '&there4;'), # Следовательно (∴)
'because': ('\u2235', '&because;'), # Поскольку (∵)
'ratio': ('\u2236', '&ratio;'), # Отношение ()
'Colon': ('\u2237', '&Colon;'), # Пропорция (∷)
'mDDot': ('\u223A', '&mDDot;'), # Геометрическая пропорция (∺)
'homtht': ('\u223B', '&homtht;'), # Гомотетия (∻)
'sim': ('\u223C', '&sim;'), # Оператор тильда ()
'bsim': ('\u223D', '&bsim;'), # Обратная тильда (∽)
'ac': ('\u223E', '&ac;'), # Перевернутая плавная s (∾)
'acd': ('\u223F', '&acd;'), # Синусоидальная волна (∿)
'wreath': ('\u2240', '&wreath;'), # Скрученное произведение (≀)
'nsim': ('\u2241', '&nsim;'), # Не эквивалентно (≁)
'esim': ('\u2242', '&esim;'), # Тильда с минусом (≂)
'sime': ('\u2243', '&sime;'), # Асимптотически равно (≃)
'nsime': ('\u2244', '&nsime;'), # Не асимптотически равно (≄)
'cong': ('\u2245', '&cong;'), # Конгруэнтность (≅)
'asymp': ('\u2248', '&asymp;'), # Приблизительно равно (≈)
'simne': ('\u2246', '&simne;'), # Приблизительно, но не точно равно (≆)
'ncong': ('\u2247', '&ncong;'), # Не приблизительно, не фактически равно (≇)
'nap': ('\u2249', '&nap;'), # Не почти равный (≉)
'approxeq': ('\u224A', '&approxeq;'), # Почти равный или равный (≊)
'apid': ('\u224B', '&apid;'), # Тройная тильда (≋)
'bcong': ('\u224C', '&bcong;'), # Все равны (≌)
'asympeq': ('\u224D', '&asympeq;'), # Эквивалентный (≍)
'bump': ('\u224E', '&bump;'), # Геометрически эквивалентный (≎)
'bumpe': ('\u224F', '&bumpe;'), # Различие между (≏)
'esdot': ('\u2250', '&esdot;'), # Приближается к пределу (≐)
'eDot': ('\u2251', '&eDot;'), # Точка в пределах, Геометрически равный (≑)
'efDot': ('\u2252', '&efDot;'), # Приблизительно равный или образ (≒)
'erDot': ('\u2253', '&erDot;'), # Образ или приблизительно равный (≓)
'colone': ('\u2254', '&colone;'), # Двоеточие равно (≔)
'ecolon': ('\u2255', '&ecolon;'), # Равно двоеточие (≕)
'ecir': ('\u2256', '&ecir;'), # Кольцо в равно (≖)
'cire': ('\u2257', '&cire;'), # Кольцо равно (≗)
'wedgeq': ('\u2259', '&wedgeq;'), # Оценка, Равно с вектором (≙)
'veeeq': ('\u225A', '&veeeq;'), # Равноугольный (≚)
'trie': ('\u225C', '&trie;'), # Равно по определению (≜)
'equest': ('\u225F', '&equest;'), # Равно с вопросительным знаком (≟)
'equiv': ('\u2261', '&equiv;'), # Тождественно равно (≡)
'nequiv': ('\u2262', '&nequiv;'), # Не тождественно равно (≢)
'le': ('\u2264', '&le;'), # Меньше или равно (≤)
'ge': ('\u2265', '&ge;'), # Больше или равно (≥)
'lE': ('\u2266', '&lE;'), # Меньше над равно (≦)
'gE': ('\u2267', '&gE;'), # Больше над равно (≧)
'lnE': ('\u2268', '&lnE;'), # Меньше, но не равно (≨)
'gnE': ('\u2269', '&gnE;'), # Больше, но не равно (≩)
'Lt': ('\u226A', '&Lt;'), # Много меньше (≪)
'Gt': ('\u226B', '&Gt;'), # Много больше (≫)
'between': ('\u226C', '&between;'), # Между (≬)
'NotCupCap': ('\u226D', '&NotCupCap;'), # Не эквивалентно (≭)
'nlt': ('\u226E', '&nlt;'), # Не меньше (≮)
'ngt': ('\u226F', '&ngt;'), # Не больше (≯)
'nle': ('\u2270', '&nle;'), # Не меньше, не равно (≰)
'nge': ('\u2271', '&nge;'), # Не больше, не равно (≱)
'lsim': ('\u2272', '&lsim;'), # Меньше либо эквивалентно (≲)
'gsim': ('\u2273', '&gsim;'), # Больше либо эквивалентно (≳)
'nlsim': ('\u2274', '&nlsim;'), # Ни меньше, ни эквивалентно (≴)
'ngsim': ('\u2275', '&ngsim;'), # Ни больше, ни эквивалентно (≵)
'lg': ('\u2276', '&lg;'), # Меньше либо больше (≶)
'gl': ('\u2277', '&gl;'), # Больше либо меньше (≷)
'ntlg': ('\u2278', '&ntlg;'), # Ни меньше, ни больше (≸)
'ntgl': ('\u2279', '&ntgl;'), # Ни больше, ни меньше (≹)
'pr': ('\u227A', '&pr;'), # Предшествует (≺)
'sc': ('\u227B', '&sc;'), # Следует за (≻)
'prcue': ('\u227C', '&prcue;'), # Предшествует либо равно (≼)
'sccue': ('\u227D', '&sccue;'), # Следует за либо равно (≽)
'prsim': ('\u227E', '&prsim;'), # Предшествует либо эквивалентно (≾)
'scsim': ('\u227F', '&scsim;'), # Следует за либо эквивалентно (≿)
'npr': ('\u2280', '&npr;'), # Не предшествует (⊀)
'nsc': ('\u2281', '&nsc;'), # Не следует за (⊁)
'sub': ('\u2282', '&sub;'), # Подмножество (⊂)
'sup': ('\u2283', '&sup;'), # Надмножество (⊃)
'nsub': ('\u2284', '&nsub;'), # Не подмножество (⊄)
'nsup': ('\u2285', '&nsup;'), # Не надмножество (⊅)
'sube': ('\u2286', '&sube;'), # Подмножество либо совпадает (⊆)
'supe': ('\u2287', '&supe;'), # Надмножество либо совпадает (⊇)
'nsube': ('\u2288', '&nsube;'), # Ни подмножество, ни совпадает (⊈)
'nsupe': ('\u2289', '&nsupe;'), # Ни надмножество, ни совпадает (⊉)
'subne': ('\u228A', '&subne;'), # Подмножество и не совпадает (⊊)
'supne': ('\u228B', '&supne;'), # Надмножество и не совпадает (⊋)
'cupdot': ('\u228D', '&cupdot;'), # Умножение мультимножеств (⊍)
'uplus': ('\u228E', '&uplus;'), # Объединение мультимножеств, Подмножество с плюсом (⊎)
'sqsub': ('\u228F', '&sqsub;'), # Образ в квадрате (⊏)
'sqsup': ('\u2290', '&sqsup;'), # Прообраз в квадрате (⊐)
'sqsube': ('\u2291', '&sqsube;'), # Образ в квадрате либо равно (⊑)
'sqsupe': ('\u2292', '&sqsupe;'), # Прообраз в квадрате либо равно (⊒)
'sqcap': ('\u2293', '&sqcap;'), # Пересечение в квадрате (⊓)
'sqcup': ('\u2294', '&sqcup;'), # Объединение в квадрате (⊔)
'oplus': ('\u2295', '&oplus;'), # Плюс в круге (⊕)
'ominus': ('\u2296', '&ominus;'), # Минус в круге (⊖)
'otimes': ('\u2297', '&otimes;'), # Произведение в круге (⊗)
'osol': ('\u2298', '&osol;'), # Дробная черта в круге (⊘)
'odot': ('\u2299', '&odot;'), # Точка в круге (⊙)
'ocir': ('\u229A', '&ocir;'), # Кольцевой оператор в круге (⊚)
'oast': ('\u229B', '&oast;'), # Оператор звёздочка в круге (⊛)
'odash': ('\u229D', '&odash;'), # Дефис в круге (⊝)
'plusb': ('\u229E', '&plusb;'), # Плюс в квадрате (⊞)
'minusb': ('\u229F', '&minusb;'), # Минус в квадрате (⊟)
'timesb': ('\u22A0', '&timesb;'), # Произведение в квадрате (⊠)
'sdotb': ('\u22A1', '&sdotb;'), # Точка в квадрате (⊡)
'vdash': ('\u22A2', '&vdash;'), # Шеврон вправо (⊢)
'dashv': ('\u22A3', '&dashv;'), # Шеврон влево (⊣)
'top': ('\u22A4', '&top;'), # Истина, Шеврон вниз ()
'bot': ('\u22A5', '&bot;'), # Ложь, Шеврон вверх (⊥)
'models': ('\u22A7', '&models;'), # Моделирует (⊧)
'vDash': ('\u22A8', '&vDash;'), # Истина (⊨)
'Vdash': ('\u22A9', '&Vdash;'), # Влечёт (⊩)
'Vvdash': ('\u22AA', '&Vvdash;'), # Тройная вертикальная черта с перекладиной справа (⊪)
'VDash': ('\u22AB', '&VDash;'), # Двойная вертикальная черта с двойной перекладиной справа (⊫)
'nvdash': ('\u22AC', '&nvdash;'), # Не доказано (⊬)
'nvDash': ('\u22AD', '&nvDash;'), # Не истина (⊭)
'nVdash': ('\u22AE', '&nVdash;'), # Не влечёт (⊮)
'nVDash': ('\u22AF', '&nVDash;'), # Двойная вертикальная черта с двойной перекладиной справа с отрицанием (⊯)
'prurel': ('\u22B0', '&prurel;'), # Предшествует относительно (⊰)
'scurel': ('\u22B1', '&scurel;'), # Следует за относительно (⊱)
'vltri': ('\u22B2', '&vltri;'), # Нормальная подгруппа (⊲)
'vrtri': ('\u22B3', '&vrtri;'), # Содержит как нормальную подгруппу (⊳)
'ltrie': ('\u22B4', '&ltrie;'), # Нормальная подгруппа либо совпадает (⊴)
'rtrie': ('\u22B5', '&rtrie;'), # Содержит как нормальную подгруппу либо совпадает (⊵)
'origof': ('\u22B6', '&origof;'), # Прообраз (⊶)
'imof': ('\u22B7', '&imof;'), # Образ, Импликация (⊷)
'mumap': ('\u22B8', '&mumap;'), # Многозначное отображение (⊹)
'hercon': ('\u22B9', '&hercon;'), # Эрмитово сопряжение матрицы (⊹)
'intcal': ('\u22BA', '&intcal;'), # Включение (⊺)
'veebar': ('\u22BB', '&veebar;'), # Исключающее ИЛИ (⊻)
'barvee': ('\u22BE', '&barvee;'), # Логическое ИЛИ с отрицанием (⊽)
'angrtvb': ('\u22BE', '&angrtvb;'), # Правый угол с дугой (⊾)
'lrtri': ('\u22BF', '&lrtri;'), # Треугольник вершиной вправо (⊿)
'xwedge': ('\u22C0', '&xwedge;'), # N-арное логическое И (⋀)
'xvee': ('\u22C1', '&xvee;'), # N-арное логическое ИЛИ ()
'xcap': ('\u22C2', '&xcap;'), # N-арное пересечение (⋂)
'xcup': ('\u22C3', '&xcup;'), # N-арное объединение ()
'diamond': ('\u22C4', '&diamond;'), # Ромб (⋄)
'sdot': ('\u22C5', '&sdot;'), # Оператор точка (⋅)
'Star': ('\u22C6', '&Star;'), # Оператор звёздочка (⋆)
'divonx': ('\u22C7', '&divonx;'), # Деление с умножением, Кратность деления (⋇)
'bowtie': ('\u22C8', '&bowtie;'), # Бабочка (⋈)
'ltimes': ('\u22C9', '&ltimes;'), # Полупрямое произведение с нормальным фактором слева (⋉)
'rtimes': ('\u22CA', '&rtimes;'), # Полупрямое произведение с нормальным фактором справа (⋊)
'lthree': ('\u22CB', '&lthree;'), # Левое полупрямое произведение (⋋)
'rthree': ('\u22CC', '&rthree;'), # Правое полупрямое произведение (⋌)
'bsime': ('\u22CD', '&bsime;'), # Обратное волнистое равно (⋍)
'cuvee': ('\u22CE', '&cuvee;'), # Волнистое логическое ИЛИ (⋎)
'cuwed': ('\u22CF', '&cuwed;'), # Волнистое логическое И (⋏)
'Sub': ('\u22D0', '&Sub;'), # Двойное подмножество (⋐)
'Sup': ('\u22D1', '&Sup;'), # Двойное надмножество (⋑)
'Cap': ('\u22D2', '&Cap;'), # Двойное пересечение (⋒)
'Cup': ('\u22D3', '&Cup;'), # Двойное объединение (⋓)
'fork': ('\u22D4', '&fork;'), # Вилка (⋔)
'epar': ('\u22D5', '&epar;'), # Равно и параллельно (⋕)
'ltdot': ('\u22D6', '&ltdot;'), # Меньше с точкой (⋖)
'gtdot': ('\u22D7', '&gtdot;'), # Больше с точкой (⋗)
'Ll': ('\u22D8', '&Ll;'), # Очень много меньше (⋘)
'Gg': ('\u22D9', '&Gg;'), # Очень много больше (⋙)
'leg': ('\u22DA', '&leg;'), # Меньше, равно либо больше (⋚)
'gel': ('\u22DB', '&gel;'), # Больше, равно либо меньше (⋛)
'cuepr': ('\u22DE', '&cuepr;'), # Равно либо предшествует (⋞)
'cuesc': ('\u22DF', '&cuesc;'), # Равно либо следует за (⋟)
'nprcue': ('\u22E0', '&nprcue;'), # Не предшествует либо равно (⋠)
'nsccue': ('\u22E1', '&nsccue;'), # Не следует за либо равно (⋡)
'nsqsube': ('\u22E2', '&nsqsube;'), # Не образ в квадрате либо равно (⋢)
'nsqsupe': ('\u22E3', '&nsqsupe;'), # Не прообраз в квадрате либо равно (⋣)
'lnapprox': ('\u22E4', '&lnapprox;'), # Меньше, но не приблизительно равно (⋤)
'gnapprox': ('\u22E5', '&gnapprox;'), # Больше, но не приблизительно равно (⋥)
'lnsim': ('\u22E6', '&lnsim;'), # Меньше, но не эквивалентно (⋦)
'gnsim': ('\u22E7', '&gnsim;'), # Больше, но не эквивалентно (⋧)
'prnsim': ('\u22E8', '&prnsim;'), # Предшествует, но не эквивалентно (⋨)
'scnsim': ('\u22E9', '&scnsim;'), # Следует за, но не эквивалентно (⋩)
'nltri': ('\u22EA', '&nltri;'), # Не содержится как нормальная подгруппа (⋪
'nrtri': ('\u22EB', '&nrtri;'), # Не содержит как нормальную подгруппу (⋫)
'nltrie': ('\u22EC', '&nltrie;'), # Не содержится как нормальная подгруппа либо совпадает (⋬)
'nrtrie': ('\u22ED', '&nrtrie;'), # Не содержит как нормальную подгруппу либо совпадает (⋭)
'vellip': ('\u22EE', '&vellip;'), # Вертикальное многоточие (⋮)
'ctdot': ('\u22EF', '&ctdot;'), # Внутристрочное горизонтальное многоточие (⋯)
'utdot': ('\u22F0', '&utdot;'), # Диагональное многоточие сверху вправо (⋰)
'dtdot': ('\u22F1', '&dtdot;'), # Диагональное многоточие снизу вправо (⋱)
'disin': ('\u22F2', '&disin;'), # Принадлежит с длинным горизонтальным штрихом (⋲)
'isinsv': ('\u22F3', '&isinsv;'), # Принадлежит с вертикальной чертой в конце горизонтального штриха (⋳)
'isins': ('\u22F4', '&isins;'), # Малое принадлежит с вертикальной чертой в конце горизонтального штриха (⋴)
'isindot': ('\u22F5', '&isindot;'), # Принадлежит с точкой сверху (⋵)
'notinvc': ('\u22F6', '&notinvc;'), # Принадлежит с чертой сверху (⋶)
'notinvb': ('\u22F7', '&notinvb;'), # Малое принадлежит с чертой сверху (⋷)
'isinE': ('\u22F8', '&isinE;'), # Принадлежит с двумя горизонтальными штрихами (⋸)
'nisd': ('\u22FA', '&nisd;'), # Содержит с длинным горизонтальным штрихом (⋹)
'xnis': ('\u22FB', '&xnis;'), # Содержит с вертикальной чертой в конце горизонтального штриха (⋺)
'nis': ('\u22FC', '&nis;'), # Малое содержит с вертикальной чертой в конце горизонтального штриха (⋼)
'notnivc': ('\u22FD', '&notnivc;'), # Содержит с чертой сверху (⋽)
'notnivb': ('\u22FE', '&notnivb;'), # Малое содержит с чертой сверху (⋾)
'barwed': ('\u2305', '&barwed;'), # Вертикальная черта с горизонтальной чертой (⌅)
'Barwed': ('\u2306', '&Barwed;'), # Двойная вертикальная черта с горизонтальной чертой (⌆)
'lceil': ('\u2308', '&lceil;'), # Потолок числа, левая скобка (⌈)
'rceil': ('\u2309', '&rceil;'), # Потолок числа, правая скобка (⌉)
'lfloor': ('\u230A', '&lfloor;'), # Пол числа, левая скобка (⌊)
'rfloor': ('\u230B', '&rfloor;'), # Пол числа, правая скобка (⌋)
'lang': ('\u2329', '&lang;'), # Левая угловая скобка (〈)
'rang': ('\u232A', '&rang;'), # Правая угловая скобка (〉)
} }
# Другие символы (пример для расширения) # Другие символы (пример для расширения)
KEY_AMP = 'AMP'
SYMBOL_ENTITIES = { SYMBOL_ENTITIES = {
KEY_AMP: ('\u0026', '&smp;'), #Амперсанд (&) 'copy': ('\u00A9', '&copy;'), # Копирайт (©)
'HELLIP': ('\u2026', '&hellip;'), # Многоточие 'reg': ('\u00AE', '&reg;'), # Зарегистрированный товарный знак (®)
'COPY': ('\u00A9', '&copy;'), # Копирайт 'trade': ('\u2122', '&trade;'), # Знак торговой марки (™)
# ... стрелочки, математические символы и т.д. по мере необходимости 'copysr': ('\u2117', '&copysr;'), # Авторское право звукозаписи, продакшн (℗)
'commat': ('\u0040', '&commat;'), # Коммерческое at, `собака` (@)
'Copf': ('\u2102', '&Copf;'), # Дважды начерченная заглавная С ()
'incare': ('\u2105', '&incare;'), # Забота о (℅)
'gscr': ('\u210A', '&gscr;'), # Каллиграфическая строчная g ()
'hamilt': ('\u210B', '&hamilt;'), # Каллиграфическая заглавная H ()
'Hfr': ('\u210C', '&Hfr;'), # Готическая заглавная H ()
'Hopf': ('\u210D', '&Hopf;'), # Дважды начерченная заглавная H ()
'planckh': ('\u210E', '&planckh;'), # Постоянная Планка ()
'planck': ('\u210F', '&planck;'), # Постоянная Планка делённая на два пи, константа Дирака (ℏ)
'Iscr': ('\u2110', '&Iscr;'), # Каллиграфическая заглавная I ()
'image': ('\u2111', '&image;'), # Готическая заглавная I ()
'Lscr': ('\u2112', '&Lscr;'), # Каллиграфическая заглавная L ()
'ell': ('\u2113', '&ell;'), # Каллиграфическая строчная l ()
'Nopf': ('\u2115', '&Nopf;'), # Дважды начерченная заглавная N ()
'numero': ('\u2116', '&numero;'), # Знак номера (№)
'weierp': ('\u2118', '&weierp;'), # Каллиграфическая заглавная P (℘)
'Popf': ('\u2119', '&Popf;'), # Дважды начерченная заглавная P ()
'Qopf': ('\u211A', '&Qopf;'), # Дважды начерченная заглавная Q ()
'Rscr': ('\u211B', '&Rscr;'), # Каллиграфическая заглавная R ()
'real': ('\u211C', '&real;'), # Готическая заглавная R ()
'Ropf': ('\u211D', '&Ropf;'), # Дважды начерченная заглавная R ()
'rx': ('\u211E', '&rx;'), # Символ рецепта (℞)
'Zopf': ('\u2124', '&Zopf;'), # Дважды начерченная заглавная Z ()
'mho': ('\u2127', '&mho;'), # Перевёрнутый знак ома (℧)
'Zfr': ('\u2128', '&Zfr;'), # Готическая заглавная Z ()
'iiota': ('\u2129', '&iiota;'), # Перевернутая греческая строчная буква йота (℩)
'bernou': ('\u212C', '&bernou;'), # Каллиграфическая заглавная B ()
'Cfr': ('\u212D', '&Cfr;'), # Готическая заглавная C ()
'escr': ('\u212F', '&escr;'), # Каллиграфическая строчная буква e ()
'Escr': ('\u2130', '&Escr;'), # Каллиграфическая заглавная E ()
'Fscr': ('\u2131', '&Fscr;'), # Каллиграфическая заглавная F ()
'Mscr': ('\u2133', '&Mscr;'), # Каллиграфическая заглавная M ()
'oscr': ('\u2134', '&oscr;'), # Каллиграфическая строчная буква o ()
'alefsym': ('\u2135', '&alefsym;'), # Символ алеф (ℵ)
'beth': ('\u2136', '&beth;'), # Символ бет (ℶ)
'gimel': ('\u2137', '&gimel;'), # Символ гимел (ℷ)
'daleth': ('\u2138', '&daleth;'), # Символ далет (ℸ)
'DD': ('\u2145', '&DD;'), # Дважды начерченная курсивная заглавная D ()
'dd': ('\u2146', '&dd;'), # Дважды начерченная курсивная строчная d ()
'ee': ('\u2147', '&ee;'), # Дважды начерченная курсивная строчная e ()
'ii': ('\u2148', '&ii;'), # Дважды начерченная курсивная строчная i ()
'ff': ('\u2149', '&ff;'), # Дважды начерченная курсивная строчная f ()
'ffilig': ('\uFB03', '&ffilig;'), # Лигатура "ffi" (ffi)
'fflig': ('\uFB00', '&fflig;'), # Лигатура "ff" (ff)
'filig': ('\uFB01', '&filig;'), # Лигатура "fi" (fi)
'fllig': ('\uFB02', '&fllig;'), # Лигатура "fl" (fl)
'starf': ('\u2605', '&starf;'), # Закрашенная звезда (★)
'star': ('\u2606', '&star;'), # Незакрашенная звезда (☆)
'phone': ('\u260E', '&phone;'), # Значок телефона (☎)
'female': ('\u2640', '&female;'), # Венера (женский знак) (♀)
'male': ('\u2642', '&male;'), # Марс (мужской знак) (♂)
'spades': ('\u2660', '&spades;'), # Пики закрашенные (♠)
'clubs': ('\u2663', '&clubs;'), # Трефы закрашенные (♣)
'hearts': ('\u2665', '&hearts;'), # Черви закрашенные (♥)
'diams': ('\u2666','&diams;'), # Бубны закрашенные (♦)
'loz': ('\u25CA', '&loz;'), # Ромб (◊)
'sung': ('\u266A', '&sung;'), # Музыкальная восьмая нота (♪)
'flat': ('\u266D', '&flat;'), # Музыкальный знак бемоль (♭)
'natural': ('\u266E', '&natural;'), # Музыкальный знак бекар (♮)
'sharp': ('\u266F', '&sharp;'), # Музыкальный знак диез (♯)
'check': ('\u2713', '&check;'), # Галочка (✓)
'cross': ('\u2717', '&cross;'), # Крестик (✗)
'malt': ('\u2720', '&malt;'), # Мальтийский крест (✠)
'sext': ('\u2736', '&sext;'), # Шестиконечная закрашенная звезда (✶)
'VerticalSeparator': ('\u2758', '&VerticalSeparator;'), # Тонкая вертикальная черта (❘)
'lbbrk': ('\u2772', '&lbbrk;'), # Тонкая левая скобка панцерообразной формы ()
'rbbrk': ('\u2773', '&rbbrk;'), # Тонкая правая скобка панцерообразной формы ()
} }
# Знаки препинания
KEY_AMP = 'amp'
SYMBOL_PUNCTUATION = {
# 'excl': ('\u0021', '&excl;'), # Восклицательный знак (!)
# 'num': ('\u0023', '&num;'), # Решётка (#)
# 'percnt': ('\u0025', '&percnt;'), # Знак процента (%)
KEY_AMP: ('\u0026', '&amp;'), # Амперсанд (&)
# 'lpar': ('\u0028', '&lpar;'), # Левая круглая скобка (()
# 'rpar': ('\u0029', '&rpar;'), # Правая круглая скобка ())
#'ast': ('\u002A', '&ast;'), # Звёздочка (*)
#'comma': ('\u002C', '&comma;'), # Запятая (,)
# 'period': ('\u002E', '&period;'), # Точка (.)
#'sol': ('\u002F', '&sol;'), # Косая черта (/)
# 'colon': ('\u003A', '&colon;'), # Двоеточие (:)
# 'semi': ('\u003B', '&semi;'), # Точка с запятой (;)
# 'quest': ('\u003F', '&quest;'), # Знак вопроса (?)
# 'lbrack': ('\u005B', '&lbrack;'), # Левая квадратная скобка ([)
# 'bsol': ('\u005C', '&bsol;'), # Обратная косая черта (\)
# 'rbrack': ('\u005D', '&rbrack;'), # Правая квадратная скобка (])
# 'Hat': ('\u005E', '&Hat;'), # Циркумфлекс (^) -- знак вставки, карет
# 'lowbar': ('\u005F', '&lowbar;'), # Нижнее подчёркивание (_)
# 'grave': ('\u0060', '&grave;'), # Гравис, Апостроф (обратная кавычка) (`)
# 'lbrace': ('\u007B', '&lbrace;'), # Левая фигурная скобка ({)
# 'vert': ('\u007C', '&vert;'), # Вертикальная черта (|)
# 'rbrace': ('\u007D', '&rbrace;'), # Правая фигурная скобка (})
# 'tilde': ('\u007E', '&tilde;'), # Тильда (~)
'circ': ('\u02C6', '&circ;'), # Модификатор буквы циркумфлекс, ударение (ˆ)
'lrm': ('\u200E', '&lrm;'), # Метка слева направо (Left-to-Right Mark)
'rlm': ('\u200F', '&rlm;'), # Метка справа налево (Right-to-Left Mark)
'iexcl': ('\u00A1', '&iexcl;'), # Перевернутый восклицательный знак (¡)
'brvbar': ('\u00A6', '&brvbar;'), # Изломанная вертикальная черта (¦)
'sect': ('\u00A7', '&sect;'), # Знак параграфа (§)
'uml': ('\u00A8', '&uml;'), # Диэрезис (¨)
'ordf': ('\u00AA', '&ordf;'), # Женский порядковый индикатор (ª)
'not': ('\u00AC', '&not;'), # Знак отрицания (¬)
'macr': ('\u00AF', '&macr;'), # Макрон (¯)
'acute': ('\u00B4', '&acute;'), # Знак ударения (´)
'micro': ('\u00B5', '&micro;'), # Знак микро (µ)
'para': ('\u00B6', '&para;'), # Знак абзаца (¶)
'middot': ('\u00B7', '&middot;'), # Точка по центру (·)
'cedil': ('\u00B8', '&cedil;'), # Седиль (¸)
'ordm': ('\u00BA', '&ordm;'), # Мужской порядковый индикатор (º)
'iquest': ('\u00BF', '&iquest;'), # Перевернутый вопросительный знак (¿)
'Vert': ('\u2016', '&Vert;'), # Двойная вертикальная черта (‖)
'dagger': ('\u2020', '&dagger;'), # Крестик (†)
'Dagger': ('\u2021', '&Dagger;'), # Двойной крестик (‡)
'bull': ('\u2022', '&bull;'), # Маркер списка (•)
'nldr': ('\u2025', '&nldr;'), # Двухточечный пунктир (‥)
'hellip': ('\u2026', '&hellip;'), # Многоточие (…)
'permil': ('\u2030', '&permil;'), # Знак промилле (‰)
'pertenk': ('\u2031', '&pertenk;'), # Знак на десять тысяч (‱)
'prime': ('\u2032', '&prime;'), # Знак штриха (одинарная минута) ()
'Prime': ('\u2033', '&Prime;'), # Двойной штрих (двойная минута) (″)
'tprime': ('\u2034', '&tprime;'), # Тройной штрих (тройная минута) (‴)
'bprime': ('\u2035', '&bprime;'), # Обратный штрих (обратная минута) ()
'oline': ('\u203E', '&oline;'), # Надчёркивание (длинная черта над текстом) (‾)
'caret': ('\u2041', '&caret;'), # Знак вставки точки ввода ()
'hybull': ('\u2043', '&hybull;'), # Маркер списка дефис ()
'frasl': ('\u2044', '&frasl;'), # Дробная наклонная черта (Fraction Slash) ()
'bsemi': ('\u204F', '&bsemi;'), # Инвертированная точка с запятой (⁏)
'qprime': ('\u2057', '&qprime;'), # Четырехкратный штрих (⁗)
}
# Дробные символы и знаки
SYMBOL_FRACTIONS = {
'frac12': ('\u00BD', '&frac12;'), # Обычная дробь 1/2 (½)
'frac13': ('\u2153', '&frac13;'), # Обычная дробь 1/3 (⅓)
'frac14': ('\u00BC', '&frac14;'), # Обычная дробь 1/4 (¼)
'frac15': ('\u2155', '&frac15;'), # Обычная дробь 1/5 (⅕)
'frac16': ('\u2159', '&frac16;'), # Обычная дробь 1/6 (⅙)
'frac17': ('\u215A', '&frac17;'), # Обычная дробь 1/7 (⅐)
'frac18': ('\u215B', '&frac18;'), # Обычная дробь 1/8 (⅛)
'frac19': ('\u215C', '&frac19;'), # Обычная дробь 1/9 (⅑)
'frac110': ('\u215D', '&frac110;'), # Обычная дробь 1/10 (⅒)
'frac23': ('\u2154', '&frac23;'), # Обычная дробь 2/3 (⅔)
'frac25': ('\u2156', '&frac25;'), # Обычная дробь 2/5 (⅖)
'frac34': ('\u00BE', '&frac34;'), # Обычная дробь 3/4 (¾)
'frac35': ('\u2157', '&frac35;'), # Обычная дробь 3/5 (⅗)
'frac38': ('\u215A', '&frac38;'), # Обычная дробь 3/8 (⅜)
'frac45': ('\u2158', '&frac45;'), # Обычная дробь 4/5 (⅘)
'frac56': ('\u215A', '&frac56;'), # Обычная дробь 5/6 (⅚)
'frac58': ('\u215B', '&frac58;'), # Обычная дробь 5/8 (⅝)
'frac78': ('\u215B', '&frac78;'), # Обычная дробь 7/8 (⅞)
}
# --- Сборка и валидация --- # --- Сборка и валидация ---
# 1. Создаем единый словарь всех сущностей для удобного доступа # 1. Создаем единый словарь всех сущностей для удобного доступа
ALL_ENTITIES = { ALL_ENTITIES = {
**SHY_ENTITIES, **SPACE_ENTITIES, **DASH_ENTITIES, **MATH_ENTITIES, **SHY_ENTITIES, **SPACE_ENTITIES, **DASH_ENTITIES, **MATH_ENTITIES,
**QUOTE_ENTITIES, **CURRENCY_ENTITIES, **SYMBOL_ENTITIES **QUOTE_ENTITIES, **CURRENCY_ENTITIES, **SYMBOL_ENTITIES, **SYMBOL_PUNCTUATION, **SYMBOL_FRACTIONS
} }
# Сущности, которые ВСЕГДА должны выводиться как мнемоники в режиме MODE_MIXED # Сущности, которые ВСЕГДА должны выводиться как мнемоники в режиме MODE_MIXED