Physicist
Support Team
   
Репутация: +179/-0
Offline
Пол: 
Сообщений: 1154
Рябов Денис
|
 |
« : 31.01.2007, 00:08:48 » |
|
Плагин «Русская типографика» позволяет сделать текст ваших статей более удобными для восприятия, в частности: - производится замена обычных кавычек "" на елочки «» и лапки „“ (для вложенных);
- неразрывный пробел перед тире (тире в начале строки может быть только в случае прямой речи), само тире из коротенького «минуса» - становится «нормальным» —;
- вставляется неразрывный пробел между инициалами и фамилией (теперь не будет «Пушкин» на одной строке, а «А.С.» — на другой);
- вставляется неразрывный пробел после сокращений (ул. Ленина), арабских (38 попугаев) и римских цифр (XXVIII съезд), перед некоторыми сокращениями (пять руб.), в устоявшихся сокращениях (и т.д., и т.п., и др.);
- телефонный номер обрамляется тегами <nobr>;
- и др.
Приму любые предложения и пожелания по доработке мамбота. Добавлено в версии 1.1:- многие настройки можно включать/отключать в настройках мамбота;
- убираются пробелы перед знаками пунктуации;
- 1/2, 1/4 и 3/4 заменяются на ½, ¼ и ¾;
- возможность прикреплять короткие слова к последующим, а частицы — к предыдущим словам;
- возможность выдавать символы типа «, … и т.д. (имеющиеся в кодировке windows-1251) в виде «, … и т.д.
- и др.
Добавлено в версии 1.2:- теперь мамбот не затрагивает содержимое тегов.
Версия 2.0Возможности мамбота значительно расширились — в настройках содержится более 50-ти параметров, среди которых добавились (по сравнению с предыдущей версией): - не разрывать слова при помощи неразрывного пробела / тега nobr / стиля white-space:nowrap;
- настраиваемые символы тире и короткого пробела;
- не разрывать номера телефонов;
- не разрывать числа, разбитые на разряды (например, 1 000 000);
- не разрывать двойные слова (например, два-три, из-за);
- не отрывать абревиатуру формы собственности от названия организации;
- различные автозамены символов;
- исправление некоторых пунктуационных ошибок;
- и многое другое.
Исправлено в версии 2.0.4:- исправлена ошибка с обработкой научных степеней (до этого, например, «к.ф.-м.н.» заменялось на «к. к. н.»);
- исправлена обработка заголовков для J1.5 и J1.6 (теперь там не используется <nobr>).
Для желающих принять участие в разработке: текущая версия плагина доступна на https://github.com/dryabov/rustypo.ВНИМАНИЕ! Убедительная просьба: если у вас текст статей стал как-то неправильно или странно выводиться после установки мамбота — вышлите мне образец этого текста (вместе с html-тегами) на e-mail или через Личные сообщения на этом форуме.Последние версии доступны только через github! Файлы ниже оставлены здесь «для истории».
|
|
|
|
« Последнее редактирование: 19.02.2012, 13:25:04 от Physicist »
|
Записан
|
|
|
|
| |
|
smart
|
 |
« Ответ #1 : 31.01.2007, 01:29:57 » |
|
гы, а я ведь тоже когда-то такой мамбот писал, и забыл про него... вот же память старческая... так, ну давай тогда хоть идеями (и если нужно кодом) поделюсь, пусть будет один но мощный:
1. Заменять три точки на
2. Заменять дроби 1/2, 1/4, 3/4 на ¼, ½ ¾ 3. Заменять x между двух цифр на × 4. Заменять повторяющиеся пробелы на один 5. (c) лучше заменять на ©, аналогично (r) на ® и (tm) на ™ 6. Убирать пробелы перед знаками препинания 7. Убирать пробелы после открывающих и перед закрывающими скобками
Замечания по текущему мамботу: лучше все-таки использовать неразрывный пробел, чем комбинации nobr или span (как написано в todo). Иначе текст будет сильно меняться для поисковиков это не очень хорошо.
|
|
|
|
|
Записан
|
|
|
|
Physicist
Support Team
   
Репутация: +179/-0
Offline
Пол: 
Сообщений: 1154
Рябов Денис
|
 |
