Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Вид документа в разных форматах.

Разработка конвертора из текстового формата nroff в гипертекстовый формат HTML

Задание.

Разработать транслятор документов из формата nroff в формат HTML.

1. Транслятор должен быть реализован средствами программ lex и yacc.

2. Трансляции подлежит обособленный документ. (Один файл –один документ).

3. В качестве тестовых примеров использовать документы из руководства ОС UNIX (man-файлы).

4. В качестве среду разработки использовать ОС UNIX.

 

Введение.

В настоящее время все большее распространение находит использование для доступа к RISC‑серверам, на которых работают наиболее мощные системы САПР, вместо X-терминалов более дешевых и при этом более универсальных персональных компьютеров.

Для связи между персональными компьютерами и RISC‑серверам используются программы, эмулирующие на персональном компьютере работу X-терминалов. При этом на персональном компьютере, работающем под управлением Windows, запускается UNIX‑сессия с графическим интерфейсом пользователя (GUI). В качестве графического интерфейса может использоваться как любой из доступных на сервере графический интерфейс, так и интерфейс Windows.

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

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

Документация в системе UNIX представлена в виде так называемых ‘manual pages’. Она просматривается с помощью команды системы UNIX ‘man’. При этом вызывается файл, содержащий требуемую документацию. Файлы, используемые командой ‘man’ написаны в текстовом формате nroff, являющимся стандартным форматом текста системы UNIX. Для чтения этих файлов также можно применять команду UNIX ‘nroff’.

Для чтения файлов, записанных в формате ‘nroff’, можно установить на персональном компьютере какую-либо из UNIX‑подобных систем и, скопировав документацию на персональный компьютер, читать ее с помощью средств системы. Но при этом теряется одно из важнейших преимуществ использования персонального компьютера – его универсальность, так как станет либо совершенно невозможно использование программ, работающих под управлением Windows (в случае полной замены операционной системы), либо для их использования потребуется перезагрузка компьютера (в случае установки двух операционных систем на одном компьютере).

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

· Тексты, записанные в выбранном формате, должны быть доступны для чтения, как минимум, на персональном компьютере под управлением Windows. Желательно также, чтобы эти тексты можно было просматривать и на сервере под управлением UNIX.

· Тексты должны сохранять форматирование, имеющееся в документах ‘manual pages’.

Представляется, что оптимальным будет выбор формата HTML. Этот формат просматривается с помощью программ, версии которых работают как под управлением Windows, так и под управлением UNIX. Формат HTML поддерживает широкие возможности форматирования. Кроме того, этот формат является стандартным форматом для документов во всемирной системе Internet, а, как уже говорилось, проблема, вызвавшая необходимость переноса части задач с сервера на персональный компьютер, приобретает наибольшую остроту именно при связи между сервером и рабочим местом пользователя посредством Internet. Используя формат HTML, можно сделать документацию, преобразованную из ‘manual pages’ UNIX, общедоступной, поместив ее в один из узлов сети Internet. И последнее – этот формат является открытым, в отличие от большинства форматов текста на персональных компьютерах под управлением Windows, таких как, например, формат тестового редактора Word, что делает его удобным для использования, так как тексты в открытых форматах легко создавать и редактировать при минимальной вероятности возникновения ошибки.

Существует несколько путей решения проблемы. В настоящее время созданы программы-трансляторы из формата nroff в формат HTML. Все они имеют свои преимущества и недостатки.

Рассмотрим несколько существующих программ.

1.Программа "nroff2HTML" (автор - Р. Ричи).

Программа написана на языке "C", работает под управлением ОС "UNIX". При конвертации вставляет в текст конечного файла обязательные теги формата HTML (такие, как <HTML></html>, <HEAD></head>, <BODY></body>) и затем копирует предварительно отформатированный с помощью программы nroff текст, заключив его в пару тэгов <PRE></pre>.

2. Программа "man2html", входящая в GUI * "Gnome".

Программа написана на языке "C", работает под управлением ОС "Linux", тесно интегрирована с GUI (графический пользовательский интерфейс) "GNOME".

Данная программа работает не с реальными файлами, а выступает как фильтр при выводе текста с помощью программы man на экран компьютера, перенаправляя вывод в окно HTML-броузера и снабжая его при этом всеми командами, необходимыми для форматирования. Полученный на экране текст выглядит наилучшим образом, т.к. в нем сохраняются все необходимые виды форматирования и поддерживаются перекрестные ссылки. Но данная программа не может работать без пакета "GNOME", для работы которого, в свою очередь, необходима ОС "Linux".

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

При создании проекта в первую очередь следует решить второй вопрос, и, затем, выбрав принципы реализации проекта, приступить к созданию программы, способной адекватно обработать, как минимум, весь объем стандартных команд и операций формата nroff.

Согласно условиям технического задания программа должна функционировать в вычислительных системах под управлением ОС "Unix" и совместимых с ней ("Linux"). Проблема состоит в том, что исполняемые файлы ОС "UNIX" могут быть неработоспособны в среде "Linux". В то же время, многие из UNIX-подобных систем поставляются пользователю в виде текстов исходных файлов (исходников), предназначенных для компилирования. Так же и в данном случае можно передавать программу в виде исходников, снабженных программой компиляции. Это, с одной стороны, повысит переносимость программы, а с другой - позволит вносить достаточно опытному пользователю необходимые поправки и корректировки, расширяя возможности транслятора в соответствии с потребностями пользователя. При этом необходимым условием становится написание программы при помощи таких средств, которые присутствовали бы в любой UNIX-подобной ОС.

Первым очевидным элементом, присутствующим во всех таких ОС, является компилятор языка "С", на котором, собственно, и написана ОС "UNIX". Но язык "С" является достаточно сложным языком и не все пользователи знакомы с ним. В то же время, в ОС "UNIX" существуют другие средства написания программ: это генераторы программ LEX и YACC. Описание их команд настолько просто и логично, что позволяет вносить коррективы в существующую программу не имея специальной подготовки, и, возможно, даже не будучи знакомым с описанием этих средств, имея только текст исходной программы.

 

Nroff.

Nroff используется для форматирования текста в операционной системе UNIX при выводе на экран монитора или на принтер. Имеет достаточно простые команды, которые и будут дальше рассмотрены.

Команды для управления шрифтом:

.bd - bold font

.ft имя_шрифта - устанавливает шрифт

.ps n - устанавливает размер символа

Команды управления страницами:

.bp - начать новую страницу

.pl - установить длину страницы

.pn - установить номер страницы

.rt - вертикальный возврат для столбцов

Команды управления текстом:

.ad l (r,c,b,n) - выравнивание текста влево (вправо, по центру, по ширине, без выравнивания).

.br - следующая строка

.ce - центрирование

.fi - заполнение

.na - нет управления текстом (no adjust)

.nf - нет заполнения (no fill)

Вертикальные пропуски:

.ls - пропуск строки

.sp - пространство

<blank line> - новая строка + пропуск

Управление строкой:

.in - отступ

.ll - длина строки

.ti - временный отступ

Уже установленные переменные:

% - номер страницы

dw - день недели (1-7)

dy - день месяца

mo - месяц

yr - год

ln - текущая строка

.c - текущая строка от ввода

.f - текущий шрифт

.i - текущий отступ

.j - текущая регулировка (adjustment) текста

.l - длина строки

Использование числовых переменных:

.nr R v [i] - присвоить числовой переменной R значение v с необязательным инкрементом i

.af R c - установить формат числовой переменной (1,01,i,I,a,A)

\nx -использовать регистр x

\n(xy - использовать регистр xy – две буквы

\n+x - добавить инкремент, а затем использовать

\n-(xy - вычесть инкремент, а затем использовать

Использование строковых переменных:

.ds R str - присвоить переменной R содержимое str

.as R str - дописать str в конец строковой переменной R

\*x - использовать регистр x

\*(xy - использовать регистр xy – две буквы

\w’string’ - размер строки

Комментарии:

\” комментарий

Макросы:

.de xx \” –начало определения макроса

Today is \ \$1 the \ \$2.

.. \” –конец определения макроса

Использование макроса:

.xx Monday 14th

Получится: Today is Monday the 14th

 

HTML.

Простота документов заключается в следующем: текст, который нужно обработать или применить к нему какое-то действие, находится между так называемыми тэгами, соответственно открывающим и закрывающим. Общий вид тэгов: <TAG_NAME> </tag_name>. Приведу основные тэги языка HTML. Поскольку обычно HTML-документ используется в качестве Web-страницы, то в дальнейшем вместо термина HTML-документ будет использоваться термин Web-страница.

<COMMENT> </comment> - текст комментария. Существует ограничение – внутри комментария не должны располагаться другие элементы. Текст комментария не выводится браузером на экран. Также комментарий можно выделять следующим образом <!-- comment -->.

<HTML> </html> - отличительный признак Web-страница. Имеет редко используемые атрибуты version, lang, dir. Этот тэг допускает вложение элементов HEAD, BODY, PLAINTEXT. Конечным тэгом </html> заканчиваются все гипертекстовые документы.

<HEAD> </head> - область заголовка Web-страницы, служит для формирования общей структуры документа. Этот элемент может иметь атрибуты lang, dir и допускает вложения элементов TITLE, ISINDEX, BASE, META, LINK, NEXTID.

<TITLE> </title> - элемент для размещения заголовка Web-страницы. Строка текста, расположенная внутри, отображается не в документе, а в заголовке окна броузера.

<STYLE> </style> - описание стиля некоторых элементов Web-страницы. Например, элемент <STYLE> H2 {font-family: Arial;} </style> определяет стиль шрифта в элементе H2.

<BODY> </body> - заключает в себе гипертекст, который собственно определяет Web-страницу, отображаемую броузером. Внутри этого элемента можно использовать все элементы, предназначенные для дизайна Web-страницы. Внутри стартового тэга можно располагать ряд атрибутов, обеспечивающих установки для всей страницы целиком. Атрибуты:

background=”Путь к файлу фона”

bgcolor=”#RRGGBB” – здесь три 2-разрядных 16-ричных числа, которые определяют интенсивность красного, зеленого и синего цветов.

text=”#RRGGBB” – цвет текста страницы

link=”#RRGGBB” – цвет гиперссылки

vlink=”#RRGGBB” – цвет использованных гиперссылок

alink=”#RRGGBB” – цвет последней выбранной пользователем ссылки

<H1> </h1> - элемент заголовка. Существует 6 уровней заголовков, которые обозначаются H1..H6. Заголовок уровня 1 – самый крупный, уровень 6 – самый маленький. Для этого элемента можно использовать атрибут, задающий выравнивание влево, по центру или вправо:

align=”left” (“center”, “right”).

<HR> - горизонтальная линия. Этот элемент не имеет конечного тэга, но допускает ряд атрибутов:

align=”left” (“center”, “right”, “justify”) – выравнивание влево, по центру, вправо, по ширине.

size=толщина в пикселях – толщина линии

в пикселях

в процентах%

color=”Цвет”

Варьируя параметры длины и толщины можно представлять линию в виде прямоугольника.

<A> </a> - гиперссылки. Частный случай – шаблон для создания меток: <A name=”Метка”></a>

 

<BASE> - элемент для создания базового адреса (UR) для ссылок.

 

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

<P> </p> - элемент абзаца (paragraph). В принципе позволяет использовать только начальный тэг, так как следующий элемент Р обозначает конец предыдущего и начало следующего абзаца. Вместе с этим элементом используются атрибуты:

align=”left” (“center”, “right”)

<BR> - элемент, обеспечивающий принудительный переход на новую строку. Имеет только стартовый тэг. Строка заканчивается в месте его размещения.

<NOBR> </nobr> - элемент противоположный предыдущему. Текст, заключенный между его тэгами, будет выведен в одну строку. Если строка будет слишком длинна придется использовать горизонтальную полосу прокрутки броузера.

<PRE> </pre> - элемент для обозначения текста, отформатированного заранее (preformatted).

<BLOCKQUOTE> </blockquote> - обозначение цитаты. Этот элемент требует наличия конечного тэга. Текст не претерпевает никаких изменений, но абзац располагается с отступом. В настоящее время существует сокращенное написание этого элемента: BQ.

<CENTER> </center> - элемент для центрирования текста, а точнее любого содержимого. Принято, когда это возможно использовать вместо этого элемента атрибут align=”center”

<DIV> </div> - элемент, похожий на предыдущий, позволяет выравнивать содержимое по левому, правому краю или по центру. Для этого стартовый тэг должен содержать атрибут:

align=”left” (“center”, “right”)

<B> </b> - выделение текста полужирным шрифтом.

<BIG> </big> - увеличенный размер шрифта

<SMALL> </small> - уменьшенный размер шрифта

<I> </i> - выделение текста курсивом

<EM> </em> и <DFN> </dfn> - элементы, обозначающие выразительность (emphasis) фрагмента текста и определение чего-либо (definition). Оба элемента аналогичны по своему действию элементу I, то есть в большинстве случаев позволяют выделить текст курсивом. Они имеют смысл, когда необходимо одинаково выделить фрагменты текста в разных частях документа.

<TT> </tt> - элемент, обозначающий текст телетайпа (teletype).

<STRIKE> </strike> - элемент, создающий перечеркнутое начертание текста. В настоящее время его заменяют более простым <S> </s>.

<U> </u> - подчеркнутое начертание текста.

<STRONG> </strong> - элемент, отвечающий за выделение текста. Обычно его применение равносильно использование элемента для выделения полужирным <B>.

<SUB> </sub> - элемент, создающий эффект нижнего индекса (subscript).

<SUP> </sup> - элемент, создающий эффект верхнего индекса (superscript).

<PLAINTEXT> </plaintext> - элемент, предназначенный для создания текста с конструкциями HTML, которые должны восприниматься именно как текст, а не как команды для броузера. Все тэги, заключенные в этот элемент, будут восприниматься только как произвольные символы.

<CODE> </code>, <SAMP> </samp> и <VAR> </var> - элементы, предназначенные для вывода фрагментов программ. CODE используется для форматирования текста программы. SAMP предполагается задействовать при иллюстрации примеров (sample) вывода данных на экран. VAR был создан для выделения переменных (variables).

<KBD> </kbd> - этот элемент предназначен для указания текста, который пользователь должен ввести с клавиатуры (keyboard).

<CITE> </cite> - предполагается, что этот элемент может быть использован для форматирования цитат и ссылок в обычном понимании этого слова. Текст, расположенный внутри него, выводится по умолчанию курсивом.

<ADDRESS> </address> - подобно предыдущему элементу, этот элемент отличается только предусмотренным содержанием.

<BASEFONT> - элемент, определяющий базовый (основной) размер шрифта. Внутри элемента необходимо указать атрибут:

size=Базовый размер шрифта – его величина может лежать в предела от 1 до 7. По умолчанию используется величина 3. Установка, выполняемая этим элементом, имеет значение для элемента FONT, который позволяет задавать относительный размер шрифта.

<FONT> </font> - определение типа, размера и цвета шрифта. Все эти характеристики определяются с помощью соответствующих атрибутов. Например, абсолютный размер шрифта задается с помощью атрибута:

size=абсолютный размер шрифта – этот атрибут может принимать значение от 1 до 7.

Также размер шрифта может задаваться относительно базового:

size=+число (-число)

Атрибут цвета:

color=”Цвет”

Тип шрифта:

face=”название шрифта”.

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

 

Вид документа в разных форматах.

Для наглядности приведу пример текстового документа с различными приемами форматирования текста, а затем представлю его в обоих рассматриваемых форматах (nroff и HTML).

Результирующий текст (тот, который мы хотим видеть на экране):

Это пример текстового документа

Здесь показаны некоторые возможности форматирования текста

Пропуск строки

Работа с расположением текста:

Выровнять по левому краю

Выровнять по центру

Выровнять по правому краю

Есть также команды, позволяющие работать со шрифтами:

Обычный шрифт

Другой (вызванный) шрифт

Подчеркнутый текст

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...