Добавить в избранное | Сделать стартовой страницей

Большая Linux библиотека для пользователей OS Linux и ПО для нее
Есть что сказать? Нужен совет? Посети наш форум.




Создание PDF документов с использованием DocBook.

Что такое DocBook?

DocBook [1] - приложение SGML, предназначенное для разметки документов, такое же, как HTML для разметки веб - документов. В отличие от HTML, DocBook не предоставляет информацию о формате документа. Поэтому документы DocBook должны быть преобразованы в другой формат для просмотра. Преобразование в другой формат осуществляют с помощью утилит, применяющих некоторый шаблон к документам DocBook.



 
Рисунок 1: Преобразование DocBook документа в формат PDF с использованием шаблона.

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

 

Пишем заметку

С помощью DocBook можно разметить два вида документов : заметки и книги. Из-за схожести в структуре этих документов, я буду использовать заметку. Перед написанием примера документа рассмотрим основы DocBook.

DocBook это SGML - приложение, такое же как HTML. Но существует и XML версия DocBook. XML - версия более строгая, но более легкая в понимании и изучении. Так как XML также является SGML - приложением, все программые средства SGML могут быть использованы. Основное различие между SGML и XML состоит в следующем (применимо для всех XML - приложений).

  • XML элементы должны быть всегда закрыты
  • XML элементы должны иметь правильную вложенность
Это означает, что вы не можете использовать
как в HTML, вы должны использовать

. Второе требование означает, что вы не можете использовать следующую конструкцию : click here, вы должны использовать правильную вложенность : click here.

Теперь, после рассмотрения этих деталей, мы можем приступить к разработке DocBook документа.

    
    
Writing DocBook articles This article describes how you can use DocBook to develop PDF documents and will cover tools you need to edit DocBook articles and tools to translate them to PDF documents. Egon Willighagen

Ничего сложного - мы начали заметку с заголовка, короткого резюме, даты написания и имени автора.

Далее добавляем разделы заметки, используя соответствующие элементы :

    
    
Writing DocBook articles ... the articles header ...
Introduction
... other sections ...

Мы добавили раздел Введение. Дополнительные элементы могут быть использованы для добавления разделов - Результаты, Выводы и т.д.

 

Добавление текста и другой информации

Весь текст заключатся в элементы para, подобные элементам p языка HTML :

    
Introduction DocBook is an SGML application developed to markup documents, just like HTML marks up webdocuments.

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

Добавление "примеров"

Примеры добавляются применением элемента example, как показано в следующем фрагменте кода :


  Perl program that converts an XML document into a HTML page.
  
    #!/usr/bin/perl -w
    use diagnostics;
    use strict;
    use XML::XSLT;

    my $XSLTparser = XML::XSLT->new();
    $XSLTparser->open_project ("file.xml", "stylesheet.xsl", "FILE", "FILE");
    $XSLTparser->process_project;
    $XSLTparser->print_result();    
  

Но примеры могут также содержать текст, изображения и др. информацию.



Добавление "списков"

Подобно языку HTML, DocBook использует списки. Списки обозначаются элементом itemizedlist, который состоит из одного или нескольких элементов listitem :


  
    an item
  
  
    another item
  
  
    and again an item
  

Обратите внимание, что текст заключен в элемент para. Текст всегда должен использоваться внутри этого элемента!

Списки могут быть упорядочены. Для этого необходимо использовать элемент orderlist вместо itemizedlist. Добавление числового параметра (например ) - устанавливает используемый.

Добавление изображений

Изображения добавляются следующим образом :






  
    If you were not using Lynx
    you could now see a picture.
  


Обратите внимание - кроме изображения используется текст. В самом деле я мог бы использовать и фильм. Утилита, которая будет использована для преобразования документа DocBook в формат PDF, сама подберет подходящий формат - возможно это будет изображение.

Также обратите внимание на разметку слова Lynx. Это особенность языков разметки - формат отделен от информации. Заметка рассказывает о товаре Lynx, для которого Lynx является названием. Применяемый шаблон содержит информацию о формате вывода элемента productname, например курсивом. В следующем разделе рассмотрим дополнительные возможности разметки слов.

Разметка слов

В предыдущем разделе было показано, что слова имеют свои элементы разметки. Рассмотрим некоторые из них :

    Элемент Описание
    abbrev Сокращение - неполное написание чего - либо.
    Пример:
    e.g. means for example.
    acronym Сложносокращенное слово.
    Пример:
    DSM (chemical company) means "De StaatsMijnen" (=The State Mines).
    email Адрес электронной почты.
    Пример:
    My email is [email protected]
    keyword Ключевое слово.
    Пример:
    In my humble opinion chemistry is very important.
Другие элементы доступны в пункте [2] раздела "Ссылки".

Теперь, после рассмотрения элементов DocBook, приступим к созданию PDF документа.

 

Преобразование документа в формат PDF

Документ DocBook можно преобразовать к другим форматам. Кроме PDF мы можем преобразовать к следующим форматам : веб, PostScript, Tex, RTF - который может быть прочитан такими редакторами как WordPerfect, Word, StarWriter и др. Но в этой заметке мы рассмотрим преобразование только в PDF формат.

Документы DocBook могут быть созданы с помощью любых текстовых редакторов, например Vi или Nedit. Но лучше использовать Emacs : Norman Walsh написал "Emacs major mode for docbook" [3], содержащий полезные дополнения : завершение имен элементов, вставка шаблонов.
Кроме того, могу предложить примеры, используемые в данной заметке.

Как было сказано раньше - нам необходим шаблон и программное средство, которое использует данный шаблон для преобразования DocBook документа в PDF формат. В действительности шаблон не преобразует DocBook документ в формат PDF, но создает TeX файл. Мы используем шаблон Norman Walsh's Modular DocBook Stylesheets, написанный на DSSSL.

Для использования шаблона DSSSL необходим редактор DSSSL. Я использую Jade, разработанный Джеймсом Кларком (поддержка продукта прекращена). Замена - OpenJade, но я его не использовал.

    Обратите внимание - программные пакеты (Modular Stylesheets, Jade и JadeTex) входят в состав дистрибутивов, использующих пакетную установку (RedHat, Suse, Corel, Debian)! Поэтому сначала посмотрите вашу инсталляционную программу, CD или веб сайт дистрибьютора.

Я использую Debian и Walsh's Modular Stylesheets у меня инсталлированы в /usr/lib/sgml/stylesheets/dsssl/docbook/nwalsh/print/ и используют параметр "-d" для Jade и "-t" для TeX расширения файла :

egonw@localhost> ls -al
total 3
-rw-r--r--    1 egonw    egonw        2887 Apr  8 22:06 docbook_article.xml
egonw@localhost> jade -t tex -d /usr/lib/sgml/stylesheets/dsssl/docbook/nwalsh/print/docbook.dsl docbook_article.xml
egonw@localhost> ls -al
total 21
-rw-r--r--    1 egonw    egonw        2887 Apr  8 22:06 docbook_article.xml
-rw-r--r--    1 egonw    egonw       17701 Apr  8 22:29 docbook_article.tex
Jade создает TeX файл. Этот файл можно преобразовать в PDF формат используя утилиту pdfjadetex, входящую в пакет JadeTeX:
egonw@localhost> ls -al
total 21
-rw-r--r--    1 egonw    egonw        2887 Apr  8 22:06 docbook_article.xml
-rw-r--r--    1 egonw    egonw       17701 Apr  8 22:29 docbook_article.tex
egonw@localhost> pdfjadetex docbook_article.tex
Получаем файлdocbook_article.pdf. Обратите внимание на добавление множества служебной информации - заголовок в начале каждой страницы, использование различных шрифтов. В начале изучения DocBook я тратил много времени на составление подходящих сочетаний. Эта заметка показывает только одно из таких сочетаний.

 

Заключение

Возможности языка DocBook XML велики. Например преобразование в другие форматы. Эта заметка представляет краткое вступление. Вопросы можно задать на странице отзывов для данной статьи. Дополнительная информация в ссылках [8] и [9]. Обратите внимание, что последний пункт в разделе "Ссылки" в формате DocBook!

Остались без обсуждения следующие возможности DocBook :

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

 

Ссылки

1. DocBook website
2. Quick Reference: DocBook Elements
3. Emacs major mode for DocBook
4. <a href="http://nwalsh.com/docbook/dsssl/index.html">The Modular DocBook Stylesheets
5. Jade
6. OpenJade
7. JadeTeX
8. Norman Walsh's DocBook site
9. DocBook: The Definate Guide on SGML variant

Обсудить данную тему на нашем форуме "Все о Linux"