ДОРОГАЯ МАРИЯ РОМАНОВНА, ознакомься, пожалуйста!!!
Оригинал взят у
kat_bilbo в
Очень полезная штука для тех, кто публикует тексты в интернетике вообще и на "Самиздате" в частностиОригинал взят у
ahitech в
Мой подарок всем, кто пишет в HTML Первое издание книги Гитлера «Моя борьба» редактировал Рудольф Гесс. Вот он и был первым граммар-наци.Исторический факт.
Тезис, который я принимаю как аксиому: автор, уважающий своего читателя, сделает текст не только интересным, но и приятным для чтения. Автор, который следит за тем, чтобы его текст ещё и красиво выглядел, показывает своему читателю, что его, читателя, удобство важно для автора.
Секрет в форматировании. Хорошо оформленный текст - это текст, который выровнен по обоим краям, в котором там, где надо, дефисы заменены на короткие или на длинные тире, а кавычки-"лапки" заменены на кавычки-«ёлочки» и на кавычки-„правильные лапки”. В таком тексте содержание сносок должно быть не там, где придётся, а там, где надо. Я понимаю как само собой разумеющееся, что между иллюстрацией и обтекающим её текстом должно быть достаточное расстояние. Что вместо буквы «х» в выражении «5 на 7 метров» должен стоять типографский знак ×: «5×7 метров», - и что при указании температуры «27 градусов Цельсия» должен быть использован знак градуса ° («27°C»), а не буковка «о». Что знаки копирайта © и зарегистрированной торговой марки ™ должны находиться на своих местах вместо уродливых и неказистых (c) и (tm). Что для указания ударения используется не заглавная буква («докУменты»), а знак ударения («докуме́нты»). В идеале переводы строк в тексте должны располагаться только в разрешённых местах, (например, тире не могут отделяться от предыдущего, а предлоги - от следующего за ними слова переводом строки), а сам текст должен быть полностью
![](http://www.ljplus.ru/img4/a/h/ahitech/Wikipedia.png)
ёфицирован, но я могу понять и тех, кто утверждает, что последние требования - это уже придирчивость и мелочность. Скажем, в своих произведениях - будь то рассказы или посты в ЖЖ - я за соблюдением правильного переноса строк не слежу.
Текст, который выглядит, как результат труда наборщика, приятнее читать, чем простыню неформатированного текста, который ассоциируется прежде всего с неоформленным потоком сознания. У меня неформатированный текст автора, который ещё не считается мной безусловно интересным, чаще всего вызывает реакцию из разряда «Сначала оформи свой поток сознания, а потом уже изливай его на окружающих». Я не читаю длинные и плохо оформленные тексты неизвестных мне авторов. Думаю, я не один такой.
Работа по правильному оформлению текста выполняется обычно во время написания - сюрприз! - ручками. Часть работы берут на себя Word или Pages, - они умеют заменять дефисы на тире, а кавычки-"лапки" на «ёлочки». Но при всём желании они не заменят буковку «х» на знак ×, потому что программа не может вмешиваться в замысел автора: вдруг автор сознательно поставил букву «х» между цифр, и знак × там совсем не нужен?
Поэтому автор, который заботится о своих читателях, наизусть знает
![](http://www.ljplus.ru/img4/a/h/ahitech/Wikipedia.png)
таблицу Alt-кодов и умеет пользоваться клавишей Alt на Макинтоше. Или так, или у него есть редактор, электронный или из плоти и крови, который выполняет всю грязную работу за него. Писатели, которые пользуются ноутбуками без отдельной цифровой клавиатуры, априори оказываются в проигрышном положении по сравнению с остальными, потому что они не могут использовать Alt-коды без танцев с бубном.
Но, допустим, автор вложил душу не только в содержание, но и в форматирование, и написал со всех сторон прекрасный текст, со всеми кавычками и дополнительными знаками на своих местах. После чего он выкладывает его на
![](http://ljplus.ru/img4/a/h/ahitech/Samizdat.gif)
Самиздат и обалдевает, потому что самиздатовскому движку на чужое форматирование как-то наплевать.
Лирическое отступление:
![](http://www.whitefusemedia.com/sites/default/files/images/writing-for-the-web_15.png)
Внешний вид Самиздата, как и внешний вид
![](http://ljplus.ru/img4/a/h/ahitech/Samizdat.gif)
библиотеки Мошкова, не менялся с 1996 года. Чёрный текст на сером фоне - именно так и выглядели Интернет-сайты середины девяностых, белым по умолчанию фон стал только в Internet Explorer 4. Подозреваю, что движок библиотеки Мошкова тоже не менялся с тех самых пор.
Самиздат публикует HTML. Все остальные форматы, которые он якобы принимает, на самом деле конвертируются движком Самиздата в HTML согласно неким мудрёным правилам, которые ни один нормальный человек понять не сможет. Форматирование при этом теряется полностью, кроме самого базового: наклонный шрифт обычно остаётся наклонным, полужирный - полужирным.
Но раз уж Самиздат публикует HTML, то, наверное, написав хороший, красивый, годный текст в HTML-кодах, его можно победить? Да ничего подобного. Самиздатовский движок плевать хотел на атрибуты style, на которые завязано форматирование современных сайтов. Более того, он самовольно заменяет кавычки-ёлочки на знаки дюйма, тире - на дефисы, опускает часть символов и вообще ведёт себя по-свински. Я многократно жаловался на его самоволие, (примеры:
1 2 3 4).
Но не всё так плохо, Самиздат можно заставить показать всякие специальные символы, если вместо прямого их использования в тексте указать их численные коды.
![](http://www.ljplus.ru/img4/a/h/ahitech/Wikipedia.png)
Мнемоники HTML-символов Самиздат тоже не понимает, поэтому, например, вместо знака × надо писать не легко запоминаемое выражение ×, а зубодробительное число ×, запомнить которое невозможно. При этом фраза «пять на семь метров» превращается в строку «5 × 7 метров», которую надо писать ручками, потому что, как я уже говорил выше, никакая автоматика это сама по себе не сделает. (Символ с численным кодом 160 между пятёркой и знаком × - это неразрывный пробел, пробел, на котором нельзя выполнять перенос строки. В математических выражениях - а 5 × 7 это математическое выражение - знак операции ставится на той же строке, на которой находится первый операнд выражения. У символа с кодом 160 тоже есть мнемонический аналог - , от non-breakable space, и эту мнемонику понимают все сайты в Интернете, включая ЖЖ, кроме Самиздата).
Но писать всё это ручками во время набора текста произведения глупо, потому что и вдохновение уходит, и текст становится совершенно нечитаемым. Поэтому поначалу ради форматирования текстов для Самиздата я перед публикацией копировал текст из Word`а в Notepad и с помощью множества операций «Найти и заменить» менял настоящие символы на то, что Самиздат сумеет переварить и показать. Ctrl+H, найти все символы «, заменить их на «, заменить все. Найти все символы », заменить на », заменить все. Найти все длинные тире, подумать, с какой стороны от них должен быть неразрывный пробел, (в случае прямой речи - после тире, в других случаях - перед), заменить тире с пробелом на соответствующую строку. Этот процесс занимал у меня примерно час.
В качестве вишенки на торте добавлю, что после выкладывания текста на Самиздат приключения не заканчиваются. Текст надо периодически обновлять, хотя бы чтобы исправлять опечатки. Но любое редактирование выложенного текста Самиздатовскими средствами, кроме полной замены содержимого, снова убивает всё форматирование. Суть тут вот в чём: Самиздат знает, что последовательность символов « представляет собой открывающую кавычку «, поэтому в окне редактирования он покажет именно кавычку. А при сохранении отредактированного текста многомудрая автозамена наткнётся на странную кавычку « и заменит её на лапку ". Поэтому всё столь тяжело выстраданное форматирование для Самиздата будет жить только до первого редактирования текста на сайте.
Так что созданный в предыдущем абзаце текстовый файл с хорошо отформатированным текстом не удалялся, а сохранялся. В дальнейшем все исправления опечаток вносились сразу в два места: в Word`овский документ, который был основным, и - немедленно - в файлик Notepad с форматированием. Для исправления одной опечатки нужно полностью заменять текст на сайте содержимым этого файла. Обновление перед выкладыванием на сайт копируется в отдельное окно Notepad, форматируется согласно требованиям Самиздата, затем переносится в нужное место файлика с форматированием, и опять же весь текст на Самиздате меняется на текст из файлика.
Да, две копии, обязательно и непременно синхронизируемые друг с другом вручную. Основной набор текста идёт в Word, выкладывание обновлений выполняется через текстовый файл Notepad с уже подготовленным форматированием. Я до сих пор так и работаю: для каждого произведения, выложенного в
![](http://ljplus.ru/img4/a/h/ahitech/Samizdat.gif)
моём разделе на Самиздате, у меня есть текстовый файл с форматированной для Самиздата версией.
Так вот, больше всего времени уходит именно на форматирование текстов. Когда я говорил про час времени, который требуется на обработку одного-единственного файла, я не шутил. Размер файла, впрочем, практически не имеет значения; для медленного человеческого восприятия нет разницы, заменяет «Поиск и замена» двадцать вхождений или сорок тысяч.
Однако программист я или почём?! Я слегка повспоминал C# и написал программу, которая выполняет всё форматирование за меня. Фактически, одной кнопкой. Эта же программа заботится о правильной нумерации сносок (примечание: программа корректирует только сноски внизу страницы, так называемые footnotes; сноски в самом конце текста - endnotes - остаются нетронутыми). Кроме того, я встроил в программу вызов
![](http://img.artlebedev.ru/favicon.ico)
сервиса «Типограф» студии Артемия Лебедева, который превращает некрасивый текст в красивый, расставляя правильные тире и кавычки, а также заботясь о неразрывной связи предлогов с последующими за ними словами. С помощью моей программы можно выровнять края текста слева и справа, сделать отступы в начале абзацев и удалить пустые строки, которые движок Самиздата превращает в огромные пустые пространства между абзацами.
Результат своей работы - програмку размером 188 килобайт - я запихнул на GitHub, начальный релиз можно скачать
![](http://ic.pics.livejournal.com/ahitech/2181599/22265/22265_original.png)
здесь. В моём разделе на GitHub есть возможность
![](http://ic.pics.livejournal.com/ahitech/2181599/22265/22265_original.png)
посмотреть на весь проект целиком, скачать его, посмотреть в исходники, исправить, если надо. Начальный релиз с бинарником находится
![](http://ic.pics.livejournal.com/ahitech/2181599/22265/22265_original.png)
тут. Программа требует .NET Framework версии 4.5, которую я тщательно и продуманно выбирал по принципу «нуачо».
Работа с этой программой проста и безыскусна. Допустим, я написал гениальный рассказ:
При наборе этого текста я вручную набирал символы параграфа, градуса и длинного тире, а короткие тире, кавычки, сноску, знак ® и оба заголовка Ворд поставил сам.
Если загнать его в Самиздат простым копированием текста, получится следующее:
Ну, как выглядит? Не слишком здорово, правда? Поэтому откроем мою программулину, скопируем весь текст из Ворда и вставим его в верхнюю панельку. Получается что-то примерно такое:
![](http://ic.pics.livejournal.com/ahitech/2181599/22311/22311_600.png)
Окно программы сразу после копирования текста из Word. Красненьким обведены некоторые (не все!) символы, которых Самиздат не понимает.
Можем отправить текст в «Типограф», можем не отправлять. Ради этого примера я пользоваться «Типографом» не стал. Жмём самую главную кнопку «Сделать п» «ЧИСТКА!». Намного более короткий и более разумный текст появляется в нижней панельке:
![](http://ic.pics.livejournal.com/ahitech/2181599/22722/22722_600.png)
В нижней панельке выведен текст после чистки. Зелёными стрелочками указаны HTML-коды некоторых символов, с которыми Самиздат устраивает проблемы. Программа сработала, как надо, и заменила символы на соответствующие им числовые коды.
Допустим, это у нас не весь текст, а только обновление, поэтому сноски в нём должны начинаться с номера 5. Отмечаем это в правой панельке, жмём «Да!». Делаем отступ у параграфов в десять пробелов, выравниваем края слева и справа, так, чтобы текст занимал только 50% ширины экрана, и проверяем, как выглядит конечный результат:
![](http://ic.pics.livejournal.com/ahitech/2181599/23009/23009_600.png)
Сноски начинаются с номера 5, у параграфов отступ по 10 пробелов, текст отцентрован и выровнен по обоим краям так, чтобы занимать 50% от площади экрана.
До публикации осталось только удалить пустые строки, - я говорил выше, что Самиздат нервно воспринимает пустые строки между параграфами. Но копировать текст в отдельный файл лучше всего будет именно на этом шаге, до удаления пустых строк. В текстовом файле проще ориентироваться, когда абзацы визуально отделены друг от друга, - а ориентироваться придётся, хотя бы ради исправления неизбежных опечаток. Ну и, понятно, если это - продолжение, то сноски из этого отрывка должны располагаться в нужном месте, после сносок из предыдущих отрывков…
Но если полученный результат устраивает, то удаляем пустые строки специальной галочкой, копируем текст из нижней панельки и вставляем его в редактор текста в Самиздате. И получаем следующее:
![](http://ic.pics.livejournal.com/ahitech/2181599/23319/23319_600.png)
Конечный результат - скриншот с Самиздата.
Моя программа не следит за тем, чтобы предлоги и следующие за ними слова оставались на одной строке, поэтому на скриншоте слова «на» и «термометр» оказались на разных строках. «Типограф» Лебедева эту проблему решает, но зато он заменяет многоточие (типографский знак «ellipsis», …) на три отдельных точки, а я этого не люблю.
Последний
![](http://ljplus.ru/img4/a/h/ahitech/Samizdat.gif)
тизер следующего обновления романа «Живёшь только трижды» был подготовлен с помощью этой программы секунд за тридцать, включая создание текстового файла. С часа до тридцати секунд - неплохая экономия, верно?
Излишне говорить, что эту же программу можно использовать для форматирования любого HTML-текста, вплоть до ЖЖ.
Дисклеймер:
Я не представляю себе, что именно может пойти не так при работе с этой программой, - она не пишет на жёсткий диск и не обращается к нему, Интернет ей нужен только для того, чтобы отправлять данные в «Типограф», и кроме работы с текстом она не делает ничего, - но, если что-то нехорошее всё-таки случится во время её использования, я не виноват.
Известный баг есть один. При использовании шортката Ctrl+V в верхнюю панельку текст может запоститься дважды, причём первый раз - в том виде, в котором он был в Ворде, WYSIWYG. Почему это происходит - я понятия не имею; операцию «Paste» я перехватываю и обрабатываю по-своему. С другой стороны, я с C# не настолько хорошо знаком, чтобы утверждать, что я закрыл абсолютно все потайные лазейки. Решается эта проблема использованием соответствующей кнопочки вместо Ctrl+V.
Кроме того, помните
![](http://www.ljplus.ru/img4/a/h/ahitech/Livejournal.gif)
вот этот мой пост? Так вот, сия программулина является прекрасным примером для этого поста. Я писал крошечную утилитку, решающую одну-единственную задачу, причём решающую её так, как надо мне. Поэтому всё плохое, что я понаписал в том своём посте про подобные программы, к этой программулине относится в полной мере. Справедливости ради скажу, что я начал писать её задолго до того, как задумался о том, что пишу код неправильно.