LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
01.06.2016, 07:32:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск JoomlaDay Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
joomladay
Страниц: [1] 2 3 4 5 6 7 8 9   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Плагин "Русская типографика"  (Прочитано 123453 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Physicist
Support Team
*****

Репутация: +185/-0
Offline Offline

Пол: Мужской
Сообщений: 962


Рябов Денис


« : 31.01.2007, 00:08:48 »

Плагин «Русская типографика» позволяет сделать текст ваших статей более удобными для восприятия, в частности:

  • производится замена обычных кавычек "" на елочки «» и лапки „“ (для вложенных);
  • неразрывный пробел перед тире (тире в начале строки может быть только в случае прямой речи), само тире из коротенького «минуса» - становится «нормальным» —;
  • вставляется неразрывный пробел между инициалами и фамилией (теперь не будет «Пушкин» на одной строке, а «А.С.» — на другой);
  • вставляется неразрывный пробел после сокращений (ул. Ленина), арабских (38 попугаев) и римских цифр (XXVIII съезд), перед некоторыми сокращениями (пять руб.), в устоявшихся сокращениях (и т.д., и т.п., и др.);
  • телефонный номер обрамляется тегами <nobr>;
  • и др.

Приму любые предложения и пожелания по доработке мамбота.

Добавлено в версии 1.1:

  • многие настройки можно включать/отключать в настройках мамбота;
  • убираются пробелы перед знаками пунктуации;
  • 1/2, 1/4 и 3/4 заменяются на &frac12;, &frac14; и &frac34;;
  • возможность прикреплять короткие слова к последующим, а частицы — к предыдущим словам;
  • возможность выдавать символы типа «, … и т.д. (имеющиеся в кодировке windows-1251) в виде &laquo;, &hellip; и т.д.
  • и др.

Добавлено в версии 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 или через Личные сообщения на этом форуме.

« Последнее редактирование: 02.07.2012, 03:29:11 от Physicist » Записан
 
smart
Администратор
*******

Репутация: +1308/-14
Offline Offline

Пол: Мужской
Сообщений: 6854


снова дома...


« Ответ #1 : 31.01.2007, 01:29:57 »

гы, а я ведь тоже когда-то такой мамбот писал, и забыл про него... вот же память старческая...  так, ну давай тогда хоть идеями (и если нужно кодом) поделюсь, пусть будет один но мощный:

1. Заменять три точки на …
2. Заменять дроби 1/2, 1/4, 3/4 на &frac14;, &frac12; &frac34;
3. Заменять x между двух цифр на &times;
4. Заменять повторяющиеся пробелы на один
5. (c) лучше заменять на &copy;, аналогично (r) на &reg; и (tm) на &trade;
6. Убирать пробелы перед знаками препинания
7. Убирать пробелы после открывающих и перед закрывающими скобками

Замечания по текущему мамботу: лучше все-таки использовать неразрывный пробел, чем комбинации nobr или span (как написано в todo). Иначе текст будет сильно меняться для поисковиков это не очень хорошо.
Записан
Physicist
Support Team
*****

Репутация: +185/-0
Offline Offline

Пол: Мужской
Сообщений: 962


Рябов Денис


« Ответ #2 : 31.01.2007, 10:20:32 »

1. Заменять три точки на …
2. Заменять дроби 1/2, 1/4, 3/4 на &frac14;, &frac12; &frac34;
3. Заменять x между двух цифр на &times;
4. Заменять повторяющиеся пробелы на один
5. (c) лучше заменять на &copy;, аналогично (r) на &reg; и (tm) на &trade;
6. Убирать пробелы перед знаками препинания
7. Убирать пробелы после открывающих и перед закрывающими скобками
У меня бОльшая часть этого (кроме пунктов 2 и 6) и так реализована.
Замечания по текущему мамботу: лучше все-таки использовать неразрывный пробел, чем комбинации nobr или span (как написано в todo). Иначе текст будет сильно меняться для поисковиков это не очень хорошо.
Вроде бы поисковики не должны обращать внимание на тег <nobr>. А текст с неразрывными пробелами, когда выставлено выравнивание по ширине, смотрится не очень гладко.
Записан
smart
Администратор
*******

Репутация: +1308/-14
Offline Offline

Пол: Мужской
Сообщений: 6854


снова дома...


« Ответ #3 : 31.01.2007, 11:42:53 »

У меня бОльшая часть этого (кроме пунктов 2 и 6) и так реализована.
по пунктам 1, 3 и 5 я просто не увидел в мамботе html-кодов для этих символов...
Записан
Physicist
Support Team
*****

Репутация: +185/-0
Offline Offline

Пол: Мужской
Сообщений: 962


Рябов Денис


« Ответ #4 : 31.01.2007, 11:58:36 »

Просто они идут символами (…), а не "html-entity" (&#133 или &hellip).
Записан
smart
Администратор
*******

Репутация: +1308/-14
Offline Offline

Пол: Мужской
Сообщений: 6854


снова дома...


« Ответ #5 : 31.01.2007, 12:59:39 »

Просто они идут символами (…), а не "html-entity" (&#133 или &hellip).
мне кажется что правильнее все-таки использовать html-entity
Записан
Physicist
Support Team
*****

Репутация: +185/-0
Offline Offline

Пол: Мужской
Сообщений: 962


Рябов Денис


« Ответ #6 : 31.01.2007, 13:04:05 »

Мои аргументы: одна и та же выдача в браузере при меньшем размере страницы.
А ваши аргументы?
Записан
smart
Администратор
*******

Репутация: +1308/-14
Offline Offline

Пол: Мужской
Сообщений: 6854


снова дома...


« Ответ #7 : 31.01.2007, 13:12:57 »

Мои аргументы: одна и та же выдача в браузере при меньшем размере страницы. А ваши аргументы?
чаще всего страница все равно отдается сжатой, а вот теоретически возможна ситуация, когда код символа и его html-entity могут по-разному отображаться в браузере... Пользователь может просматривать страницы, игнорируя стили, и использовать при этом свой шрифт, в котором этих символов может не быть, а браузеры (насколько  я помню), при отображении html-entities используют стандартный системный шрифт... Я просто один раз с таким приколом сталкивался... Но это не принципиально, мне кажется надо просто сделать это настраиваемым (т.е. вставлять коды или entities), и остальные функции мамбота тоже вынести в настройки. Я у себя делал отключаемыми все функции, бо иногда что-то мешает, а иногда хочется чтобы работало чуть нестандартно.
Записан
Physicist
Support Team
*****

Репутация: +185/-0
Offline Offline

Пол: Мужской
Сообщений: 962


Рябов Денис


« Ответ #8 : 01.02.2007, 21:31:54 »

Мамбот обрабатывает текст каждый раз или после одной успешной обработки он сохраняется в БД? Если результаты работы не сохраняются, то не будет ли идеологически более правильным написать плагин к визуальному редактору, который будут выполнять те же функции, но единоразово при создании/редактировании контента? Имеет ли смысл вешать для вылавливания на лету "блох" в типографике вешать целый мамбот? Насколько он может повлиять на быстродействие?

Если включено кэширование, то мамбот выполнится один раз и информация будет лежать в кэше до тех пор пока не истечет время хранения в кэше или не изменится сама информация. Плюс, если мамбот не понравится — его всегда можно отключить.

А вообще я думал над тем, что Вы предлагаете: сделать аналог мамбота на javascript и «повесить» его на событие onGetEditorContents (можно плагином, но я не знаю, возможно ли плагином изменить содержимое перед отправкой — плагины писать не приходилось). Но в этом случае изменятся только вновь создаваемые статьи, а на старых это никак не отразится.
« Последнее редактирование: 01.02.2007, 21:41:35 от Physicist » Записан
smart
Администратор
*******

Репутация: +1308/-14
Offline Offline

Пол: Мужской
Сообщений: 6854


снова дома...


« Ответ #9 : 01.02.2007, 21:38:10 »

Имеет ли смысл  для вылавливания на лету "блох" в типографике вешать целый мамбот? Насколько он может повлиять на быстродействие?
на быстродействие при включенном кэшировании сильно не скажется, а вот установка новой версии мамбота автоматически сразу дает результат, а если это будет плагин к редактору, то мне кажется это будет менее удобно. Ну не буду же я редактировать тысячу материалов чтобы они стали более правильно отображаться. А мамбот такую задачу решит быстро и просто
Записан
XYZ
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 48


« Ответ #10 : 02.02.2007, 12:51:35 »

может есть смысл заменять разрвы строк на параграфы ?
Записан
Physicist
Support Team
*****

Репутация: +185/-0
Offline Offline

Пол: Мужской
Сообщений: 962


Рябов Денис


« Ответ #11 : 02.02.2007, 13:54:18 »

В смысле <br /> на <p>?
Добавьте
    $text=str_replace('<br />','<p>',$text);
перед
    return trim($text);
А я, возможно, добавлю такую опцию в следующую версию.
Записан
smart
Администратор
*******

Репутация: +1308/-14
Offline Offline

Пол: Мужской
Сообщений: 6854


снова дома...


« Ответ #12 : 02.02.2007, 14:01:42 »

    $text=str_replace('<br />','<p>',$text);
ну это не совсем корректно, бо должны быть закрывающие теги... и при этом не должно быть вложенности параграфов...
Записан
smart
Администратор
*******

Репутация: +1308/-14
Offline Offline

Пол: Мужской
Сообщений: 6854


снова дома...


« Ответ #13 : 02.02.2007, 14:17:57 »

Добавлю еще несколько правил для мамбота (если какие-то уже есть, не обращайте внимания):

1. Последнее слова в абзаце привязывать к предыдущему
2. Короткие слова, записанные через дефис (например, два-три) обрамлять <nobr>
3. Знаки препинания, кавычки и скобки, оказавшися рядом с <nobr> необходимо вносить внутрь этого тега, чтобы они не отрывались.
4. Между цифрами ставить дефис, а перед цифрами именно минус
5. Не отрывать верхние и нижние индексы от предыдущих символов
6. Вставлять неразрывный пробел между числом и сокращением размерностью, чтобы не было 1кг
7. В случае многоточия после ! и ? ставится две точки, а не три, например !.. или ?..
8. Знаки процента (%) и промилле (‰) прикреплять к числам, к которым  они относятся, пробелом не отбиваются
9. Знаки градуса (°), минуты (′), секунды (″) и терции (″′) от предыдущих чисел не должны быть отбиты, а от последующих чисел должны быть отделены пробелом (10° 15′).
Записан
Physicist
Support Team
*****

Репутация: +185/-0
Offline Offline

Пол: Мужской
Сообщений: 962


Рябов Денис


« Ответ #14 : 02.02.2007, 14:21:28 »

ну это не совсем корректно, бо должны быть закрывающие теги... и при этом не должно быть вложенности параграфов...
Понимаю. Но большинство браузеров это не смущает. Более того, многие программы, которые сжимают html-текст, вообще выкидывают теги типа </p>, </td> и т.д.
Хотя, сделать "по-честному" будет лишь чуть-чуть сложнее. Нужно заменять <br /> на </p><p> и дополнительно проверять, чтобы текст начинался с <p> и заканчивался на </p>.
Записан
Physicist
Support Team
*****

Репутация: +185/-0
Offline Offline

Пол: Мужской
Сообщений: 962


Рябов Денис


« Ответ #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
Администратор
*******

Репутация: +1308/-14
Offline Offline

Пол: Мужской
Сообщений: 6854


снова дома...


« Ответ #16 : 02.02.2007, 16:24:39 »

Понимаю. Но большинство браузеров это не смущает.
ну мне кажется делать мамбот для соответствия текста одним правилам (типографики) и тут же нарушать другие правила (спецификацию) бессмысленно... нет, если уж делать, то делать надо все правильно...

Хотя, сделать "по-честному" будет лишь чуть-чуть сложнее. Нужно заменять <br /> на </p><p> и дополнительно проверять, чтобы текст начинался с <p> и заканчивался на </p>.
этого недостаточно... надо проверять, что внутри тега <p> нет вложенных абзацев, что нет внутри этого тега списков и некоторых других  элементов (ul, li, h, pre, code). Но это тоже весьма не сложно в реализации...
Записан
smart
Администратор
*******

Репутация: +1308/-14
Offline Offline

Пол: Мужской
Сообщений: 6854


снова дома...


« Ответ #17 : 02.02.2007, 16:40:53 »

6. Число всегда прикрепляется к последующему слову неразрывным пробелом. А вот разбивать, если изначально написано слитно, наверное, и правда стоит.
причем только для общепринятых сокращений размерностей...

И еще, длинное тире обязательно должно привязываться неразрывным пробелом к предыдущему слову. Исключение составляет только прямая речь, там привязка к последующему. Это делается для того, чтобы тире не переносилось на новую строку.

Кстати, еще несколько пунктов:

10. Заменять => и <= на &ge; и &le;
11. Знак доллара ставить перед числом, а не после, и отбивать неразрывным пробелом.
12. Слова и последовательности длиной до 8-10 символов, написанные через дефис или короткое тире заключать в <nobr>..</nobr>
13. Кавычки, находящиеся симметрично на границах ссылки, выносить за пределы ссылки.
14. Начальные и конечные пробелы и знаки препинания внутри текста ссылки выносить за пределы ссылки.
Записан
Caleb
Захожу иногда
**

Репутация: +0/-1
Offline Offline

Сообщений: 10


« Ответ #18 : 02.02.2007, 17:22:58 »

ПМСМ замена  <br> на <p> вообще не правильна и должна быть ну оччень опциональный. Очень часто возникает ситуация когда необходимы именно новые строки, а не новые абзацы.
Записан
Physicist
Support Team
*****

Репутация: +185/-0
Offline Offline

Пол: Мужской
Сообщений: 962


Рябов Денис


« Ответ #19 : 02.02.2007, 17:24:13 »

Можно подробнее о коротком тире? Я всегда был уверен, что есть только дефис, тире и минус :-)
В традиции русской типографики, насколько я знаю, есть только одно тире. Но вот в компьютерных кодировках есть два символа — короткое тире &ndash (–), которое короче русского, и длинное тире &mdash (—), которое длиннее русского. На практике в обычном тексте хорошо использовать второе, а, например, в диапазоне типа 1941–1945 — первое.
« Последнее редактирование: 02.02.2007, 17:29:19 от Physicist » Записан
Physicist
Support Team
*****

Репутация: +185/-0
Offline Offline

Пол: Мужской
Сообщений: 962


Рябов Денис


« Ответ #20 : 02.02.2007, 17:28:11 »

ПМСМ замена <br> на <p> вообще не правильна и должна быть ну оччень опциональный. Очень часто возникает ситуация когда необходимы именно новые строки, а не новые абзацы.
Конечно это будет опционально.
Записан
smart
Администратор
*******

Репутация: +1308/-14
Offline Offline

Пол: Мужской
Сообщений: 6854


снова дома...


« Ответ #21 : 02.02.2007, 17:52:52 »

Можно подробнее о коротком тире? Я всегда был уверен, что есть только дефис, тире и минус :-)
ну дефис у буржуев и называют коротким тире (ndash)...

1. Минус  (&minus; или −)
2. Дефис или короткое тире – (&150; или &ndash;)
3. Длинное тире — (&151; или &mdash;)

это пробелов 3 штуки, несчитая неразрывного (en space, em space и thin space)

еще один пункт для мамбота:

15. Заменять сноски 1, 2 и 3 в виде <sup>1</sup> и т.д. на ¹, ², ³ (коды &185;, &178;, &179)

Записан
Physicist
Support Team
*****

Репутация: +185/-0
Offline Offline

Пол: Мужской
Сообщений: 962


Рябов Денис


« Ответ #22 : 02.02.2007, 18:07:03 »

ну дефис у буржуев и называют коротким тире (ndash)...
Не совсем. Дефис — это то, что находится на кнопке «минус». Используется в выражениях типа 1-й, как-то и т.д.
Записан
smart
Администратор
*******

Репутация: +1308/-14
Offline Offline

Пол: Мужской
Сообщений: 6854


снова дома...


« Ответ #23 : 02.02.2007, 18:14:05 »

Не совсем. Дефис — это то, что находится на кнопке «минус». Используется в выражениях типа 1-й, как-то и т.д.
на кнопке минус имхо находится вообще неизвестно что... бо настоящий минус длиннее, а дефис или короткое тире это ndash... хоть может я и ошибаюсь...
Записан
Physicist
Support Team
*****

Репутация: +185/-0
Offline Offline

Пол: Мужской
Сообщений: 962


Рябов Денис


« Ответ #24 : 02.02.2007, 23:24:44 »

Если попытаться учесть в обсуждаемой программе ВСЕ правила русской типографики, этот мамбот станет настоящим монстром, т. к. эти правила представляют собой целую книгу. Сомневающихся прошу ознакомится со справочником Гиленсона, где эти правила и изложены. Эта книга является своего рода Конституцией в области вёрстки русскоязычных текстов   :-)

