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='Этот "текст" будет обработан без кавычек.')
|
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