Всё для технического документирования
+7 (495) 001-40-42
Разработка технической документации
Курсы для технических писателей
Программное обеспечение

Структурированное писательство: работа в домене носителя

23.09.2015

Статья входит в цикл «Понимание и применение структурированного писательства».

00Марк Бейкер продолжает свою постоянную серию по структурированному писательству с глубоким погружением в тему о том, какие преимущества в структуре даёт писательство в домене носителя для представления абстрактных концептов в конкретных формах. Узнайте больше в предыдущих частях, в которых производится попытка определить структурированное писательство, а также описать три домена структуры контента.


Домен носителя — это домен структурированного писательства, в котором структуры имеют отношение к носителю, в котором отображается контент. Такой контент часто считается «неструктурированным», но на самом деле это означает «неструктурированный так, как это в настоящий момент нужно мне». Фактически любой контент имеет структуру, и мы действительно можем найти шаблоны и техники для всех форм структурированного писательства в домене носителя. Это делает этот домен хорошим предметом для изучения основ структурированного писательства.

 

01

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

Мы не так часто физически пишем в наши дни. Большей частью мы взаимодействуем с компьютерами, которые затем управляют машинами, взаимодействующими с физическим носителем в виде экранов, бумаги или поверхности для гравировки. Самое близкое к использованию ручки и бумаги в компьютерном мире – открыть программу для рисования, выбрать ручку в инструментах и с помощью мыши или пера написать текст. Она записывает текст в виде матрицы точек. Затем вы можете распечатать эти точки на бумаге. Эти узоры из точек являются текстовыми символами только в том смысле, что человеческий глаз может распознать эти узоры как символы. Компьютер же не имеет представления о том, что это символы.

 

02

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

Чтобы работать более эффективно, вы должны отойти от точек и начать работать с программой, которая записывает символы в виде символов. Вы должны обратиться к текстовому редактору, который записывает символы как символы, но текстовый редактор не сохраняет какую-либо информацию по форматированию (если вы не делаете разметку — но мы здесь забегаем вперёд). В большинстве случаев для целей публикации простой текст не подходит. Нам необходимо иметь возможность форматировать документ.

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

 

03

 

Окружность как объект, отображаемый в векторной графической программе (Inkscape), слева, против окружности в виде набора точек в растровой графической программе (Paint), справа

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

Чтобы дать вам несколько идей, как можно представить окружность в виде объекта, ниже приведён отрывок программного кода на Java для создания окружности:

Circle circle = new Circle();

circle.setCenterX(100.0f);

circle.setCenterY(100.0f);

circle.setRadius(50.0f);

Этот код создаёт новый объект окружности и определяет три переменные, которые потребуются для рисования простой окружности, координаты X и Y для центра окружности, а также радиус. (Объект на самом деле требует больше полей, таких как ширина линии, цвет и заливка, но я упростил пример из соображений размера и прозрачности).

Когда компьютер отображает или печатает векторный графический файл, алгоритм преобразования переводит эти объекты в матрицу точек на текущем носителе, используя больше точек для более высокого разрешения носителя, и, возможно, заменяет серыми точками цвета при печати на чёрно-белом устройстве.

Один из способов, с помощью которого это можно сделать, — использование PostScript, который работает, перемещая виртуальную ручку по виртуальной поверхности, записывая точки по мере продвижения. Так что описание объекта окружности в терминах расположения и радиуса переводится в набор инструкций для движения этой виртуальной ручки:

100 100 50 0 360 arc closepath

stroke

Это означает следующее: «нарисуй дугу, центр которой расположен в координатах 100, 100 и радиус которой 50, начиная с градуса 0 и заканчивая градусом 360». Этот алгоритм проводит виртуальную ручку по виртуальной бумаге точно так же, как автор, как мы первоначально описали, проводит настоящей ручкой по настоящей бумаге.

Если представить окружность в качестве объекта, создающего абстракцию «окружность» в домене носителя, этот кусок PostScript-кода берёт эту абстракцию (окружность как набор координат) и (с помощью низкоуровневого графического драйвера) делает её снова конкретной (точки на носителе).

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

Мы увидим этот узор, как видим структурированное писательство, разделённое на три домена. Вместо того, чтобы хранить изображение в документе, предназначенном для печати, компьютер сохраняет абстракцию документа, который содержит сырой текст совместно (или, в некоторых случаях, заменяя) с дополнительными частями информации, обычно называемыми метаданными. Вы можете затем использовать эти метаданные, чтобы манипулировать контентом любым необходимым образом, а также использовать алгоритмы для конвертации его обратно в конкретное представление домена носителя, которое может быть отображено читателям.

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

Текстовый объект — это прямоугольная область, содержащая символы. У него множество свойств, таких как отступы, фон и главные цвета, строка текста и шрифт, размер и толщина, используемые для отображения этого текста, как в этом примере из InkScape:

 

04

Текстовый объект в векторной графической программе с показанными свойствами объекта

Абстрагирование информации о шрифте при выводе информации

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

Символы (технически, «глифы»), формирующие шрифт, хранятся отдельно в файлах шрифтов. Файлы шрифтов содержат набор форм объектов, которые определяют каждый глиф, вместе с метаданными, такими как название шрифта и название каждого глифа. Чтобы непосредственно отобразить текстовый блок на экране, графическая программа (или же API графической системы, которой он делегирует эту задачу) комбинирует информацию из файла шрифта с информацией из текстового объекта, сравнивая метаданные, чтобы найти правильный шрифт и символ, а затем нарисовать соответствующий глиф на текущем носителе.

 

05

Текстовый объект векторной графики выносит формы буквы в отдельный файл шрифта

Мы видим этот процесс снова и снова в структурированном писательстве. Чтобы упростить объекты, создаваемые для хранения контента, мы берём часть информации, необходимой для финального преобразования, например, шрифт, и переносим её в отдельный файл. Вынося вовне информацию, являющуюся константой для данного применения (форма заглавной F такая же, как все заглавные F для текста, написанного данным шрифтом), мы упрощаем формат информации, которую готовим, и сохраняем представление нижнего уровня более единообразным.

Добавление большего структурирования контенту означает добавление в него большего количества метаданных. Но если мы будем хранить дополнительные метаданные, это очень быстро переполнит контент. Так что хотим мы этого или нет, мы выделяем некоторые метаданные в отдельные файлы и создаём правила для вставления их обратно, когда приходит время публикации контента.

Будь то «заглавная F всегда будет иметь такую форму» или «список ингредиентов всегда будет состоять из названия ингредиента, выровненного по левому краю, а его количество по правому», фильтрация этих неизменных правил в отдельный файл является ключевой частью структурирования контента.

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

Использование ограничений для повышения эффективности

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

Векторной графической программе ничего не известно о домене документа. Она работает в точности в домене носителя и запросто позволяет вам располагать текстовые блоки везде, где пожелаете. Это даёт вам почти безграничную свободу, но также заставляет делать много лишней работы, если вы хотите создать типичный документ, который в простейшем случае представляет из себя один длинный текстовый поток с несколькими заголовками и проскакивающей иногда графикой.

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

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

Эти ограничения — не без негативных последствий. Вы всегда отказываетесь от чего-то, когда налагаете ограничение. Эффекты разметки на некоторых страницах невозможно или трудно достичь в Word или FrameMaker, потому что вы отказываетесь от некоторой свободы векторной графической программы. (Вы также отказываетесь от некоторой свободы в движении от растра к векторной графике, и поэтому существует фото-редактирование, которое требует работы с отдельными пикселями, которое производится в растровом виде вместо векторного формата). Когда вы накладываете на контент ограничения, вы должны понимать компромисс, которого достигаете, и какова его цена.

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

Включение домена носителя

Предоставление автору способности работать в домене носителя было двигателем революции вёрстки печатных изданий на компьютере. Веками авторы работали непосредственно в домене носителя, используя ручку и чернила, чтобы выписывать слова и картинки на бумаге или папирусе. При появлении печатного пресса, однако, авторы перестали работать непосредственно в домене носителя. Авторы всё ещё размещали напрямую чернила на бумаге, сначала с помощью ручки, затем пишущей машинки, но они больше не создавали конечную визуальную форму контента. Это делалось позже наборщиком.

Чтобы рассказать наборщику о том, как создать конечную визуальную форму, разработчики документа добавляли в авторскую рукопись дополнительные инструкции (метаданные). Разработчики делали это с помощью отметок для наборщиков, и процесс был назван «разметкой» документа. Мы всё ещё используем «разметку» для описания того, как делается структурированное писательство сегодня. Буква M в XML отвечает за разметку (Markup). (Но современное структурированное писательство не всегда имеет такое чёткое разделение на текст и разметку, как предполагает такое использование, и мы это увидим позже).

Писатель готовит рукопись для наборщика, работая в домене документа, указывая основные структуры документа, такие как абзацы, списки и заголовки, без каких либо указаний о том, как они должны выглядеть на печати. Разработчик затем пишет набор инструкций для применения форматирования к этим структурам — алгоритм форматирования. Затем наборщик запускает этот алгоритм, настраивая шрифт, который печатник затем использует для конечного вывода на печать. (Здесь та же самая модель — два потока объектов, соединяемых алгоритмом, который порождает новый поток объектов).

 

06

Пример разметки для наборщика на физической рукописи

Мы делаем то же самое сегодня, когда создаём HTML-страницу и указываем таблицу стилей CSS для предоставления инструкций по форматированию. Браузер запускает эти инструкции для преобразования контента для отображения на экране или бумаге.

На самом деле мы здесь забегаем вперёд. Лучшей аналогией старому стилю разметки для наборщиков — HTML-страница со встроенными стилями

<p style=»{font-family: serif; font-weight: bold; font-size: 12pt}»>

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

Теоретически разработчик документа мог добавлять эти встроенные стили после того, как автор напишет исходный HTML, но разделение этих задач не входило в замысел настольной публикации. Они стремились скомбинировать работу дизайнера и писателя воедино, эффективно переместив автора от работы в домене документа к работе в домене носителя. Это просто означает, что вас перенесли с работы неструктурированным методом в домене носителя на работу структурированным методом в домене носителя.

Набор объектов домена документа в типичном текстовом редакторе настолько мал, что даже не видит отличий между заголовком и элементом списка. Они оба всего лишь абзацы с различными применёнными стилями. Их разделяет не тип объекта, а применённый стиль. (Использование слова «абзац» в этих программах не имеет ничего общего с его значением при изучении состава текста. Здесь лучше подойдёт слово «блок»).

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

Этот подход «отчасти объект/отчасти нет» очень точно отражает то, как многие авторы думают о том, что они делают, когда используют эти программы. Иногда они думают о создании объектов домена документа, а иногда просто о форматировании. Они, конечно, не проводят аналитических различий между доменом носителя и доменом документа, но определённо иногда думают «создать абзац», а иногда «вставить пустую строку». Иногда они думают о создании нумерованного списка. Иногда они просто набирают номер в начале строки и ожидают, что приложение это правильно отформатирует.

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

Но тогда как слишком туманное понимание этого может сделать каждодневные задачи писателя менее осмысленными, у этого также могут быть нежелательные последствия при усердной работе над более длинными документами, или с документами большего числа типов, или с более сложными сценариями публикации. Сложности использования Word при работе с нумерацией списка хорошо задокументированы. FrameMaker лучше работает с такими вещами, но работе с ним труднее научиться, потому что его лучшая надёжность в обращении с такими вещами происходит ценой того, что писатель вынужден больше думать о том, какой объект он создаёт.

Поэтому текстовые редакторы склонны к метанию между доменами документа и носителя, когда авторы думают частично в терминах домена документа и частично в терминах домена носителя, и приложения создают и сохраняют объекты и структуры из обоих доменов. Во многих случаях эти приложения предлагают и метод домена документа, и метод домена носителя, чтобы каким-либо образом облегчить мыслительный процесс автора, но в результате этого появляются файлы, которые часто не обеспечивают должное качество процессинга на нижнем уровне, или им требуется серьёзная правка при основательных изменениях стиля или если требуется публикация на новый носитель.

Единственный способ решить эти проблемы аккуратно — вынести авторов, равно как и файлы, которые они создают, из домена носителя полностью. Следующая остановка на этом пути — домен документа.

Источник: Structured Writing: Writing in the Media Domain

Тэги: , ,

< Вернуться к списку публикаций

Облако тегов