4.2 DocBook

DocBook беше разработен от Davenport Group за да бъде DTD за писане на техническа документация. Като такъв и за разлика от LinuxDoc, DocBook е много твърдо ориентиран към маркиране което описва какво е нещо, вместо да описва как трябва да се представи.

formal срещу informal: Някои елементи могат да съществуват в две форми formal и informal. Обикновено, формалната версия на елемент се състои от заглавие следвано от информационната част на елемента. Informal версията няма заглавие.

DTD (документ тип дефинициите) за DocBook са достъпни от порт колекцията чрез textproc/docbook порт. Той се инсталира автоматично като част от textproc/docproj порт.

4.2.1 FreeBSD допълнения

Проекта за FreeBSD документация допълва DocBook DTD като добавя някои нови елементи. Тези елементи правят маркирането малко по-прецизно.

Ако по-надолу е показан специфичен за FreeBSD елемент, той е ясно маркиран.

В останалата част от този документ, термина ``DocBook'' ще се използва за да означи FreeBSD разширен DocBook DTD.

Note: В тези разширения няма нищо което да е строго FreeBSD специфично, това са просто полезни допълнения за този проект. В случай, че някои от другите *nix лагери (NetBSD, OpenBSD, Linux, ...) е заинтересуван от съвместна работа по доусъвършенстване на стандартните DocBook разширения, може да се свърже с Nik Clayton .

FreeBSD допълненията не са (в момента) в порт колекцията. Те се съхраняват в CVS хранилището на FreeBSD като doc/share/sgml/freebsd.dtd.

4.2.2 Формален публичен Идентификатор (FPI)

Съгласно насоките за писане на FPI за DocBook разширения, FPI за FreeBSD разширен DocBook е;

PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN"

4.2.3 Структура на документ

DocBook позволява да структурирате документ по няколко начина. В документацията за FreeBSD се използват два основни типа DocBook документи: book и article.

Book (книга) се състои от <chapter>-и. Това е задължително изискване. Може да има <part> (части) между book (книга) и chapter (глава), за да се предостави друг слой на организация. FreeBSD Наръчника е организиран по този начин.

Глава може (или не) да съдържа една или повече секции. Те се задават с <sect1> елемент. Ако секция съдържа друга секция се използва <sect2> елемент и т.н. до <sect5>.

Главите и секциите съдържат останалото от съдържанието.

Статиите са по-прости от книгите и не използват глави. Вместо това съдържанието им е организирано в една или повече секции използвайки същите <sect1><sect2> и т.н.) елементи, които се използват в книгите.

Очевидно, трябва да решите какво е естеството на документацията, която пишете, за да я маркирате като книга или статия. Статиите са подходящи за информация, която не е необходимо да бъде разбита на глави и честно казано е кратка - до 20-25 страници съдържание. Книгите са подходящи за информация, която може да бъде разбита на няколко части, вероятно с приложения и други такива.

FreeBSD ръководствата са маркирани като статии, докато този документ, FreeBSD FAQ и FreeBSD наръчника са маркирани като книги.

4.2.3.1 Започване на книга

Съдържанието на книга се съдържа в <book> елемент. Поради това, че той съдържа и структурното маркиране, може да се включат и допълнителни елементи с информация за книгата. Това може да е или мета информация или допълнително съдържание използвано за генериране на заглавната страница.

Тази допълнителна информация трябва да се бъде включена в <bookinfo>.

Example 4-21. <book> с <bookinfo>

<book>
  <bookinfo>
    <title>Your title here</title>
    
    <author>
      <firstname>Your first name</firstname>
      <surname>Your surname</surname>
      <affiliation>
        <address><email>Your e-mail address</email></address>
      </affiliation>
    </author>

    <copyright>
      <year>1998</year>
      <holder role="mailto:your e-mail address">Your name</holder>
    </copyright>

    <releaseinfo>$FreeBSD$</releaseinfo>

    <abstract>
      <para>Include an abstract of the book's contents here.</para>
    </abstract>
  </bookinfo>

  ...

</book>

4.2.3.2 Започване на статия

Съдържанието на статия се съдържа в <article> елемент. Както и структурните елементи този елемент може да съдържа допълнителни елементи за статията. Това може да е или мета информация или допълнително съдържание използвано за генериране на заглавна страница.

Тази допълнителна информация трябва да се постави в <articleinfo>.

Example 4-22. <article> с <articleinfo>

<article>
  <articleinfo>
    <title>Your title here</title>
    
    <author>
      <firstname>Your first name</firstname>
      <surname>Your surname</surname>
      <affiliation>
        <address><email>Your e-mail address</email></address>
      </affiliation>
    </author>

    <copyright>
      <year>1998</year>
      <holder role="mailto:your e-mail address">Your name</holder>
    </copyright>

    <releaseinfo>$FreeBSD$</releaseinfo>

    <abstract>
      <para>Include an abstract of the article's contents here.</para>
    </abstract>
  </articleinfo>

  ...

</article>

4.2.3.3 Означаване на глави

Използвайте <chapter> за да маркирате главите. Всяка глава задължително съдържа <title>. Статиите не съдържат глави, те са запазени за книгите.

Example 4-23. Примерна глава

<chapter>
  <title>The chapter's title</title>

  ...
</chapter>

Глава не може да бъде без съдържание, трябва да съдържа и други елементи освен <title>. Ако е необходимо да включите празна глава, използвайте празен параграф.

Example 4-24. Празни глави

<chapter>
  <title>This is an empty chapter</title>

  <para></para>
