Pull to refresh

Thinking in HTML

Reading time 8 min
Views 7.5K

В предыдущей статье я рассказал немного о вёрстке газеты с помощью прямой генерации постскрипт-файлов из отдельных готовых макетов. Комментаторы обратили моё внимание на LaTeX. Для меня было очевидно, что в описанном мной случае LaTeX был избыточным, но осадок остался. И я пошёл искать подробности в Яндексе.


LaTeX поразил меня прежде всего размером пакета texlive-full. Затем — сложностью вставки кавычек-ёлочек: надо каждый раз переключаться на латиницу. Я попробовал начать писать эту статью в LaTeX, и понял, что это не нужно. Потому что а) у Хабра другие требования (например, кавычки Хабр делает сам), и б) у меня тоже другие требования: если статья не для Хабра, я всё равно буду ставить обычные кавычки, а потом заменю их на ёлочки макросом в Виме.


Думаю, так рассуждаю не я один — что удобнее во время написания текста ставить какие-то простые метки, обозначающие кавычки, ссылки, жирность, нумерованный список… А потом заменять эти метки на универсальную разметку типа HTML с помощью, допустим, Markdown.pl.


Thinking in Markdown


К этой идее — явно обозначать при наборе текста суперсегментные единицы — человечество пришло достаточно давно. Например, при постановке знака ударения над некоторыми словами, или при обозначении восходящей интонации с помощью восклицательного знака.


Потом люди стали набирать тексты в компьютере, и постепенно изобрели TeX. Но кто и где его видел в эпоху застоя? Markdown расцвёл по-настоящему буйным цветом, когда широкие массы бывших советских граждан начали верстать газеты в программе Xerox Ventura Publisher. Это был инструмент, предвосхитивший не только современную концепцию markdown, но и HTML — CSS: тексты с разметкой хранились в одних файлах, структура публикации — в других, описание стилей — в третьих.


Потом появился модный «визуальный» Aldus Pagemaker и вёрстка превратилась в ад, а газетные страницы — в издевательство над разумом и чувствами читателей. Adobe Indesign ещё глубже перемешал содержание с оформлением. Потому что желание форматировать текст «наглядно» — неистребимо, и корпорации всегда будут с удовольствием на этом желании зарабатывать.


Точно так же неистребимо и желание некоторых людей всё упорядочивать, раскладывать по полочкам, рассчитывать расположение текста и картинок строго математически. Думаю, таких людей намного меньше, чем «визуалов». Об этом говорит нам огромное количество редакторов ВИЗИВИГ — в том числе и на сайтах (даже Википедия докатилась).


И соль, кажется, перестаёт быть солёной: После двадцати лет борьбы за «семантическую разметку» довольно странно было увидеть на сайте IBM (!) пример для LaTeX в стиле HTML 3.2:


Листинг 2. Исходный код титульного листа курсовой работы 
begin{titlepage} 
\begin{center}
 \large
     МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ\\ РОССИЙСКОЙ ФЕДЕРАЦИИ 

Ситуация, конечно, неоднозначная. Если мы должны сдать документ в электронном виде, тогда этот center — конкретное зло: получатель не сможет управлять печатью с помощью внешних стилей. Если же мы сами должны напечатать документ, тогда… Я бы всё-таки ожидал от принимающей стороны файла с настройкой для сущности titlepage, а не инструкции «отформатируйте как-нибудь сами, чтобы всё там по центру было».


Из этого примера я вижу, что желание непосредственно форматировать текст невозможно истребить никаким LaTeX'ом.


LaTeX vs []?


Одной из первых статей при поиске в Яндексе нашлась конечно же статья на Хабре Не пишите в LaTeX!. Там, в частности, утверждается, что Ворд не так уж плох — что мы просто «не умеем его готовить»:


Если кто-то размечает заголовки разделов в текстовом редакторе, выбирая жирный шрифт или увеличивая размер шрифта, то он неправильно использует функции текстового редактора. Человеку следует показать [...]

Думаю, этот «кто-то» использует редактор совершенно правильно. Потому что этот редактор именно для того и сделан. И ничего мы этому человеку не сможем ни показать, ни доказать. Потому что сначала родилось желание этого человека произвольно раскрашивать текст, и только потом появился Ворд, как ответ на запрос потребителя.


Ведь вполне можно было в самом Ворде ограничить произвол пользователей. Но много ли их после этого бы осталось? Скорее всего, Ворд оказался бы сейчас там же, где и незабвенная Вентура.


Обсуждение статьи показало мне, что противопоставлять LaTeX Ворду непродуктивно:


Ей было понятно, что вот это заголовок. А в ворде она не отличала заголовок от текста который жирный и с размером шрифта больше обычного.

В Ворде, конечно, тоже можно отличить заголовок от просто жирного текста. Но тут именно вопрос, в каком представлении это человеку удобнее. И тот, кому и так (от природы) удобнее работать с внешними метками, выберет НЕ Ворд. И не Indesign. Но что?


***


Долгое время работая с разными офисными документами, «голым» текстом, всякими вариантами «маркдаунов», я постепенно осознал, что чувствую себя уверенно и спокойно только с одним форматом — HTML. При получении «грязного» файла .doc для меня первым инстинктивным движением является Ctrl+a, Ctrl+m в ЛибреОфисе (очистка непосредственного форматирования). Второй шаг — копирование текста в специально созданную для этого ВИЗИВИГ-формочку на сайте с кнопкой «Очистить».


Понятно, что вторым способом можно чистить также и «грязный» HTML, в виде которого попадает к нам сегодня основная масса информации.


Очистка после конвертации в HTML оставляет только голые теги (сохраняются также атрибуты class и некоторые важные для таблиц — вроде rowspan). Это, в частности, решает проблему с «расползанием» таблиц. Потом полученный чистый HTML можно вставить обратно в текстовый редактор и дооформить уже нормально, стилями (если он нужен кому-то другому именно в таком виде). Или так и оставить — в HTML, и доработать прямо там.


Вот эту связку — Markdown — HTML — уже вполне, на мой взгляд, можно противопоставлять LaTeX'у, тут уже есть, что обсуждать. То есть конечная идея моя такая: всякий текст надо начинать набирать и оформлять на близком вам «диалекте» какого-то упрощённого маркдауна, и ближе к концу принимать решение: HTML или LaTeX. И совсем не обязательно, кстати, HTML должен навсегда остаться на экране — из него вполне можно создавать pdf или допиливать его в виде odt.


О чём вы думаете, глядя на эту кирпичную стену?


Вы, вероятно, со многим будете спорить, из-за чего-то даже ругать меня. Потому что всегда при написании статьи пишущий думает об одном, а читающий потом статью — о другом. Чтобы немного уменьшить это расхождение, скажу прямо: я думаю сейчас (и всегда) в первую очередь об уроках информатики. Первый шаг от «непосредственной визуальности» к мышлению стилями мы уже на этих уроках сделали: после оформления учебного документа в LibreOffice ученики сами спешат проверить свою работу с помощью Ctrl+m, не дожидаясь, когда это сделает учитель.


На следующем этапе передо мной возникает выбор стратегии: как приучить человека мыслить внешними метками при оформлении текста.


Вспоминаю, что где-то двумя параграфами выше я утверждал нечто несовместимое с этой задачей — что есть люди, от природы мыслящие «разметкой», а есть природные «визуалы», и ничего с этим не сделаешь. Это было полемическим преувеличением. Мы, конечно, не состоим только из «чёрного» и «белого», в каждом человеке дремлет и то и другое — чего-то немного больше. И то и другое можно пробудить намеренными действиями — эту возможность, в частности, успешно эксплуатируют продавцы Ворда и Индизайна.


И я думаю, школа должна развивать устойчивость к подобным манипуляциям у тех учеников, которые хоть в какой-то мере проявляют склонность к аналитическому мышлению. А для этого, получается, важнее изучать в школе не языки программирования, а языки разметки.


Впрочем, программирование тоже развивает наблюдательность в нужном направлении: любая программа состоит из «команд» и данных, из операторов и операндов, она постоянно напоминает нам об этой неоднородности кода — о материале и его «обработчиках». И существует, кстати, язык программирования, который одновременно является и языком разметки.


Правильность его выбора для уроков информатики подтвердила для меня, в частности, статья (опять же на Хабре) Изучи Postscript за пять минут. Сама статья не очень содержательная, но в ней есть две полезные ссылки на «уроки postscript».


Postscript за пять часов


За пять минут, конечно, не получится изучить Postscript даже у вас; тем более у школьников. Для людей, не работающих постоянно с обратной польской нотацией, пяти минут может не хватить даже на то, чтобы представить на языке Postscript выражение 3 - 2 * 7 — даже если перед глазами у вас список операторов и вы уже знаете, что «умножить» там выглядит как mul, а «отнять» — как sub. Ученикам требуется обычно минут 20, чтобы один из них решил эту задачу хотя бы с помощью дополнительного оператора neg.


На самом деле первые 25 — 50 минут уйдут у вас на попытки организовать отладку программ на Postscript — это место в учебных статьях почему-то обычно обходят молчанием. Отладчик (интерпретатор) у нас по сути только один — Ghostscript, его найти несложно. Но дальше будет вот что: вы наберёте в консоли линукса команду gs (gswin32c.exe для Windows) и очень быстро обнаружите, что выйти из этой среды почти так же «легко», как… из Vim'а. Впрочем, gs в этом плане дружелюбнее — там работает не только волшебное слово quit, но и Ctrl+c. И даже Ctrl+d.


Следующий этап: мы набираем в интерактивном режиме gs команду 3 14 sub, нажимаем Энтер, и… ничего не происходит. Потому что оператор sub забрал из стека два числа, посчитал разницу между ними и положил в стек обратно. И причём тут, казалось бы, экран?


Чтобы извлечь из стека в стандартный вывод последнее значение, нужно вводить специальную команду. Догадайтесь с трёх раз, какую: = (знак равенства). То есть полностью наша команда должна выглядеть так: 3 14 sub =.


Через пять минут «интерактивного» изучения операторов в среде Ghostscript вам станет скучно и захочется написать хотя бы небольшую программу, чтобы она и квадрат Малевича нарисовала, и числа перемножила заодно. С квадратами там всё стандартно. С числами сложнее. Вы напишете, например:


(3 - 2 * 7 = ) show

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


%%BoundingBox: 0 0 600 600 
/Times-Roman findfont 40 scalefont setfont 
100 500 moveto (3 - 2 * 7 = ) show 
showpage 

Вторую координату мы указали побольше — 500, потому что начало координат в ps находится внизу. Этот текст надо сохранить в файл, например, 1.ps. И тогда счастливые обладатели программы okular смогут увидеть результат своего программирования с помощью двойного щелчка по имени этого файла. Если okular не установлен, файл откроется в каком-нибудь другом просмотровщике или даже в Gimp'е. Или совсем не откроется — тогда установите всё-таки okular.


Или используйте ultima ratio:
 gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=png16m -r120 \
    -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sOutputFile=1.png 1.ps 


Мы вывели на печать (на экран) большими буквами надпись «3 — 2 * 7 =». Теперь в конце этого выражения нужно напечатать посчитанный результат. Для этого перед инструкцией showpage надо вставить строку:


3 2 7 mul sub 20 string cvs show 

В этой строке слева от числа 20 находятся собственно расчёты. Команда cvs преобразует числовой тип данных в строковый. В качестве второго аргумента этой команде нужна пустая строка фиксированной длины — мы создаём эту пустую строку командой 20 string. Теперь можно экспериментировать с арифметикой в ps, меняя в левой части строки числа и операторы. Только надо следить, чтобы результат не получался длиннее 20 символов.



Думаю, после такой встряски HTML покажется ученикам лёгким и приятным в изучении.


Стандарты и инструменты


И HTML, и LaTeX являются стандартами, но в повседневной жизни ученика, студента, преподавателя, программиста LaTeX не нужен — он, скорее, инструмент праздничный, используемый по особому случаю: для печати диплома, статьи в научном журнале. Каждый день же, прямо сейчас нам, людям, не работающим с трёхэтажными формулами, как воздух нужен HTML (хотя туда тоже можно вставлять формулы из LaTeX'а).


Потому что бумажных источников информации становится всё меньше; всё чаще мы читаем с экранов и пишем с помощью клавиатуры. Для уроков литературы нужно читать «Войну и мир». У многих ли дома лежат эти тома? Или, допустим, учитель обществознания нашёл интересную статью по экономике. Или сам написал. Что ему, распечатывать на всех учеников? Или диктовать в виде лекции?


Во всех случаях самым удобным стандартом будет HTML: фильтруем, чистим, выкладываем в локальную сеть школы (или делимся по email). К сожалению, именно что «будет»: сейчас это не так. Но я постараюсь научить основам разметки и учеников, и учителей.


Тут вовсе нет цели сделать из каждого профессионального верстальщика. Но научиться мыслить категориями компьютерной вёрстки просто необходимо каждому человеку, вовлечённому в учебный процесс и ежедневно имеющему дело с сотнями информации. Тогда и LibreOffice тоже станет нормальным стандартом — потому что после изучения HTML люди начнут видеть (и хотеть) не «большой и жирный шрифт», а Заголовок Раздела, и рассматривать курсив не в качестве украшения, а для смыслового выделения. Может быть.

Tags:
Hubs:
+9
Comments 23
Comments Comments 23

Articles