« Ответ #2 : 31.01.2007, 10:20:32 » |
|
1. Заменять три точки на … 2. Заменять дроби 1/2, 1/4, 3/4 на ¼, ½ ¾ 3. Заменять x между двух цифр на × 4. Заменять повторяющиеся пробелы на один 5. (c) лучше заменять на ©, аналогично (r) на ® и (tm) на ™ 6. Убирать пробелы перед знаками препинания 7. Убирать пробелы после открывающих и перед закрывающими скобками
У меня бОльшая часть этого (кроме пунктов 2 и 6) и так реализована. Замечания по текущему мамботу: лучше все-таки использовать неразрывный пробел, чем комбинации nobr или span (как написано в todo). Иначе текст будет сильно меняться для поисковиков это не очень хорошо.
Вроде бы поисковики не должны обращать внимание на тег <nobr>. А текст с неразрывными пробелами, когда выставлено выравнивание по ширине, смотрится не очень гладко.
|
|
|
|
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #3 : 31.01.2007, 11:42:53 » |
|
У меня бОльшая часть этого (кроме пунктов 2 и 6) и так реализована.
по пунктам 1, 3 и 5 я просто не увидел в мамботе html-кодов для этих символов...
|
|
|
|
|
Записан
|
|
|
|
Physicist
Support Team
   
Репутация: +179/-0
Offline
Пол: 
Сообщений: 1154
Рябов Денис
|
 |
« Ответ #4 : 31.01.2007, 11:58:36 » |
|
Просто они идут символами (…), а не "html-entity" (… или &hellip).
|
|
|
|
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #5 : 31.01.2007, 12:59:39 » |
|
Просто они идут символами (…), а не "html-entity" (… или &hellip).
мне кажется что правильнее все-таки использовать html-entity
|
|
|
|
|
Записан
|
|
|
|
Physicist
Support Team
   
Репутация: +179/-0
Offline
Пол: 
Сообщений: 1154
Рябов Денис
|
 |
« Ответ #6 : 31.01.2007, 13:04:05 » |
|
Мои аргументы: одна и та же выдача в браузере при меньшем размере страницы. А ваши аргументы?
|
|
|
|
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #7 : 31.01.2007, 13:12:57 » |
|
Мои аргументы: одна и та же выдача в браузере при меньшем размере страницы. А ваши аргументы? чаще всего страница все равно отдается сжатой, а вот теоретически возможна ситуация, когда код символа и его html-entity могут по-разному отображаться в браузере... Пользователь может просматривать страницы, игнорируя стили, и использовать при этом свой шрифт, в котором этих символов может не быть, а браузеры (насколько я помню), при отображении html-entities используют стандартный системный шрифт... Я просто один раз с таким приколом сталкивался... Но это не принципиально, мне кажется надо просто сделать это настраиваемым (т.е. вставлять коды или entities), и остальные функции мамбота тоже вынести в настройки. Я у себя делал отключаемыми все функции, бо иногда что-то мешает, а иногда хочется чтобы работало чуть нестандартно.
|
|
|
|
|
Записан
|
|
|
|
Physicist
Support Team
   
Репутация: +179/-0
Offline
Пол: 
Сообщений: 1154
Рябов Денис
|
 |
« Ответ #8 : 01.02.2007, 21:31:54 » |
|
Мамбот обрабатывает текст каждый раз или после одной успешной обработки он сохраняется в БД? Если результаты работы не сохраняются, то не будет ли идеологически более правильным написать плагин к визуальному редактору, который будут выполнять те же функции, но единоразово при создании/редактировании контента? Имеет ли смысл вешать для вылавливания на лету "блох" в типографике вешать целый мамбот? Насколько он может повлиять на быстродействие?
Если включено кэширование, то мамбот выполнится один раз и информация будет лежать в кэше до тех пор пока не истечет время хранения в кэше или не изменится сама информация. Плюс, если мамбот не понравится — его всегда можно отключить. А вообще я думал над тем, что Вы предлагаете: сделать аналог мамбота на javascript и «повесить» его на событие onGetEditorContents (можно плагином, но я не знаю, возможно ли плагином изменить содержимое перед отправкой — плагины писать не приходилось). Но в этом случае изменятся только вновь создаваемые статьи, а на старых это никак не отразится.
|
|
|
|
« Последнее редактирование: 01.02.2007, 21:41:35 от Physicist »
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #9 : 01.02.2007, 21:38:10 » |
|
Имеет ли смысл для вылавливания на лету "блох" в типографике вешать целый мамбот? Насколько он может повлиять на быстродействие? на быстродействие при включенном кэшировании сильно не скажется, а вот установка новой версии мамбота автоматически сразу дает результат, а если это будет плагин к редактору, то мне кажется это будет менее удобно. Ну не буду же я редактировать тысячу материалов чтобы они стали более правильно отображаться. А мамбот такую задачу решит быстро и просто
|
|
|
|
|
Записан
|
|
|
|
XYZ
Осваиваюсь на форуме
 
Репутация: +1/-0
Offline
Сообщений: 49
|
 |