</chapter>

4.2.3.4 Подсекции на главите

В книга, главите могат (но не е задължително) да бъдат разбити на секции, подсекции и т.н. В статиите, секциите са основният структурен елемент и всяка статия трябва да съдържа поне една. Използва се <sectn> елемент. Където n означава номера на секция, което идентифицира ниво на секцията.

Първата <sectn> е <sect1>. Можете да имате една или повече от тези в глава. Те може да съдържат един или повече <sect2> елементи и т.н. до <sect5>.

Example 4-25. Секции в глави

<chapter>
  <title>A sample chapter</title>

  <para>Some text in the chapter.</para>

  <sect1>
    <title>First section (1.1)</title>

    ...
  </sect1>

  <sect1>
    <title>Second section (1.2)</title>

    <sect2>
      <title>First sub-section (1.2.1)</title>

      <sect3>
        <title>First sub-sub-section (1.2.1.1)</title>

        ...
      </sect3>
    </sect2>

    <sect2>
      <title>Second sub-section (1.2.2)</title>

      ...
    </sect2>
  </sect1>
</chapter>

Note: Този пример включва номера на секции в заглавия на секции. Не бива да правите това във вашите документи. Добавянето на номера на секции се прави от stilesheets (за това по-късно) и не е необходимо да го правите сами.

4.2.3.5 Подразделяне с помощта на <part>

Можете да добавите още един слой на организация между <book> и <chapter> с помощта на <part>. Това не може да се прави в <article>.

<part>
  <title>Introduction</title>

  <chapter>
    <title>Overview</title>

    ...
  </chapter>

  <chapter>
    <title>What is FreeBSD?</title>

    ...
  </chapter>

  <chapter>
    <title>History</title>

    ...
  </chapter>
</part>

4.2.4 Блокови елементи

4.2.4.1 Параграфи

DocBook поддържа три типа параграфи: <formalpara>, <para> и <simpara>.

През повечето време ще се налага да използвате само <para>. <formalpara> включва <title> елемент, а <simpara> забранява някои елементи в <para>. Използвайте <para>.

Example 4-26. <para>

Използване:

<para>This is a paragraph.  It can contain just about any
  other element.</para>

Изглед:

Това е параграф. Той може да съдържа който и да е друг елемент .

4.2.4.2 Блокови цитати

Блоковото цитиране е разширено цитиране от друг документ, който не трябва да се появява в текущия параграф. Вероятно, рядко ще ви се налага да го използвате.

Блоковото цитиране опционално може да съдържа заглавие и атрибути (или може да бъде оставено без заглавие и атрибути).

Example 4-27. <blockquote>

Използване:

<para>A small excerpt from the US Constitution;</para>
          
<blockquote>
  <title>Preamble to the Constitution of the United States</title>

  <attribution>Copied from a web site somewhere</attribution>
        
  <para>We the People of the United States, in Order to form a more perfect
    Union, establish Justice, insure domestic Tranquility, provide for the
    common defence, promote the general Welfare, and secure the Blessings
    of Liberty to ourselves and our Posterity, do ordain and establish this
    Constitution for the United States of America.</para>
</blockquote>

Изглед:

 

Preamble to the Constitution of the United States

We the People of the United States, in Order to form a more perfect Union, establish Justice, insure domestic Tranquility, provide for the common defence, promote the general Welfare, and secure the Blessings of Liberty to ourselves and our Posterity, do ordain and establish this Constitution for the United States of America.

 
--Copied from a web site somewhere  

4.2.4.3 Съвети, бележки, предупреждения, опасности, важна информация и отметки.

Може да се наложи да включите допълнителна информация, отделно от главното тяло на текста. Обикновенно, това е ``meta'' информация, която потребителят трябва да има в предвид.

В зависимост от естеството на информацията, едно от следните <tip>, <note>, <warning>, <caution> и <important> може да бъде използвано. Алтернативно, ако информацията е свързана с основният текст, но не е от описаните по-горе използвайте <sidebar>.

Все пак, не е много ясно кога кой елемент да се използва. DocBook документацията препоръчва следното;

  • Бележка се използва, когато информацията трябва да бъде взета под внимание от всички потребители.

  • Важно е елемент, който се поставя като вариация на Бележка.

  • Внимание служи за предпазване от евентуална загуба на информация или повреда на програма (ОС).

  • Предупреждение за информация относно възможна повреда на хардуер или опасност за живота или крайници.

Example 4-28. <warning>

Използване:

<warning>
  <para>Installing FreeBSD may make you want to delete Windows from your
    hard disk.</para>
</warning>

Warning: Инсталирането на FreeBSD може да ви накара да поискате да изтриете Windows от твърдия си диск.

4.2.4.4 Списъци и процедури

Често ще ви се налага да покажете списък с информация на потребителя или да представите стъпки, които трябва да се изпълнят за да се постигне определена цел.

За да постигнете това използвайте <itemizedlist>, <orderedlist> или <procedure>[1]

<itemizedlist> и <orderedlist> са подобни на техните съответстващи в HTML, <ul> и <ol>. Всеки от тях се състои от един или повече <listitem> елементи и всеки <listitem> съдържа един или повече блокови елементи. <listitem> елементите са аналогични на HTML <li>. Все пак за разлика от HTML те са задължителни.

<procedure> е леко различен. Състои се от <step> (стъпки), които от своя страна се състоят от други <step> или <substep>. Всеки <step> съдържа блокови елементи.

Example 4-29. <itemizedlist>, <orderedlist> и <procedure>

Използване:

<itemizedlist>
  <listitem>
    <para>This is the first itemized item.</para>
  </listitem>

  <listitem>
    <para>This is the second itemized item.</para>
  </listitem>
</itemizedlist>

<orderedlist>
  <listitem>
    <para>This is the first ordered item.</para>
  </listitem>

  <listitem>
    <para>This is the second ordered item.</para>
  </listitem>
</orderedlist>

<procedure>
  <step>
    <para>Do this.</para>
  </step>

  <step>
    <para>Then do this.</para>
  </step>

  <step>
    <para>And now do this.</para>
  </step>
</procedure>

Изглед:

  • This is the first itemized item.

  • This is the second itemized item.

  1. This is the first ordered item.

  2. This is the second ordered item.

  1. Do this.

  2. Then do this.

  3. And now do this.

4.2.4.5 Представяне на примерни файлове

Ако е необходимо да покажете фрагмент от файл (или целия файл) на потребителя, пакетирайте го в <programlisting> елемент.

Празните интервали и новите редове в <programlisting> са значещи. Това значи, че началния етикет трябва да бъде на един ред с първият ред от фрагмента, а затварящият етикет трябва да бъде на един ред с последния. В противен случай могат да се появят фалшиви празни редове.

Example 4-30. <programlisting>

Използване:

<para>When you have finished, your program should look like
  this;</para>

<programlisting>#include &lt;stdio.h&gt;

int
main(void)
{
    printf("hello, world\n");
}</programlisting>

Забележете, че ъгловите скоби в #include трябва да бъдат представени с техните имена вместо директно.

Изглед:

След като приключите, програмата ви ще изглежда така;

#include <stdio.h>

int
main(void)
{
    printf("hello, world\n");
}

4.2.4.6 Извиквания (Callouts)

Извикванията са механизъм за обръщане към по-предишна част от текст или специфично място в предишен пример без всъщност да има препратка в текущият текст.

За да направите това, маркирайте зона в част от ваш пример (<programlisting>, <literallayout> или каквото и да е) с <co> елемент. Всеки елемент трябва да има уникално id. След примера ви, включете <calloutlist> който се обръща към примера и предоставя допълнителен коментар.

Example 4-31. <co> и <calloutlist>

<para>When you have finished, your program should look like
  this;</para>

<programlisting>#include &lt;stdio.h&gt; <co id="co-ex-include">

int <co id="co-ex-return">
main(void)
{
    printf("hello, world\n"); <co id="co-ex-printf">
}</programlisting>

<calloutlist>
  <callout arearefs="co-ex-include">
    <para>Includes the standard IO header file.</para>
  </callout>

  <callout arearefs="co-ex-return">
    <para>Specifies that <function>main()</function> returns an
      int.</para>
  </callout>

  <callout arearefs="co-ex-printf">
    <para>The <function>printf()</function> call that writes
      <literal>hello, world</literal> to standard output.</para>
  </callout>
</calloutlist>

Появяване:

Когато свършите, програмата ви ще изглежда така;

#include <stdio.h> (1)

int (2)
main(void)
{
    printf("hello, world\n"); (3)
}
(1)
Включва стандартния IO header файл.
(2)
Показва, че main() връща int.
(3)
Функцията printf() отпечатва hello, world на стандартния изход.

4.2.4.7 Таблици

За разлика от HTML, не е необходимо да използвате таблици за разполагане на нещата т.като stylesheet прави това. Използвайте таблици само при маркиране на табулирани данни.

В основни термини (вижте документацията на DocBook за повече детайли) всяка таблица (която може да бъде formal или informal) се състои от <table> елемент. Той съдържа поне един <tgroup> елемент, който задава (като атрибут) броя колони за таблична група. В таблична група може да има един <thead> елемент съдържащ заглавията на таблицата (колоните) и един <tbody>, който съдържа тялото на таблицата.

И двата <tgroup> и <thead> съдържат <row> елементи, съдържащи <entry> елементи. Всеки <entry> елемент задава една клетка в таблицата.

Example 4-32. <informaltable>

Използване:

<informaltable>
  <tgroup cols="2">
    <thead>
      <row>
        <entry>This is column head 1</entry>
        <entry>This is column head 2</entry>
      </row>
    </thead>

    <tbody>
      <row>
        <entry>Row 1, column 1</entry>
        <entry>Row 1, column 2</entry>
      </row>

      <row>
        <entry>Row 2, column 1</entry>
        <entry>Row 2, column 2</entry>
      </row>
    </tbody>
  </tgroup>
</informaltable>

Появяване:

This is column head 1 This is column head 2
Row 1, column 1 Row 1, column 2
Row 2, column 1 Row 2, column 2

Ако не желаете контур около таблицата, frame атрибут може да бъде добавен към <informaltable> елемент със стойност none (т.е., <informaltable frame="none">).

Example 4-33. Таблици с frame="none"

Появяване:

This is column head 1 This is column head 2
Row 1, column 1 Row 1, column 2
Row 2, column 1 Row 2, column 2

4.2.4.8 Примери, които потребител трябва да следва

Често в примерите се налага да се покаже на потребител пример, който той трябва да следва. Това обикновенно е диалог с компютъра; Потребителят въвежда команда, получава отговор от компютъра, след това въвежда друга команда и т.н.

Няколко различни елементи и озаглавявания взимат участие в това.

<screen>

Всичко което потребителя вижда в този пример ще бъде на компютърен екран, затова и името на елемента е <screen>.

В <screen>, празните интервали са значещи.

<prompt>, &prompt.root; и &prompt.user;

Някои от нещата, които потребителят ще вижда на екрана са промптове (на командния интерпретатор, операционната система или приложение. Те трябва да се маркират с <prompt>.

Като особен случай, (за двата промпта - нормален потребител и root) има различни озаглавявания. Когато е необходимо да покажете, че потребителя е в команден промпт, използвайте &prompt.root; или &prompt.user;. Не е необходимо да са вградени в <prompt>.

Note: &prompt.root; и &prompt.user; са FreeBSD разширения на DocBook и не са част от оригиналните DTD.

<userinput>

Когато показвате текст, който потребителят трябва да напише, опаковайте го в <userinput> етикети. Вероятно ще бъде показан различно на потребителя.

Example 4-34. <screen>, <prompt> и <userinput>

Използване:

<screen>&prompt.user; <userinput>ls -1</userinput>
foo1
foo2
foo3
&prompt.user; <userinput>ls -1 | grep foo2</userinput>
foo2
&prompt.user; <userinput>su</userinput>
<prompt>Password: </prompt>
&prompt.root; <userinput>cat foo2</userinput>
This is the file called 'foo2'</screen>

Появяване:

% ls -1
foo1
foo2
foo3
% ls -1 | grep foo2
foo2
% su
Password: 
# cat foo2
This is the file called 'foo2'

Note: Въпреки, че показваме съдържанието на файла foo2 то не е маркирано <programlisting>. Запазете <programlisting> за показване на фрагменти от файлове извън контекста на действие на потребителя.

4.2.5 Вградени елементи

4.2.5.1 Подчертаване

Когато е необходимо да подчертаете определена дума или фраза използвайте <emphasis>. Това може би ще я покаже с наклонен или удебелен шрифт или може би ще бъде произнесена различно ако използвате текст-към-говор система.

Не е възможно да промените начина, по който се показва подчертаването в документ, няма еквивалент на <b> и <i> в HTML. Ако информацията, която представяте е важна, представете я пакетирана в <important> вместо <emphasis>.

Example 4-35. <emphasis>

Използване:

<para>FreeBSD е, без съмнение <emphasis>най-предпочитаната</emphasis>
  Unix операционна система за Intel архитектура</para>

Появяване:

FreeBSD е, без съмнение, най-предпочитаната Unix операционна система за Intel архитектура.

4.2.5.2 Цитати

За да цитирате текст от друг документ или при обозначаване на фраза, която се използва фигуративно, използвайте <quote>. В <quote> етикет можете да използвате повечето от етикетите за маркиране на нормален текст.

Example 4-36. Цитати

Използване:

<para>However, make sure that the search does not go beyond the
  <quote>boundary between local and public administration</quote>,
  as RFC 1535 calls it.</para>

Появяване:

However, make sure that the search does not go beyond the ``boundary between local and public administration'', as RFC 1535 calls it.

4.2.5.3 Клавиши, бутони на мишка и комбинации

За да обозначите определен клавиш на клавиатурата използвайте <keycap>. При обозначаване на бутон на мишка <mousebutton>. За клавишни комбинации или специфично използване на мишката - пакетирайте в <keycombo>.

<keycombo> има атрибут наречен action, който може да е едно от click, double-click, other, press, seq или simul. Последните две стойности показват дали клавишната комбинация трябва да се изпълни последователно или едновременно.

stylesheets автоматично добавят свързващите символи, като + между имената на клавишите, когато се използва <keycombo>.

Example 4-37. Клавиши, бутони на мишката и комбинации

Използване:

<para>To switch to the second virtual terminal, press 
  <keycombo action="simul"><keycap>Alt</keycap>
    <keycap>F1</keycap></keycombo>.</para>

<para>To exit <command>vi</command> without saving your work, type
  <keycombo action="seq"><keycap>Esc</keycap><keycap>:</keycap>
    <keycap>q</keycap><keycap>!</keycap></keycombo>.</para>

<para>My window manager is configured so that
  <keycombo action="simul"><keycap>Alt</keycap>
    <mousebutton>right</mousebutton>
  </keycombo> mouse button is used to move windows.</para>

Появяване:

To switch to the second virtual terminal, press Alt+F1.

To exit vi without saving your work, type Esc : q !.

My window manager is configured so that Alt+right mouse button is used to move windows.

4.2.5.4 Приложения, команди, опции или сайтове

Често ще ви се налага да споменавате приложения и команди, когато пишете за Handbook (Ръководството). Разликата между тях е проста: приложение е името на пакет (или само 1) програми, които служат за изпълнението на определена задача. Команда е името на програма, която потребителя може да стартира.

В допълнение вероятно ще ви се иска да покажете една или повече опции, които командата може да получи.

Най-накрая, почти сигурно, ще ви се наложи да покажете команда с нейния номер на секция от помощните ръководства във формат на ``command(number)'', който често се използва в Unix документи.

Маркирайте имената на приложения с <application>.

Когато искате да покажете команда със секцията от ръководството й (както ще е през повечето време) DocBook елемента, които ви е необходим е <citerefentry>. Той може да съдържа два елемента, <refentrytitle> и <manvolnum>. Съдържанието на <refentrytitle> е името на командата, а съдържанието <manvolnum> е страницата от ръководството.

Това е неудобно за писане и затова е създадена серия от главни наименования . Те са със формата на &man.manual-page.manual-section;.

Файла съдържащ тези озаглавявания се намира в doc/share/sgml/man-refs.ent и може да се получи с използването на този FPI:

PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN"

По тази причина въведението в документацията, вероятно ще бъде следното:

<!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [

<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
%man;

...

]>

Използвайте <command> когато искате да включите име на команда ``в реда'', но представена като нещо което потребителят трябва да въведе.

Използвайте <option> за да маркирате опция към команда.

Това може да е малко объркващо и понякога кое да се избере не е много ясно. Да се надяваме, че следният пример ще поясни.

Example 4-38. Приложения, команди и опции.

Използване:

<para><application>Sendmail</application> is the most
  widely used Unix mail application.</para>

<para><application>Sendmail</application> includes the
  <citerefentry>
    <refentrytitle>sendmail</refentrytitle>
    <manvolnum>8</manvolnum>
  </citerefentry>, &man.mailq.8;, and &man.newaliases.8;
  programs.</para>

<para>One of the command line parameters to <citerefentry>
    <refentrytitle>sendmail</refentrytitle>
    <manvolnum>8</manvolnum>
  </citerefentry>, <option>-bp</option>, will display the current
  status of messages in the mail queue.  Check this on the command
  line by running <command>sendmail -bp</command>.</para>

Появяване:

Sendmail is the most widely used Unix mail application.

Sendmail includes the sendmail(8), mailq(8), and newaliases(8) programs.

One of the command line parameters to sendmail(8), -bp, will display the current status of messages in the mail queue. Check this on the command line by running sendmail -bp.

Note: Забележете, че &man.command.section; маркиране е по-лесно за следване.

4.2.5.5 Файлове, директории и разширения

Когато е необходимо да опишете име на файл, директория или файлово разширение, използвайте <filename>.

Example 4-39. <filename>

Използване:

<para>The SGML source for the Handbook in English can be
  found in <filename>/usr/doc/en/handbook/</filename>.  The first
  file is called <filename>handbook.sgml</filename> in that
  directory.  You should also see a <filename>Makefile</filename>
  and a number of files with a <filename>.ent</filename>
  extension.</para>

Появяване:

The SGML source for the Handbook in English can be found in /usr/doc/en/handbook/. The first file is called handbook.sgml in that directory. You should also see a Makefile and a number of files with a .ent extension.

4.2.5.6 Имена на портове

FreeBSD разширения: Тези елементи са част от FreeBSD разширенията на DocBook, и не съществуват в оригиналния DocBook DTD.

В Документацията може да ви се наложи да включите име на програма от порт колекцията на FreeBSD. Използвайте <filename> етикет с role атрибут package. Портовете могат да бъдат инсталирани на различно място, така че включвайте само името на порта; не /usr/ports.

Example 4-40. <filename> етикет с package role

Използване:

<para>Install the <filename role="package">net/ethereal</filename> port to view network traffic.</para>

Появяване:

Install the net/ethereal port to view network traffic.

4.2.5.7 Устройства

FreeBSD разширения: Тези елементи са част от FreeBSD разширенията на DocBook, и не съществуват в оригиналния DocBook DTD.

Когато споменавате устройства имате два избора. Можете да ги споменавате както са в /dev или можете да използвате имената на устройствата както са в ядрото (kernel). В последния случай използвайте <devicename>.

Понякога нямате избор. Някои устройства, като мрежови карти, нямат съответствия в /dev или те са различни.

Example 4-41. <devicename>

Използване:

<para><devicename>sio</devicename> is used for serial
  communication in FreeBSD.  <devicename>sio</devicename> manifests
  through a number of entries in <filename>/dev</filename>, including
  <filename>/dev/ttyd0</filename> and <filename>/dev/cuaa0</filename>.</para>

<para>By contrast, the networking devices, such as
  <devicename>ed0</devicename> do not appear in <filename>/dev</filename>.

<para>In MS-DOS, the first floppy drive is referred to as
  <devicename>a:</devicename>.  In FreeBSD it is
  <filename>/dev/fd0</filename>.</para>

Появяване:

sio is used for serial communication in FreeBSD. sio manifests through a number of entries in /dev, including /dev/ttyd0 and /dev/cuaa0.

By contrast, the networking devices, such as ed0 do not appear in /dev.

In MS-DOS, the first floppy drive is referred to as a:. In FreeBSD it is /dev/fd0.

4.2.5.8 Сървъри, домейни, IP адреси и т.н.

FreeBSD разширения: Тези елементи са част от FreeBSD разширения на DocBook и не съществуват в оригиналния DocBook.

Можете да маркирате информация за мрежови компютри (сървъри) по различни начини в зависимост от естеството на информацията. Използвайте <hostid> като елемент с role атрибут указващ типа на маркираната информация.

Без role атрибут или role="hostname"

Без role атрибут (i.e., <hostid>...</hostid>) маркираната информация е просто име на сървър, като freefall или wcarchive. Можете да го зададете с role="hostname" .

role="domainname"

Текста е име на домейн, като FreeBSD.org или ngo.org.uk. Без име на сървър.

role="fqdn"

Текста е Пълното Квалифицирано Име на Домейн (Fully Qualified Domain Name) включващ двете части, име на домейн и сървър.

role="ipaddr"

Текста е IP адрес, зададен като разделени с точка числа.

role="ip6addr"

Текста е IPv6 адрес.

role="netmask"

Текста е мрежова маска, която може да бъде зададена като разделени с точка числа или като / следвано от число.

role="mac"

Текста е Ethernet MAC адрес зададен като серия от двуцифрени шестнадесетични числа разделени с двоеточие.

Example 4-42. <hostid> и roles

Използване:

<para>The local machine can always be referred to by the
  name <hostid>localhost</hostid>, which will have the IP address
  <hostid role="ipaddr">127.0.0.1</hostid>.</para>

<para>The <hostid role="domainname">FreeBSD.org</hostid> domain
  contains a number of different hosts, including
  <hostid role="fqdn">freefall.FreeBSD.org</hostid> and
  <hostid role="fqdn">bento.FreeBSD.org</hostid>.</para>

<para>When adding an IP alias to an interface (using
  <command>ifconfig</command>) <emphasis>always</emphasis> use a
  netmask of <hostid role="netmask">255.255.255.255</hostid>
  (which can also be expressed as <hostid
    role="netmask">0xffffffff</hostid>.</para>

<para>The MAC address uniquely identifies every network card
  in existence.  A typical MAC address looks like <hostid
    role="mac">08:00:20:87:ef:d0</hostid>.</para>

Появяване:

The local machine can always be referred to by the name localhost, which will have the IP address 127.0.0.1.

The FreeBSD.org domain contains a number of different hosts, including freefall.FreeBSD.org and bento.FreeBSD.org.

When adding an IP alias to an interface (using ifconfig) always use a netmask of 255.255.255.255 (which can also be expressed as 0xffffffff.

The MAC address uniquely identifies every network card in existence. A typical MAC address looks like 08:00:20:87:ef:d0.

4.2.5.9 Потребителски имена

FreeBSD разширения: Тези елементи са част от FreeBSD разширенията на DocBook, и не съществуват в оригиналните DocBook DTD.

Когато трябва да споменете специфично потребителско име, като root или bin използвайте <username>.

Example 4-43. <username>

Използване:

<para>To carry out most system administration functions you
  will need to be <username>root</username>.</para>

Появяване:

Повечето от задачите на системен администратор ще трябва да извършвате като root.

4.2.5.10 Описания на Makefile-ове

FreeBSD разширения: Тези елементи са част от FreeBSD разширенията на DocBook, и не съществуват в оригиналните DocBook DTD.

Съществуват два елемента за описване на части от Makefile-ове, <maketarget> и <makevar>.

<maketarget> задава целта за компилиране от Makefile, която може да бъде зададена като параметър на make. <makevar> задава променлива, която може да бъде инициализирана (в обкръжението, от make командата линия или от самия Makefile).

Example 4-44. <maketarget> и <makevar>

Използване:

<para>Two common targets in a <filename>Makefile</filename>
  are <maketarget>all</maketarget> and <maketarget>clean</maketarget>.</para>

<para>Typically, invoking <maketarget>all</maketarget> will rebuild the
  application, and invoking <maketarget>clean</maketarget> will remove
  the temporary files (<filename>.o</filename> for example) created by
  the build process.</para>

<para><maketarget>clean</maketarget> may be controlled by a number of
  variables, including <makevar>CLOBBER</makevar> and
  <makevar>RECURSE</makevar>.</para>

Появяване:

Две често използвани цели в Makefile са all и clean.

Обикновенно извикването на all ще компилира приложението а извикването на clean ще премахне временните файлове (.o на пример) създадени от процеса на компилиране .

clean може да се контролира от няколко променливи, включително CLOBBER и RECURSE.

4.2.5.11 Дословен текст

Често ще ви се налага да включвате ``дословен'' текст в Ръководството (Наръчника). Това е текст, който е изваден от друг файл, или трябва да бъде копиран от Ръководството в друг файл дословно.

Понякога <programlisting> ще бъде достатъчно за да обозначите този тип текст. <programlisting> не винаги е подходящ, особено когато искате да включите част от файл ``на реда'' с останалата част от параграфа.

В тези случаи използвайте <literal>.

Example 4-45. <literal>

Използване:

<para>The <literal>maxusers 10</literal> line in the kernel
  configuration file determines the size of many system tables, and is
  a rough guide to how many simultaneous logins the system will
  support.</para>

Появяване:

The maxusers 10 line in the kernel configuration file determines the size of many system tables, and is a rough guide to how many simultaneous logins the system will support.

4.2.5.12 Изобразяване на неща, който потребителят трябва да въведе

Може да се наложи да покажете на потребителят какво трябва да направи, да въведе във файл или на командната линия, където обаче потребителят не може просто да копира примерите, които сте предоставили а вместо това трябва сам да добави информация.

<replaceable> е предвиден точно за тази цел. Използвайте го вътре в други елементи за да означите части от съдържанието, което потребителя трябва да замени.

Example 4-46. <replaceable>

Използване:

<informalexample>
  <screen>&prompt.user; <userinput>man <replaceable>command</replaceable></userinput></screen>
</informalexample>

Появяване:

% man command

<replaceable> can be used in many different elements, including <literal>. This example also shows that <replaceable> should only be wrapped around the content that the user is meant to provide. The other content should be left alone.

Използване:

<para>The <literal>maxusers <replaceable>n</replaceable></literal>
  line in the kernel configuration file determines the size of many system
  tables, and is a rough guide to how many simultaneous logins the system will
  support.</para>

<para>For a desktop workstation, <literal>32</literal> is a good value
  for <replaceable>n</replaceable>.</para>

Появяване:

The maxusers n line in the kernel configuration file determines the size of many system tables, and is a rough guide to how many simultaneous logins the system will support.

For a desktop workstation, 32 is a good value for n.

4.2.5.13 Обозначаване на системни грешки

Може да се наложи да покажете грешки генерирани от FreeBSD. Маркирайте ги като <errorname>. Така грешката ще бъде показана точно.

Example 4-47. <errorname>

Използване:

 
<screen><errorname>Panic: cannot mount root</errorname></screen>

Появяване:

``Panic: cannot mount root''

4.2.6 Графични файлове

Important: Поддръжката на графични файлове в документацията в момента е изключително експериментална. Описаните тук механизми най-вероятно няма да се променят, но това не е гарантирано.

Необходимо е да инсталирате и graphics/ImageMagick порт, който служи за конвертиране между различни графични формати. Това е голям порт и повечето от него не е необходимо. Все пак докато работим върху Makefileове и други, той ще улесни нещата. Този порт не е включен в textproc/docproj мета порт, трябва да го инсталирате ръчно.

Най-добрия практически пример е doc/en_US.ISO8859-1/articles/vm-design/ документ. Ако не сте сигурни в следващото описание, разгледайте файловете в тази директория за да разберете значението му. Експериментирайте като създавате различно форматирани версии на документ за да разберете как различното графично маркиране определя крайния резултат.

4.2.6.1 Графични формати

В момента се поддържат два формата за графични файлове. Формата който ще използвате зависи от естеството на вашите изображения.

За изображения които са векторно базирани, като мрежови диаграми, временни криви и подобни използвайте Encapsulated Postscript и се уверете, че изображенията са с .eps разширения.

За растерни изображения, като изображения на работен екран, използвайте Portable Network Graphic формат, и се уверете, че изображенията ви са с .png разширение.

Това са единствените формати в които трябва да публикувате изображения в CVS хранилището.

Винаги използвайте правилния формат. В документите си обикновенно ще имате и двата формата EPS и PNG изображения. Makefile-овете се грижат за избора на правилния формат в зависимост от крайния формат, които използвате за документацията.Не изпращайте в хранилището едно изображение и в двата формата .

Important: Предвижда се Проекта по Документация да премине към използване на Scalable Vector Graphic (SVG) формат за векторни изображения. Все пак, текущото състояние на SVG редактиращите приложения прави това непрактично.

4.2.6.2 Маркиране

Маркирането на изображение е относително просто. Първо, маркирайте <mediaobject>. Етикета <mediaobject> може да съдържа други обекти. Ние се интересуваме от <imageobject> и <textobject>.

Трябва да включите първо <imageobject> и второ <textobject> елементи. <imageobject> трябва да задава името на графичния файл (без разширението). <textobject> съдържа информацията, която ще бъде показана на потребителя заедно със, или вместо изображението.

Има две възможни ситуации.

  • Когато читателят преглежда документацията в HTML. В този случай към всяко изображение ще бъде асоцииран алтернативен текст, който ще бъде показан на потребителя, обикновенно докато се зарежда изображението или когато мишката е върху него.

  • Когато читателят преглежда документацията в обикновен текст. В този случай всяко изображение ще има алтернативно ASCII изображение, което ще бъде показано вместо оригиналното.

Следният пример ще направи нещата по-лесни за разбиране. Да предположим, че имате изображение наречено fig1, което искате да включите в документ. Изображението е на правоъгълник с едно А в средата. Маркирането би било следното.

<mediaobject>
  <imageobject>
    <imagedata fileref="fig1"> (1)
  </imageobject>

  <textobject>
    <literallayout class="monospaced">+---------------+ (2)
|       A       |
+---------------+</literallayout>
  </textobject>

  <textobject>
    <phrase>A picture</phrase> (3)
  </textobject>
</mediaobject>
(1)
Вмъкване на <imagedata> елемент вътре в <imageobject> елемент. fileref атрибут трябва да съдържа името на графичния файл за вмъкване, без разширението. Стиловите таблици (stylesheets) ще определят кое разширение да бъде добавено към името на файла автоматично.
(2)
Първият <textobject> трябва да съдържа <literallayout> елемент, където class атрибута е зададен като monospaced. Това е вашата възможност за демонстрация на ASCII артистични умения. Това е съдържанието, което ще бъде използвано ако документа ще се конвертира към обикновен текст.

Обърнете внимание как първите и последните линии на съдържанието на <literallayout> елемента са поставени до етикетите на елементите. Това осигурява включването на не повече от необходимото празно място.

(3)
Втория <textobject> трябва да съдържа единичен <phrase> елемент. Това съдържание ще бъде alt атрибута за графичния файл, когато документа се конвертира към HTML.

4.2.6.3 Makefile команди

Вашите изображения трябва да бъдат описани в Makefile в IMAGES променлива. Тази променлива трябва да съдържа имената на всички ваши графични файлове. На пример, ако имате три фигури, fig1.eps, fig2.png, fig3.png, тогава Makefile-а ще съдържа подобни на тези редове .

...
IMAGES= fig1.eps fig2.png fig3.png
...

or

...
IMAGES=  fig1.eps
IMAGES+= fig2.png
IMAGES+= fig3.png
...

Отново Makefile ще изработи пълния списък на изображенията, които са необходими за компилирането на документа, вие трябва просто да ги опишете.

4.2.6.4 Изображения и глави в поддиректориите

Трябва да бъдете внимателни когато разделяте документацията на по-малки файлове (вижте Section 3.7.1) в различни директории.

Да предположим, че имате книга с три глави и те са записани в техни директории наречени chapter1/chapter.sgml, chapter2/chapter.sgml и chapter3/chapter.sgml. Ако всяка глава има изображения асоциирани с нея аз бих препоръчал да ги сложите в съответстващата поддиректория на всяка глава. (chapter1/, chapter2/ и chapter3/).

Все пак, ако го направите по този начин, ще трябва да включите имената на директориите в IMAGES променлива в Makefile, и трябва да добавите директорията в <imagedata> елемента в документа.

Например, ако имате chapter1/fig1.png, тогава chapter1/chapter.sgml трябва да съдържа

<mediaobject>
  <imageobject>
    <imagedata fileref="chapter1/fig1"> (1)
  </imageobject>

  ...

</mediaobject>
(1)
Името на директорията трябва да бъде добавено в fileref атрибута

Makefile-а трябва да съдържа

...
IMAGES=  chapter1/fig1.png
...

Тогава всичко просто ще работи.

4.2.7 Препратки

Note: Препратките (връзки) също са елементи вградени в линията.

4.2.7.1 Препращане към други части на същия документ

Препращането към други части на същия документ изисква да укажете кой е текста чрез който препращате (т.е. текста който потребителят ще кликне или казано по друг начин да обозначите източника на връзката) и да зададете целта където препращате.

Всеки елемент в DocBook има атрибут наречен id. Можете да слагате текст в този атрибут за да именувате уникално към който принадлежи.

Стойността му ще бъде използвана при задаване на източника на препратката.

Обикновенно, ще препращате към глави или секции, така че можете да добавите id атрибут към тези елементи .

Example 4-48. id на глави и секции

<chapter id="chapter1">
  <title>Introduction</title>

  <para>This is the introduction.  It contains a subsection,
    which is identified as well.</para>

  <sect1 id="chapter1-sect1">
    <title>Sub-sect 1</title>

    <para>This is the subsection.</para>
  </sect1>
</chapter>

Разбира се трябва да използвате по-описателни стойности. Те трябва да бъдат уникални в документа (т.е. не само името на файла, но и документа може да бъде включен). Забележете как id на подсекция се конструира чрез добавянето на текст към id на главата. Това ще осигури уникалността им.

Ако искате да позволите на потребителят да скочи в специфична секция на документа (вероятно в средата на параграф или пример), използвайте <anchor>. Този елемент няма съдържание, но приема id атрибут.

Example 4-49. <anchor>

<para>This paragraph has an embedded
  <anchor id="para1">link target in it.  It will not show up in
  the document.</para>

Когато се налага да предоставите препратка която потребителят може да активира (чрез щракване с мишката) за да се прехвърли в секция на документа която има id атрибут, можете да използвате <xref> или<link> .

И двата елемента имат linkend атрибут. Стойността на този атрибут трябва да бъде тази, която сте използвали като id атрибут (няма значение дали стойността му все още не се е появила в документа; това ще работи както за препратки напред, така и назад).

Ако използвате <xref> тогава нямате контрол върху текста на препратката. Той ще бъде генериран автоматично.

Example 4-50. Използване на <xref>

Да предположим, че следният фрагмент съществува в документ, включващ id example;

<para>More information can be found
  in <xref linkend="chapter1">.</para>

<para>More specific information can be found
  in <xref linkend="chapter1-sect1">.</para>

Текста ще бъде генериран автоматично и ще изглежда като (подсилен текст показващ текста, който ще бъде препратката);

Повече информация може да бъде намерена в Chapter One.

По-специфична информация може да бъде намерена в секция Sub-sect 1.

Обърнете внимание как текста на препратката се образува от името на секцията или номера на главата.

Note: Това означава, че вие не можете да използвате <xref> за да препращате към id атрибут на <anchor> елемент. <anchor> няма съдържание, така че <xref> не може да генерира текста за препратката .

Ако искате да контролирате текста на препратката използвайте <link>. Този елемент опакова съдържание и то ще бъде използвано за препратката.

Example 4-51. Използване на <link>

До предположим, че следният фрагмент се появява някъде в документ, който включва id example.

<para>More information can be found in
  <link linkend="chapter1">the first chapter</link>.</para>

<para>More specific information can be found in
  <link linkend="chapter1-sect1">this</link> section.</para>

Това ще генерира следният подсилен текст (показващ текста който ще бъде препратката);

Повече информация може да бъде намерена в първата глава .

По-специфична информация може да бъде намерена в тази секция.

Note: Последния пример е всъщност лош пример. Никога не използвайте ``този'' или ``тук'' като текст за препратка. Читателят ще трябва да търси в контекста къде всъщност ще го отведе препратката.

Note: Можете да използвате <link> за да добавите id на <anchor> елемент, т.като съдържанието на <link> дефинира текста който ще бъде използван за препратката.

4.2.7.2 Препращане към документ от WWW

Препращането към външен документ е доста по-лесно, т.като знаете URL на документа към който искате да препратите. Използвайте <ulink>. url атрибута е адреса на страницата към която препратката сочи, а съдържанието на елемента е текста, който ще бъде показан на потребителя за активиране на препратката.

Example 4-52. <ulink>

Използване:

<para>Of course, you could stop reading this document and
  go to the <ulink url="../../../../index.html">FreeBSD
  home page</ulink> instead.</para>

Появяване:

Of course, you could stop reading this document and go to the FreeBSD home page instead.

Notes

[1]

Има и други типове елементи за списъци, но в момента няма да ги разглеждаме.

Този и други документи можете да намерите в ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

За въпроси отностно FreeBSD, прочетете документацията преди да попитате в <questions@FreeBSD.org>.
За въпроси отностно този документ, e-mail <doc@FreeBSD.org>.