О кавычкерах
В данной заметке под словом «кавычкер» понимается скрипт, расставляющий не только правильные кавычки, но и неразрывные пробелы, тире, знаки копирайта и зарегистрированного товарного знака, другие символы.
Какая задача стоит перед кавычкером?
- для человека, который не может или не хочет написать текст правильно (в плане типографики), сделать это автоматически или
- для человека, который может и хочет написать текст правильно, помочь сделать это быстрее?
Раньше я не задумывался над этим вопросом, и как-то подсознательно, видимо, считал, что первое. А как только задумался, понял, что правильный ответ — второй. Если человек пишет коряво, то никакая автоматика ему не поможет. А вот если человек пишет аккуратно, то автоматика может и помешать, когда сработает неправильно. Исходя из этого нужно делать кавычкеры, во-первых, как можно более предсказуемыми, а во-вторых, как можно меньше мешающими тому, кто без них знает. (То же относится и к викиформаттерам, но сейчас не о них.)
Например. Как мы знаем, между числами пишется тире, если это диапазон («Война шла в 1941—1945 годах»), и дефис — если величина указана приблизительно («С Али-Бабой было 41-45 разбойников»). Сейчас кавычкер e2 «Helicon» использует хитрую эвристику для того, чтобы указывать диапазон лет правильно:
// 1941-1945
$text = preg_replace ('#(\d{4})-(\d{4})#is', '\\1—\\2', $text);
К сожалению, года бывают не только четырёхзначными, четырёхзначными бывают не только года, года не всегда означают диапазон и диапазон бывает не только лет («Война шла в 41—45 годах XX века»). Поэтому эта штука, конечно, несколько повышает вероятность правильного типографирования текста, однако резко снижает предсказуемость кавычкера и мешает тому, кто хочет сделать иначе, сделать так, как он хочет. Начиная с версии 1.15 Helicon больше не занимается этой ерундой, но с e2 пока что поставляется старый Helicon версии 1.11 (смайлик).
К чему я это всё? К тому, что хороший кавычкер должен:
- автоматически заменять одни символы на другие только тогда, когда есть 100% уверенность в том, что автор имел в виду именно тот символ, на который мы заменяем;
- дать возможность автору вставить тот символ, который он хочет, наиболее простым и однозначным способом.
Если продолжить тему дефисов и тире, то вот какие правила типографирования я считал бы разумными (вспомним так же и про знак минус).
Существует два случая, когда мы можем точно сказать, что пользователь имел в виду тире:
- с двух сторон от дефиса находится пробелы или неразрывные пробелы;
- перед дефисом находится начало строки или всего текста (прямая речь).
В этих случаях мы заменяем дефис на тире (mdash), и, если перед ним был пробел, то заменяем этот пробел на неразрывный пробел.
В случаях неоднозначности дефис остаётся самим собой, два дефиса подряд заменяются на минус, а три — на тире. Например:
Иван Петрович родился где-то в 1925-1928 г. | Иван Петрович родился где-то в 1925-1928 г. |
Математики заявляют, что 1991—1917=74 | Математики заявляют, что 1991—1917=74 |
Война шла в 1941—-1945 годах | Война шла в 1941—1945 годах |
В исходном тексте может встретиться ещё и «короткое тире» (его любит вставлять Word; но насколько мне известно в русском языке такого знака не существует). Его нужно, как я понимаю, просто заменить на длинное, так как ничего другого под ним Word подразумевать не мог.
Как видим, при таком подходе автор будет точно знать, что получит на выходе, так как тире ставится автоматически только там, где его необходимость абсолютно однозначна. Никаких сюрпризов.
Примерно так же можно формализовать и правила расстановки кавычек. Главное избавиться от всякой эвристики типа «пользователь наверняка имел в виду то-то».
Если во всём тексте встречается только одна двойная кавычка сразу после числа, то можно с большой уверенностью утверждать, что имелся в виду знак дюйма. Утверждать-то можно, но кавычку нужно заменять на закрывающую, так как она написана слитно с предшествующим текстом и раздельно с последующим. А для знаков фута и дюйма (минуты и секунды) использовать, скажем, одну и две одинарных кавычки подряд соответственно.
Приятным побочным эффектом такого подхода является то, что более формально простые правила и реализовывать легче, и работать это всё будет быстрее.
Что думаете?
Нужно еще сделать так: при попытке написать тире/дефис так, как программе не 100% понятно, должен выпадать мерцающий квадратик с восклицательным знаком, из которого выпадает меню такого содержания:
||Неопознанное тире или дефис||
||Вставить тире||
||Вставить дефис||
||Вставить минус||
||Параметры автозамены||
||Справка по этой функции||
Из последнего пункта вылезает скрепка и предлагает закачать через Windows Update нового персонажа-подсказку под названием «Медвед-Превед».
А если серьезно, непредсказуемое поведение — это грех, полностью согласен. Пусть, все, что делает программа будет ожидаемо и к месту. И жить станет приятней.
Боже, я сначала подумал, что вы серьёзно ;-)
за медведа-скрепку зачёт.
Вот ведь придумают люди себе проблем...
Использовать нужно везде один знак: -.
А кавычки только такие: «„.
Keep it simple!
можно еще запятые не ставить и ваще никакие знаки и вобщем тоже понятно че написать хотел. без проблем!
Тупой скрипт! Я имел в виду такие: ’’ПРЕВЕД!’’
2 AG: и печатать текст гарнитурой Fixed System на экране 80x25 знаков.
Точно :-)
Любопытная заметка. Но у меня есть некоторые сопения в адрес предлагаемого в ней решения.
То есть, если вам нужен кавычкер для английского языка, разрабатыват его нужно независимо и применять только на англоязычных сайтах (ну или хотя бы на английских версиях сайтов многоязычных).
Под «двуязычным изданием» подразумевалось не «издание, которое бывает на двух языках», а издание, которое содержит чередующиеся тексты на разных языках. Было бы забавно посмотреть, как большая русскоязычная статья смотрелась бы, скажем, с французской пунктуацией. А если пунктуация должна быть едина, то алфавит, конечно, тоже. Да и язык, в конце концов. Да здравствуют предприятия «АйБиЭм» и «Сан Майкросистемз»... вернее, пардон, «ИБМ» и «Маленькие Солнечные Системы». Это абсурд (или не совсем?), и он тоже имеет право на существование. Причем несложно найти подобные примеры стремления к единству в советской литературе и периодике. Просто несколько шагов вперед от единства пунктуации. Потихоньку мы движемся к более свободному смешению языков в тексте. Почему бы не «освободить» и пунктуацию?
Мне кажется, вы перегибаете палку.
Во-первых, что бы вы не говорили, двуязычных изданий я не представляю. Всё равно у самого издания должен быть какой-то язык. На каком языке выходные данные написаны? Во-вторых, ну допустим нашли вы где-то такую удивительную вещь, как двуязычное издание. Хорошо, применяйте в нём удивительные правила типографики. И только в нём. В нормальных изданиях, коие составляют абсолютное большинство (а моём мире — дак и вовсе 100%, т. к. двуязычных я не встречал), используйте нормальные правила.
По поводу алфавита и пунктуации. Не путайте пунктуацию и типографику. Одно является вопросом языка, а другое — вопросом национальных традиций.
А при чём тут ИБМ я вообще не понял.
Я считаю, что мы не должны заставлять наборщика текста расставлять два, три дефиса (особенно это касается комментариев, где комментаторы просто не будут знать о таких возможностях (или не будут хотеть использовать)). Я согласен, что другого выхода особо и нету, но:
1) Неужели нашей целью стоит правильно «оттипографить» текст до единого символа? Ничего страшного не вижу в том, чтобы в чём-то мы ошиблись. В крайнем случае корректор (зачастую сам автор текста) должен иметь возможность в ручную исправить/доработать типографику.
2) Анализировать текст. Сложно, но возможно. Например, при использовании минуса, почти всегда, где-то рядом в тексте мы встретим тире. Или: «Иван Петрович родился где-то в 1925-1928 г.» почти всегда встретим «где-то», «приблизительно», «около» и прочее...
В предыдущем комментарии немного описался. Имелось ввиду:
...где-то рядом в тексте мы встретим
тиреравно...