« Ответ #10 : 02.02.2007, 12:51:35 » |
|
может есть смысл заменять разрвы строк на параграфы ?
|
|
|
|
|
Записан
|
|
|
|
Physicist
Support Team
   
Репутация: +179/-0
Offline
Пол: 
Сообщений: 1154
Рябов Денис
|
 |
« Ответ #11 : 02.02.2007, 13:54:18 » |
|
В смысле <br /> на <p>? Добавьте $text=str_replace('<br />','<p>',$text); перед return trim($text); А я, возможно, добавлю такую опцию в следующую версию.
|
|
|
|
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #12 : 02.02.2007, 14:01:42 » |
|
$text=str_replace('<br />','<p>',$text);
ну это не совсем корректно, бо должны быть закрывающие теги... и при этом не должно быть вложенности параграфов...
|
|
|
|
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #13 : 02.02.2007, 14:17:57 » |
|
Добавлю еще несколько правил для мамбота (если какие-то уже есть, не обращайте внимания):
1. Последнее слова в абзаце привязывать к предыдущему 2. Короткие слова, записанные через дефис (например, два-три) обрамлять <nobr> 3. Знаки препинания, кавычки и скобки, оказавшися рядом с <nobr> необходимо вносить внутрь этого тега, чтобы они не отрывались. 4. Между цифрами ставить дефис, а перед цифрами именно минус 5. Не отрывать верхние и нижние индексы от предыдущих символов 6. Вставлять неразрывный пробел между числом и сокращением размерностью, чтобы не было 1кг 7. В случае многоточия после ! и ? ставится две точки, а не три, например !.. или ?.. 8. Знаки процента (%) и промилле (‰) прикреплять к числам, к которым они относятся, пробелом не отбиваются 9. Знаки градуса (°), минуты (′), секунды (″) и терции (″′) от предыдущих чисел не должны быть отбиты, а от последующих чисел должны быть отделены пробелом (10° 15′).
|
|
|
|
|
Записан
|
|
|
|
Physicist
Support Team
   
Репутация: +179/-0
Offline
Пол: 
Сообщений: 1154
Рябов Денис
|
 |
« Ответ #14 : 02.02.2007, 14:21:28 » |
|
ну это не совсем корректно, бо должны быть закрывающие теги... и при этом не должно быть вложенности параграфов...
Понимаю. Но большинство браузеров это не смущает. Более того, многие программы, которые сжимают html-текст, вообще выкидывают теги типа </p>, </td> и т.д. Хотя, сделать "по-честному" будет лишь чуть-чуть сложнее. Нужно заменять <br /> на </p><p> и дополнительно проверять, чтобы текст начинался с <p> и заканчивался на </p>.
|
|
|
|
|
Записан
|
|
|
|
Physicist
Support Team
   
Репутация: +179/-0
Offline
Пол: 
Сообщений: 1154
Рябов Денис
|
 |
« Ответ #15 : 02.02.2007, 14:26:04 » |
|
1. Последнее слова в абзаце привязывать к предыдущему 2. Короткие слова, записанные через дефис (например, два-три) обрамлять <nobr> 3. Знаки препинания, кавычки и скобки, оказавшися рядом с <nobr> необходимо вносить внутрь этого тега, чтобы они не отрывались. 4. Между цифрами ставить дефис, а перед цифрами именно минус 5. Не отрывать верхние и нижние индексы от предыдущих символов 6. Вставлять неразрывный пробел между числом и сокращением размерностью, чтобы не было 1кг 7. В случае многоточия после ! и ? ставится две точки, а не три, например !.. или ?.. 8. Знаки процента (%) и промилле (‰) прикреплять к числам, к которым они относятся, пробелом не отбиваются 9. Знаки градуса (°), минуты (′), секунды (″) и терции (″′) от предыдущих чисел не должны быть отбиты, а от последующих чисел должны быть отделены пробелом (10° 15′).
4. Дефис между цифрами ставится. 6. Число всегда прикрепляется к последующему слову неразрывным пробелом. А вот разбивать, если изначально написано слитно, наверное, и правда стоит. А за остальные правила спасибо. Ждите новую версию.
|
|
|
|
« Последнее редактирование: 02.02.2007, 14:32:48 от Physicist »
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #16 : 02.02.2007, 16:24:39 » |
|
Понимаю. Но большинство браузеров это не смущает. ну мне кажется делать мамбот для соответствия текста одним правилам (типографики) и тут же нарушать другие правила (спецификацию) бессмысленно... нет, если уж делать, то делать надо все правильно... Хотя, сделать "по-честному" будет лишь чуть-чуть сложнее. Нужно заменять <br /> на </p><p> и дополнительно проверять, чтобы текст начинался с <p> и заканчивался на </p>. этого недостаточно... надо проверять, что внутри тега <p> нет вложенных абзацев, что нет внутри этого тега списков и некоторых других элементов (ul, li, h, pre, code). Но это тоже весьма не сложно в реализации...
|
|
|
|
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #17 : 02.02.2007, 16:40:53 » |
|
6. Число всегда прикрепляется к последующему слову неразрывным пробелом. А вот разбивать, если изначально написано слитно, наверное, и правда стоит. причем только для общепринятых сокращений размерностей... И еще, длинное тире обязательно должно привязываться неразрывным пробелом к предыдущему слову. Исключение составляет только прямая речь, там привязка к последующему. Это делается для того, чтобы тире не переносилось на новую строку. Кстати, еще несколько пунктов: 10. Заменять => и <= на ≥ и ≤ 11. Знак доллара ставить перед числом, а не после, и отбивать неразрывным пробелом. 12. Слова и последовательности длиной до 8-10 символов, написанные через дефис или короткое тире заключать в <nobr>..</nobr> 13. Кавычки, находящиеся симметрично на границах ссылки, выносить за пределы ссылки. 14. Начальные и конечные пробелы и знаки препинания внутри текста ссылки выносить за пределы ссылки.
|
|
|
|
|
Записан
|
|
|
|
Caleb
Захожу иногда