Уже два дня изучаю (называется "Справочник художественного и технического редакторов"), плюс, нашел Шульмейстер "Ручной набор" и еще парочку книг, до которых руки не дошли. К сожалению, далеко не все правила можно автоматизировать, но постараюсь учесть всё по-максимуму.
Записан
Physicist
Support Team
*****

Репутация: +185/-0
Offline Offline

Пол: Мужской
Сообщений: 962


Рябов Денис


« Ответ #25 : 04.02.2007, 22:11:52 »

Подправил замену дробей 1/2, 1/4 и 3/4 на соответствующие символы - теперь замена будет делаться только если перед дробью стоит пробел (иначе, например, 21/2 заменится на два с половиной). Текущей версии присвоен номер 1.2.1.

PS. Полным ходом идет работа над версией 2.0.
Записан
Sedoy
Support Team
*****

Репутация: +86/-10
Offline Offline

Пол: Мужской
Сообщений: 910


Интересно,в какой кодировке пишут врачи?


« Ответ #26 : 05.02.2007, 12:07:09 »

Physicist бот то что надо сенкс
а дискусии на тему "минус_тире" это ловля блох по моему, куда актуальней про <p> и <br_/>, потому как <p> по умолчанию в некоторых фичах задолбало уже Azn
Записан
Saix
Гость
« Ответ #27 : 05.02.2007, 13:24:55 »

