mod: Документация (+предлоги/частицы, +компоновка)
This commit is contained in:
92
README.md
92
README.md
@@ -113,6 +113,23 @@ result = typo_hyp.process(text="Электрофоретическое иссл
|
||||
|
||||
### Предлоги, союзы и частицы
|
||||
|
||||
Правилом хорошего тона в любой типографике считается, когда короткие слова, такие как предлоги, союзы и частицы,
|
||||
не остаются в конце строки в одиночестве («висеть»). Это ухудшает читаемость.
|
||||
|
||||
Типограф `etpgrf` автоматически решает эту проблему, «приклеивая» такие слова к последующему слову с помощью
|
||||
неразрывного пробела (` `).
|
||||
|
||||
* `в доме` → `в доме`
|
||||
* `и сказал` → `и сказал`
|
||||
|
||||
Это правило работает для коротких слов в русском, старорусском и английском языках.
|
||||
|
||||
Кроме того, обрабатываются и постпозитивные частицы (например, `ли`, `же`, `бы`), которые, наоборот, для улучшения
|
||||
читабельности, «приклеиваются» к предыдущему слову:
|
||||
|
||||
* `сказал бы` → `сказал бы`
|
||||
|
||||
|
||||
### Кавычки
|
||||
|
||||
В текстах кавычки бывают двух видов: «ёлочки» (для русского языка) и “лапки” (для английского языка). В типографе
|
||||
@@ -142,3 +159,78 @@ typo_no_quotes = etpgrf.Typographer(langs='ru', quotes=False)
|
||||
# Обработка текста без кавычек
|
||||
result = typo_no_quotes.process(text='Этот "текст" будет обработан без кавычек.')
|
||||
```
|
||||
|
||||
|
||||
### Компоновка (тире, диапазоны, инициалы, единицы измерения, сокращения и т.п.)
|
||||
|
||||
После того как псевдографика заменена на правильные символы, в дело вступает модуль компоновки (layout), который
|
||||
отвечает за расстановку неразрывных и тонких пробелов. Он применяет несколько важных правил для улучшения читаемости.
|
||||
|
||||
#### Тире
|
||||
|
||||
По правилам русской типографики, длинное тире (—) должно отбиваться пробелами от соседних слов. Чтобы тире не "повисло"
|
||||
в начале строки и визуально не смешивалось с диалогами, etpgrf заменяет пробел перед тире на неразрывный ( ).
|
||||
|
||||
* `слово — слово` → `слово — слово`
|
||||
|
||||
В английской типографике, наоборот, тире пишется слитно. Типограф учитывает это при указании языка `langs='en'`.
|
||||
|
||||
* `word — word` → `word—word`
|
||||
|
||||
Если минус или диапазон стоят между числами (арабскими или римскими), то это считается обозначением числового диапазона
|
||||
(или отрицательным числом, или математическим выражением), и никаких изменений не производится. Неважно есть пробелы
|
||||
вокруг тире/минуса или нет. Если между цифрами тире, то это тоже считается диапазоном и неразрывные пробелы не ставятся:
|
||||
`1941 — 1945` → `1941 — 1945`, `-10 — -5` → `-10 — -5`,
|
||||
|
||||
Если минус стоит перед числом (например, `-5`), то это считается отрицательным числом, и перед ним ставится неразрывный
|
||||
пробел: `от -5 до +5` → `от -5 до +5`.
|
||||
|
||||
#### Инициалы и акронимы
|
||||
|
||||
Чтобы инициалы не отрывались друг от друга и от фамилии при переносе строки, типограф расставляет между ними
|
||||
специальные пробелы:
|
||||
|
||||
* Неразрывный пробел (` `) ставится между фамилией и инициалом/инициалами (`А. Пушкин` → `А. Пушкин`).
|
||||
Неважно стоят ли инициалы перед фамилией или после нее. Важно наличие точки и буквы (инициала), написанного
|
||||
с заглавной буквы.
|
||||
* Тонкая шпация ( ) ставится между самими инициалами, если они написаны слитно, для улучшения внешнего вида
|
||||
(`А.С.Пушкин` → `А. С.Пушкин`). Число инициалов не ограничено (`J.R.R. Tolkien` → `J. R. R.
|
||||
Tolkien`), наличие или отсутствие пробелов между инициалами в исходном тексте неважно.
|
||||
* Акронимы, написанные через точку (не слитно, например, **Н.Л.О.**), разделяются так же, как инициалы, через тонкую шпацию
|
||||
(`Н.Л.О.` → `Н. Л. О.`). Наличие или отсутствие пробелов между буквами в исходном тексте неважно.
|
||||
|
||||
Это правило может давать побочные эффекты (в частности, тонкая шпация не явлеятся неразрывным пробелом, и в длинных
|
||||
акронимах может привести к разрыву строки). Поэтому его обработку можно отключить с помощью параметра
|
||||
`process_initials_and_acronyms`:
|
||||
```python
|
||||
typo = etpgrf.Typographer(process_initials_and_acronyms=False)
|
||||
result = typo.process("А. С. Пушкин") # Останется без изменений
|
||||
```
|
||||
|
||||
#### Единицы измерения
|
||||
|
||||
Типограф предотвращает отрыв единиц измерения от чисел, ставя между ним и предшествующей цифрой неразрывный пробел.
|
||||
Это работает для:
|
||||
|
||||
* **Простых единиц:** `100 км` → `100 км`, `-5 °C` → `-5 °C`'
|
||||
* **Составных единиц:** `120 кв. м.` → `120 кв. м.`, `50 тыс. руб.` → `50 тыс. руб.`
|
||||
* **Единиц с предлогом:** `№ 5` → `№ 5`
|
||||
* **Чисел, записанных и арабскими, и римскими цифрами:** `V век` → `V век`
|
||||
* Если единицами изменений есть математические символы (например, умножение или деление): `10 км / ч` → `10 км/ч`
|
||||
(не важно есть пробелы вокруг `/` или нет).
|
||||
|
||||
Библиотека "знает" множество стандартных единиц для русского и английского языков. Но не все. Вы можете расширить этот
|
||||
список, передав свои кастомные единицы через параметр `process_units`:
|
||||
```python
|
||||
# Передаем список
|
||||
typo = etpgrf.Typographer(process_units=['бочек', 'вёдер'])
|
||||
# Можно передавать и с помощзью строки через пробелы
|
||||
typo = etpgrf.Typographer(process_units='бочек вёдер аршин сажен')
|
||||
result = typo.process("Нужно 10 бочек.") # -> "Нужно 10 бочек."
|
||||
```
|
||||
|
||||
Если нужно отключить распознавание обработку единиц измерения:
|
||||
```python
|
||||
typo = etpgrf.Typographer(process_units=False)
|
||||
result = typo.process("100 км/ч") # Останется без изменений
|
||||
```
|
||||
|
Reference in New Issue
Block a user