Репутация: +0/-1
Offline
Сообщений: 11
|
 |
« Ответ #18 : 02.02.2007, 17:22:58 » |
|
ПМСМ замена <br> на <p> вообще не правильна и должна быть ну оччень опциональный. Очень часто возникает ситуация когда необходимы именно новые строки, а не новые абзацы.
|
|
|
|
|
Записан
|
|
|
|
Physicist
Support Team
   
Репутация: +179/-0
Offline
Пол: 
Сообщений: 1154
Рябов Денис
|
 |
« Ответ #19 : 02.02.2007, 17:24:13 » |
|
Можно подробнее о коротком тире? Я всегда был уверен, что есть только дефис, тире и минус :-)
В традиции русской типографики, насколько я знаю, есть только одно тире. Но вот в компьютерных кодировках есть два символа — короткое тире &ndash (–), которое короче русского, и длинное тире &mdash (—), которое длиннее русского. На практике в обычном тексте хорошо использовать второе, а, например, в диапазоне типа 1941–1945 — первое.
|
|
|
|
« Последнее редактирование: 02.02.2007, 17:29:19 от Physicist »
|
Записан
|
|
|
|
Physicist
Support Team
   
Репутация: +179/-0
Offline
Пол: 
Сообщений: 1154
Рябов Денис
|
 |
« Ответ #20 : 02.02.2007, 17:28:11 » |
|
ПМСМ замена <br> на <p> вообще не правильна и должна быть ну оччень опциональный. Очень часто возникает ситуация когда необходимы именно новые строки, а не новые абзацы.
Конечно это будет опционально.
|
|
|
|
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #21 : 02.02.2007, 17:52:52 » |
|
Можно подробнее о коротком тире? Я всегда был уверен, что есть только дефис, тире и минус :-)
ну дефис у буржуев и называют коротким тире (ndash)... 1. Минус (− или −) 2. Дефис или короткое тире – (&150; или –) 3. Длинное тире — (&151; или —) это пробелов 3 штуки, несчитая неразрывного (en space, em space и thin space) еще один пункт для мамбота: 15. Заменять сноски 1, 2 и 3 в виде <sup>1</sup> и т.д. на ¹, ², ³ (коды &185;, &178;, &179)
|
|
|
|
|
Записан
|
|
|
|
Physicist
Support Team
   
Репутация: +179/-0
Offline
Пол: 
Сообщений: 1154
Рябов Денис
|
 |
« Ответ #22 : 02.02.2007, 18:07:03 » |
|
ну дефис у буржуев и называют коротким тире (ndash)...
Не совсем. Дефис — это то, что находится на кнопке «минус». Используется в выражениях типа 1-й, как-то и т.д.
|
|
|
|
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #23 : 02.02.2007, 18:14:05 » |
|
Не совсем. Дефис — это то, что находится на кнопке «минус». Используется в выражениях типа 1-й, как-то и т.д.
на кнопке минус имхо находится вообще неизвестно что... бо настоящий минус длиннее, а дефис или короткое тире это ndash... хоть может я и ошибаюсь...
|
|
|
|
|
Записан
|
|
|
|
Physicist
Support Team
   
Репутация: +179/-0
Offline
Пол: 
Сообщений: 1154
Рябов Денис
|
 |
« Ответ #24 : 02.02.2007, 23:24:44 » |
|
Если попытаться учесть в обсуждаемой программе ВСЕ правила русской типографики, этот мамбот станет настоящим монстром, т. к. эти правила представляют собой целую книгу. Сомневающихся прошу ознакомится со справочником Гиленсона, где эти правила и изложены. Эта книга является своего рода Конституцией в области вёрстки русскоязычных текстов :-)
Уже два дня изучаю (называется "Справочник художественного и технического редакторов"), плюс, нашел Шульмейстер "Ручной набор" и еще парочку книг, до которых руки не дошли. К сожалению, далеко не все правила можно автоматизировать, но постараюсь учесть всё по-максимуму.
|
|
|
|
|
Записан
|
|
|
|
Physicist
Support Team
   
Репутация: +179/-0
Offline
Пол: 
Сообщений: 1154
Рябов Денис
|
 |
« Ответ #25 : 04.02.2007, 22:11:52 » |
|
Подправил замену дробей 1/2, 1/4 и 3/4 на соответствующие символы - теперь замена будет делаться только если перед дробью стоит пробел (иначе, например, 21/2 заменится на два с половиной). Текущей версии присвоен номер 1.2.1.
PS. Полным ходом идет работа над версией 2.0.
|
|
|
|
|
Записан
|
|
|
|
Sedoy
Support Team
   
Репутация: +77/-10
Online
Пол: 
Сообщений: 1084
Интересно,в какой кодировке пишут врачи?
|
 |
« Ответ #26 : 05.02.2007, 12:07:09 » |
|
Physicist бот то что надо сенкс а дискусии на тему "минус_тире" это ловля блох по моему, куда актуальней про <p> и <br_/>, потому как <p> по умолчанию в некоторых фичах задолбало уже 
|
|
|
|
|
Записан
|
|
|
|
|
Saix
Гость
|
 |
« Ответ #27 : 05.02.2007, 13:24:55 » |
|
11. Знак доллара ставить перед числом, а не после, и отбивать неразрывным пробелом.
Знак доллара по мнению Лебедева в русском языке должен ставиться после числа http://www.artlebedev.ru/kovodstvo/74/ Цитата: Как бы соблазнительно ни выглядел доллар слева от суммы, писать его в русских текстах можно только справа. (Исключение могут составлять финансовые и биржевые тексты, но это отраслевой стандарт, который не может распространяться на остальные области.) В русском языке единица измерения, стоящая перед значением, означает примерно столько: «долларов сто». А не писать пробел перед знаком доллара, это все равно что писать 50руб. Так себе может позволить упражняться в типографике только продавщица продмага с трафаретом и шариковой ручкой. (Исключение тут составляют финансовые документы, где отсутствие пробела страхует от приписки лишних цифр.)
|
|
|
|
|
Записан
|
|
|
|
Physicist
Support Team
   
Репутация: +179/-0
Offline
Пол: 
Сообщений: 1154
Рябов Денис
|
 |
« Ответ #28 : 05.02.2007, 15:55:14 » |
|
ОФФТОП: Лично я считаю, что в джумле давно пора ввести второй файл CSS для печати, чтобы он также был доступен для редактирования, как и основной. Ведь стили могут быть разными даже в плане типографики: для печати, нелишним было бы делать красную строку (отступ в первой строке текста, обрамлённого тэгами <p></p>) и установить вертикальные отступы над/под абзацем равными нулю. А вот на экране как раз можно обойтись стандартным поведением тега <P>. Несмотря на то, что оно представляет собою способ оформления абзацев в английской школе типографики, всё же для чтения с экрана он более удобен, и упрямое следование традициям тут может быть просто вредным.
Ну, это можно сделать через шаблон, добавив соответствующий стилевой файл: после строки <link href="/templates/<?php echo $cur_template; ?>/css/template_css.css" rel="stylesheet" type="text/css" /> добавить <link href="/templates/<?php echo $cur_template; ?>/css/template_css_print.css" rel="stylesheet" type="text/css" media="print" /> Правда, редактировать template_css_print.css придется вручную.
|
|
|
|
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #29 : 05.02.2007, 19:11:56 » |
|
Не знаю, как остальные, но лично я склонен согласиться с тем, что знак доллара нужно помещать после суммы и отбивать неразрывным пробелом, разумеется. ну позиция не так принципиальна, как неразрывный пробел между суммой и символом валюты... пусть будет в конце, но неразрывный нужен обязательно.
|
|
|
|
|
Записан
|
|
|
|
|