Модели представления внешнего вида документа Размещение информации
Существует несколько способов по представлению информации пользователя относительно внешнего вида документа. Традиционно информация по требуемому формату документа помещается непосредственно в его текст и при этом начало ее вхождения, как правило, выделяется каким-нибудь необычным кодовым символом. Когда в тексте встречается такой специальный символ и за ним располагается определенным образом представленная характеристика внешнего вида документа, это означает, что следующий за ее описанием текст должен соответствующим образом видоизменяться до той его позиции, в которой встречается кодовый символ, отменяющий или заменяющий данную характеристику. Неудивительно, что управление форматом, выполняемое подобным образом, делает текст документа трудночитаемым и работать с ним становится крайне неудобно. Кроме того, в редакторах, в которых применяется данный способ для минимизации «искажения» основного текста, наблюдается тенденция использования очень коротких и практически необъяснимых определений форматных характеристик, что приводит к многочисленным ошибкам в работе и усложняет процесс обучения.
Альтернативная модель представления информации о формате в тексте документа основана на указании свойств или характеристик обычных текстовых объектов документа — символов, абзацев, страниц и т. д. Так, свойствами единичного символа могут быть его собственный абзац, размеры и плотность изображения, позиция символа по отношению к основной строке и т. д. Абзац можно охарактеризовать, например, указывая, должна ли быть в нем произведена разрядка текста, следует ли выровнять текст по правому полю и насколько допустимы нарушения границ поля. Работая с такой моделью, пользователь производит изменение в формате, отбирая текст, нуждающийся в форматировании, и изменяя присущие ему свойства с помощью экранной формы под названием «Ведомость свойств», охватывающей все допустимые характеристики (для изменения наиболее общих свойств можно использовать специализированные команды в сокращенном виде).
Существует также модель представления форматной информации, занимающая среднее положение между двумя предыдущими вариантами. В этом случае пользователь вставляет в текст непечатаемый символ, указывающий на определенную информацию о формате. Такой знак не часто попадается на глаза при чтении текста (и даже может быть скрыт при демонстрации последнего), и при этом он может заключать в себе свойства, не характерные для обычных символов (например, информацию о формате страниц). Для представления разнообразных аспектов информации о формате может быть использовано несколько кодовых символов, однако необходимо, чтобы их внешний вид указывал пользователю на их специальное назначение. Это упростит задачу пользователя по выделению в тексте символов, характеризующих различные типы форматирования, и определению им в документе конкретных символов, которые некоторым образом воздействуют на его форматирование.
Решение вопроса о том, какую модель следует выбрать в конкретной ситуации, в большой степени зависит от возможностей аппаратной части. «Внутритекстовое» кодирование информации является необходимым в тех случаях, когда нет возможности вводить в текст специальные символы для описания его форматных характеристик, а также отсутствуют эффективные методы реализации нужных свойств текстовых построений и отображения результатов их воздействия на формат. Высокоуровневые модели представления текста
Дополнительные аспекты форматирования возникают в связи с рассмотрением вопроса о том, каким образом следует объединять те части текста, которые должны быть отформатированы одинаково. Один из методов управления таким форматированием сводится к тому, чтобы позволить пользователю объединять по нескольку установочных параметров форматирования вместе под одним именем и затем применять такую группу параметров одновременно. Расширение этого принципа состоит в том, чтобы система запоминала имя группы параметров и всякий раз по запросу пользователя могла воспроизводить имя группы, а не приписываемые ей параметры форматирования. В таком случае система может также позволить пользователю некоторым образом изменить воздействие, приписываемое всем частям текста, определяемым данным именем, и все они будут заново автоматически отформатированы. Использование такого механизма иногда называют стилевым форматированием. Например, определение «Заголовок уровня А» для одной публика - иии может характеризоваться как «по центру, шрифт полужирный, 12 пунктов», а для другой — «без разрядки, шрифт полужирный, 10 пунктов». Используя механизм стилевого форматирования, пользователю необходимо только определить новый стиль форматирования документа для каждой из публикаций.
Второй аспект высокоуровневого форматирования связан с предъявлением к системе требования, чтобы она допускала при задании одной форматирующей команды возможность выполнения нескольких последовательных действий. Так, если бы пользователь выбрал стиль делового письма, то по одной команде можно было бы разместить первый абзац («дату») ближе к правому краю страницы, следующий абзац («Адрес получателя») — ближе к левому и третий абзац («Приветствие») — писать без красной строки, которая обычно характеризует начало абзаца.
Способность системы к обеспечению выполнения этих высокоуровневых операций форматирования расширяет ее возможности, но и усложняет ее. Очевидно, что при решении простых задач вполне можно обойтись без таких операций. Если же они применяются, пользователь должен уметь вызывать их без особых трудностей даже в том случае, когда он не знаком с деталями того, как определяются стили. Процесс определения стиля может потребовать от пользователя больше времени и знаний, чем простое обращение к нему, что зависит от уровня сложности конкретной задачи, так как определение стиля выполняется пользователем реже, чем последующие обращения к нему. Но так как пользователи, вероятно, более склонны работать с системой в роли художников-графиков, которых меньше всего интересуют тайны компьютерного искусства, требование простоты использования системы по-прежнему остается крайне важным. Одной из первых систем форматирования, разработанной для решения подобных задач, является система Scribe [36].
Тип используемого командного языка
При рассмотрении проблемы, связанной с форматированием текста, одним из основных вопросов является использование командного языка, который может быть либо дескриптивным, либо процедурным. Многие характеристики форматирования могут быть определены и тем и другим способом, например с помощью описания «Эта часть текста должна быть набрана полужирным шрифтом» или посредством применения двух процедур («Войти в режим печатания полужирным шрифтом» и «Выйти из режима печатания полужирным шрифтом»). Различия в использовании этих двух типов языка проявляются сильнее по мере дальнейшего усложнения спецификации форматных характеристик. Например, если требуется определить, что при построении документа следует избегать печатания первой строки абзаца в самом конце страницы, дескриптивная система может установить требуемое нижнее поле страницы и допустимое минимальное количество строк, начинающих новый абзац на странице, и оставляет для системы подсчет того, следует ли данный абзац начать печатать на текущей странице или же перенести его на следующую. При использовании же процедурной спецификации она может потребовать от системы информации о том, сколько строк данной страницы будет занято текстом предыдущего абзаца, оценить число оставшихся свободных строк до установленного нижнего печатного края страницы и затем в зависимости от полученных результатов может дать системе указание перейти для печати на следующую страницу.
В общем случае дескриптивные языки избавляют пользователя от утомительной программистской работы и передают ее системе, т. е. пользователь описывает желаемый результат, а уже задачей системы является определение того, каким образом его можно достичь. При этом, однако, эффективность работы пользователя полностью зависит от возможностей системы, предусмотренных при ее создании. Несмотря на то что применение процедурного языка может потребовать от пользователя подробного изучения способов выполнения различных заданий, даже не относящихся непосредственно к поставленной задаче, при постоянном использовании именно он обеспечивает большую гибкость в работе системы. По результатам проведенных экспериментов нельзя сказать, какой из рассмотренных типов языка является наиболее предпочтительным, однако очевидно, что хотя многие пользователи и испытывают определенные трудности при программировании, с достаточно сложными ситуациями они справляются намного эффективнее, когда работают с языками процедурного типа, а не с дескриптивными языками, в которых им словесно приходится определять примерно такое же количество форматных характеристик, как и в процедурном языке [37, 44].