11. Знак доллара ставить перед числом, а не после, и отбивать неразрывным пробелом.
Знак доллара по мнению Лебедева в русском языке должен ставиться после числа
http://www.artlebedev.ru/kovodstvo/74/

Цитата:
Как бы соблазнительно ни выглядел доллар слева от суммы, писать его в русских текстах можно только справа.  (Исключение могут составлять финансовые и биржевые тексты, но это отраслевой стандарт, который не может распространяться на остальные области.)
В русском языке единица измерения, стоящая перед значением, означает примерно столько: «долларов сто». А не писать пробел перед знаком доллара, это все равно что писать 50руб. Так себе может позволить упражняться в типографике только продавщица продмага с трафаретом и шариковой ручкой. (Исключение тут составляют финансовые документы, где отсутствие пробела страхует от приписки лишних цифр.)
Записан
Physicist
Support Team
*****

Репутация: +185/-0
Offline Offline

Пол: Мужской
Сообщений: 962


Рябов Денис


« Ответ #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
Администратор
*******

Репутация: +1308/-14
Offline Offline

Пол: Мужской
Сообщений: 6854


снова дома...


« Ответ #29 : 05.02.2007, 19:11:56 »

Не знаю, как остальные, но лично я склонен согласиться с тем, что знак доллара нужно помещать после суммы и отбивать неразрывным пробелом, разумеется.
ну позиция не так принципиальна, как неразрывный пробел между суммой и символом валюты... пусть будет в конце, но неразрывный нужен обязательно.
Записан
Страниц: [1] 2 3 4 5 6 7 8 9   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet