![[Top bar]](../../common/images/Topbar-en.gif)
![[Bottom bar]](../../common/images/Bottombar-en.gif) 
| Эта заметка доступна на: English Castellano Deutsch Francais Nederlands Russian Turkce | 
| ![[Фото автора]](http://www.linuxfocus.org/common/images/EgonWillighagen.jpg)  Автор Egon Willighagen Об авторе: Вступил в Голландское отделение LinuxFocus в 1999г. и уже в начале этого года стал вторым редактором. Учится в университете Неймегена на факультете информационной химии. Играет в баскетбол и любит путешествовать. Содержание: | 
![[Иллюстрация]](http://www.linuxfocus.org/common/images/illustration152.gif)
Резюме:
Эта заметка рассказывает об использовании DocBook для разработки PDF - документов, утилитах для редактирования DocBook документов и перевода их в PDF - документы. В заметке не рассказывается об инсталляции утилит - они просто перечисляются, эта заметка предназначена опытным пользователям ОС Linux.
В первой части рассказывается о формате DocBook документов. После введения я расскажу об утилитах, необходимых для преобразования DocBook документов в PDF формат для просмотра их программой Acrobat.
DocBook [1] - приложение SGML, предназначенное для разметки документов, такое же, как HTML для разметки веб - документов. В отличие от HTML, DocBook не предоставляет информацию о формате документа. Поэтому документы DocBook должны быть преобразованы в другой формат для просмотра. Преобразование в другой формат осуществляют с помощью утилит, применяющих некоторый шаблон к документам DocBook.
 
  Немного ниже, в данной заметке, рассмотрим, какие шаблоны и утилиты использовать для преобразования DocBook документов. Но сначала рассмотрим как составляются документы.
С помощью DocBook можно разметить два вида документов : заметки и книги. Из-за схожести в структуре этих документов, я буду использовать заметку. Перед написанием примера документа рассмотрим основы DocBook.
DocBook это SGML - приложение, такое же как HTML. Но существует и XML версия DocBook. XML - версия более строгая, но более легкая в понимании и изучении. Так как XML также является SGML - приложением, все программые средства SGML могут быть использованы. Основное различие между SGML и XML состоит в следующем (применимо для всех XML - приложений).
Теперь, после рассмотрения этих деталей, мы можем приступить к разработке DocBook документа.
    <?xml version="1.0"?>
    <article>
      <title>Writing DocBook articles</title>
      <artheader>
        <abstract>
          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.
        </abstract>
        <author>
          <firstname>Egon</firstname>
          <surname>Willighagen</surname>
        </author>
        <date></date>
      </artheader>
    </article>
Ничего сложного - мы начали заметку с заголовка, короткого резюме, даты написания и имени автора.
Далее добавляем разделы заметки, используя соответствующие элементы :
    <?xml version="1.0"?>
    <article>
      <title>Writing DocBook articles</title>
      <artheader>
        ... the articles header ...
      </artheader>
  
      <section>
        <title>Introduction</title>
      </section>
      ... other sections ...
    </article>
Мы добавили раздел Введение. Дополнительные элементы могут быть использованы для добавления разделов - Результаты, Выводы и т.д.
Весь текст заключатся в элементы para, подобные элементам p языка HTML :
    <section>
      <title>Introduction</title>
      <para>
        DocBook is an SGML application 
        developed to markup documents, just like HTML marks up webdocuments.
      </para>
    </section>
  
Кроме текстовых элементов существует много других. Далее рассмотрим, как другие элементы - примеры, списки, изображения могут быть использованы в документе.
Добавление "примеров"Примеры добавляются применением элемента example, как показано в следующем фрагменте кода :
<example>
  <title>Perl program that converts an XML document into a HTML page.</title>
  <programlisting>
    #!/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();    
  </programlisting>
</example>
  Но примеры могут также содержать текст, изображения и др. информацию.
Подобно языку HTML, DocBook использует списки. Списки обозначаются элементом itemizedlist, который состоит из одного или нескольких элементов listitem :
<itemizedlist>
  <listitem>
    <para>an item</para>
  </listitem>
  <listitem>
    <para>another item</para>
  </listitem>
  <listitem>
    <para>and again an item</para>
  </listitem>
</itemizedlist>
  Обратите внимание, что текст заключен в элемент para. Текст
  всегда должен использоваться внутри этого элемента!
  
  Списки могут быть упорядочены. Для этого необходимо использовать элемент orderlist вместо itemizedlist. Добавление числового параметра (например <orderedlist numeration="Arabic">) - устанавливает используемый.
Добавление изображенийИзображения добавляются следующим образом :
<mediaobject>
<imageobject>
<imagedata fileref="some_picture.gif" format="gif"/>
</imageobject>
<textobject>
  <para>
    If you were not using <productname>Lynx</productname>
    you could now see a picture.
  </para>
</textobject>
</mediaobject>
  Обратите внимание - кроме изображения используется текст. В самом деле
  я мог бы использовать и фильм. Утилита, которая будет использована для
  преобразования документа DocBook в формат PDF, сама подберет подходящий
  формат - возможно это будет изображение.
  
Также обратите внимание на разметку слова Lynx. Это особенность языков разметки - формат отделен от информации. Заметка рассказывает о товаре Lynx, для которого Lynx является названием. Применяемый шаблон содержит информацию о формате вывода элемента productname, например курсивом. В следующем разделе рассмотрим дополнительные возможности разметки слов.
Разметка словВ предыдущем разделе было показано, что слова имеют свои элементы разметки. Рассмотрим некоторые из них :
| Элемент | Описание | 
|---|---|
| abbrev | Сокращение - неполное написание чего - либо. Пример: <para><abbrev>e.g.</abbrev> means for example.</para> | 
| acronym | Сложносокращенное слово. Пример: <para><acronym>DSM</acronym> (chemical company) means "De StaatsMijnen" (=The State Mines).</para> | 
| Адрес электронной почты. Пример: <para>My email is <email>egon.w@linuxfocus.org</email></para> | |
| keyword | Ключевое слово. Пример: <para>In my humble opinion <keyword>chemistry</keyword> is very important.</para> | 
Теперь, после рассмотрения элементов DocBook, приступим к созданию 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, но я его не использовал.
Я использую 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.texJade создает 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 :
| Webpages maintained by the LinuxFocus Editor team © Egon Willighagen LinuxFocus.org 2000 Click here to report a fault or send a comment to Linuxfocus | Translation information: 
 | 
2000-07-05, generated by lfparser version 1.5