diff options
Diffstat (limited to 'en_US/docs-module-struct.xml')
-rw-r--r-- | en_US/docs-module-struct.xml | 348 |
1 files changed, 348 insertions, 0 deletions
diff --git a/en_US/docs-module-struct.xml b/en_US/docs-module-struct.xml new file mode 100644 index 0000000..a751f2b --- /dev/null +++ b/en_US/docs-module-struct.xml @@ -0,0 +1,348 @@ +<!-- $Id: --> +<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" + "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [ + +<!-- *************** Bring in Fedora entities *************** --> +<!ENTITY % FEDORA-ENTITIES-EN SYSTEM "fdp-entities.ent"> +%FEDORA-ENTITIES-EN; + +]> + +<chapter id="ch-how-modules-work"> + <title>How Modules Work</title> + <para>Documentation modules have a specific structure that enables the + preconfigured tools to work correctly. Follow this structure exactly or you + may have problems building your module. The &FDP; build tools locate + resources in the module and use them to build new output such as HTML or RPM + packages.</para> + <section id="sn-module-struct"> + <title>Structure of a Module</title> + <para>The following listing shows a directory tree of an example module, + excluding any <filename class="directory">CVS</filename> folders:</para> + + <screen><computeroutput><![CDATA[example-doc/ + |-- en_US/ + |-- example-doc.xml + |-- para.xml + |-- doc-entities.xml + |-- rpm-info.xml + |-- figs/ + |-- fedora-logo-sprite.eps + |-- fedora-logo-sprite.png + |-- po/ + |-- de.po + |-- example-doc.pot + |-- pt.po + |-- Makefile]]></computeroutput></screen> + + <formalpara> + <title>Primary language directory (required)</title> + <para>This is the only directory absolutely required. It is named for the + original language of the document, such as <filename + class="directory">en_US</filename> (US English). The primary language + does not have to be US English; all languages are supported. This + directory contains all the XML source for the actual document, as well + as XML source for document-specific + <firstterm>entities</firstterm><footnote> + <para>Think of an XML entity as a predefined snippet of information. + It can represent a chunk of XML source, or simply a word or + character. If the information changes, it need be replaced only + once, in the definition, to fix all usage.</para> + </footnote>. + </para> + </formalpara> + <formalpara> + <title>Graphics directory (optional)</title> + <para>The <filename class="directory">figs/</filename> directory is an + optional directory where graphics for the document should be stored. If + graphics are screenshots that are particular to a language, the + <filename class="directory">figs/</filename> directory can and should be + stored in a language directory.</para> + </formalpara> + <formalpara> + <title>Translation (PO) directory (optional)</title> + <para>The <filename class="directory">po/</filename> directory contains + specially formatted files created and used by translators. The &FDP; + build tools use these files to create translated versions of documents. + The translated documents are not stored in CVS; they are created as + needed from these PO files.</para> + </formalpara> + <formalpara> + <title>Makefile (required)</title> + <para>The <filename>Makefile</filename> controls the build process. Its + content is discussed below. <!-- include xref here --></para> + </formalpara> + </section> + <section id="ch-getting-files-build-system"> + <title>The Document Build System</title> + <para> + Common tasks such as rendering the document into either + <abbrev>HTML</abbrev> or <abbrev>PDF</abbrev> can be performed + easily using the document building system. The building system + heavily leverages the <application>make(1)</application> tool and + shell scripts to automate these activities, but authors need + <emphasis>no</emphasis> prior experience with either shell scripts + or a <filename>Makefile</filename>. While individual documents do + have their own <filename>Makefile</filename>, it is only a few + lines long and very simple. The document + <filename>Makefile</filename> content is designed for cut and + paste operations. + </para> + <para> + <xref + linkend="ch-getting-files-build-system-makefile"/> below shows the + whole <filename>Makefile</filename> for a simple document having + only two files and one language. + </para> + <example id="ch-getting-files-build-system-makefile"> + <title>Sample Document Makefile</title> + <programlisting> +<![CDATA[ +DOCBASE = example-doc +PRI_LANG = en_US +OTHERS = de pt +DOC_ENTITIES = doc-entities + +define XMLFILES_template +XMLFILES-${1} = ${1}/example-doc.xml \ + ${1}/para.xml +endef + +include ../docs-common/Makefile.common +]]> + </programlisting> + </example> + <para> + Do not be concerned with some of the more complicated syntax (in + particular, the <command>XMLFILES_template</command> stanza). An + explanation for this template appears a few paragraphs + below.</para> + <formalpara> + <title><varname>DOCBASE</varname></title> + <para>This variable contains the name for the main (parent) XML document. + Follow convention by naming your document after the module name.</para> + </formalpara> + <formalpara> + <title><varname>PRI_LANG</varname></title> + <para>This variable contains the ISO code for the original version of the + document, such as <systemitem>en_US</systemitem>.</para> + </formalpara> + <formalpara> + <title><varname>OTHERS</varname></title> + <para>This variable contains a listing of ISO codes for any other versions + into which the document has been translated. The module must contain a + <filename class="directory">po/</filename> directory and a PO file for + any indicated additional languages.</para> + </formalpara> + <formalpara> + <title><varname>DOC_ENTITIES</varname></title> + <para>This variable contains a listing of any files containing entity + definitions. The &FDP; uses a special XML format to record + document-specific entities, so they can be translated and built on the + fly like any other XML document. An example is shown later in this + guide. <!-- need xref here --></para> + </formalpara> + <formalpara> + <title><varname>XMLFILES_template</varname></title> + <para>This template allows the build tools to work with the + document in multiple languages once it is translated. The + <varname>${1}</varname> marking is a variable used to substitute + the appropriate language. This template is not terribly + complicated. For a new module, duplicate this section exactly + except for the actual filenames. Prepend the text + <varname>${1}/</varname>, in place of the language code + directory name, to each filename in your document. + </para> + </formalpara> + <important> + <title>Files Exempt From Listing</title> + <para>Do not include the document-specific entities XML file or the + <filename>rpm-info.xml</filename> file, which will be discussed later in + this guide.<!-- include xref --></para> + </important> + <!-- TEMP MARKER - PWF finished here Nov 28 2006 --> + <para> + The final line, beginning with <literal>include</literal>, references the + main <filename>Makefile</filename> for the build system. This + <filename>Makefile.common</filename> file contains all the + <application>make(1)</application> targets and rules to actually build the + document and the various archives. + </para> + <para> + Add new document translations by: + </para> + <orderedlist> + <listitem> + <para> + Add the translated document files to the document directory. + Be sure to use the proper <systemitem class="macro">${LANG}</systemitem> filename component to keep the filenames similar, but unique. + </para> + </listitem> + <listitem> + <para> + Edit the <filename>Makefile</filename> to append the new <systemitem class="macro">${LANG}</systemitem> to the <systemitem class="macro">LANGUAGES</systemitem> definition. + </para> + </listitem> + <listitem> + <para> + Create a new <systemitem class="macro">XMLEXTRAFILES-${LANG}</systemitem> definition that references any document files other than the base file. + </para> + </listitem> + </orderedlist> + <section id="ch-getting-files-build-system-targets"> + <title>Build System Actions</title> + <para> + To render the <abbrev>XML</abbrev> document into <abbrev>HTML</abbrev> or <abbrev>PDF</abbrev> the command: <userinput>make html</userinput>, + <userinput>make html-nochunk</userinput>, or <userinput>make pdf</userinput> may be used. + </para> + <para> + <xref linkend="ch-getting-files-build-system-targets-table"/> lists the defined build system targets. + </para> + <table id="ch-getting-files-build-system-targets-table"> + <title>Document Building Targets</title> + <tgroup cols="2"> + <colspec align="right" colnum="1" colwidth="*1"/> + <colspec colnum="2" colwidth="*5"/> + <thead> + <row> + <entry><phrase>Target</phrase></entry> + <entry><phrase>Description</phrase></entry> + </row> + </thead> + <tbody> + <row> + <entry><phrase><filename>all</filename></phrase></entry> + <entry> + <para> + Builds the <abbrev>HTML</abbrev>, and the <abbrev>PDF</abbrev> forms of the document in all its defined translations. + </para> + <para> + Also builds the archives, such as <application>tar(1)</application> and <application>rpm(8)</application>. + </para> + </entry> + </row> + <row> + <entry><phrase><filename>tarball</filename></phrase></entry> + <entry> + <para> + Builds only the <application>tar(1)</application> archive for all document languages. + </para> + </entry> + </row> + <row> + <entry><phrase><filename>pdf</filename></phrase></entry> + <entry> + <para> + Builds only the <abbrev>PDF</abbrev> document for all document languages. + </para> + <para> + Currently, <abbrev>PDF</abbrev> production is problematic and probably will not work for your document. + </para> + </entry> + </row> + <row> + <entry><phrase><filename>html</filename></phrase></entry> + <entry> + <para> + Builds only the <abbrev>HTML</abbrev> document for each defined translation. + Output is placed in a separate directory: + <systemitem class="macro">${DOCBASE}</systemitem><filename>-</filename><systemitem class="macro">${LANG}</systemitem><filename>/</filename>; each document section is given its own file within that directory. + </para> + </entry> + </row> + <row> + <entry><phrase><filename>html-nochunks</filename></phrase></entry> + <entry> + <para> + Builds only the <abbrev>HTML</abbrev> document for each defined translation. + Output is placed in a single file: + <systemitem class="macro">${DOCBASE}</systemitem><filename>-</filename><systemitem class="macro">${LANG}</systemitem><filename>.html</filename>; no other files are created. + </para> + </entry> + </row> + <row> + <entry><phrase><filename>clean</filename></phrase></entry> + <entry> + <para> + Deletes any temporary, or generated files. + Does <emphasis>not</emphasis> erase any <abbrev>HTML</abbrev>, <abbrev>PDF</abbrev>, or archive files. + </para> + </entry> + </row> + <row> + <entry><phrase><filename>distclean</filename></phrase></entry> + <entry> + <para> + Erases all <abbrev>HTML</abbrev>, <abbrev>PDF</abbrev>, and archive files. + Automatically invokes the <filename>clean</filename> target as well. + </para> + </entry> + </row> + </tbody> + </tgroup> + </table> + <para> + You can add your own special targets and rules by placing them at the bottom of the document <filename>Makefile</filename>, below the <literal>include</literal> line. + </para> + <para> + Be sure to follow your target definitions with a double colon, not just one. + This will allow you to supply extra steps for the defined targets. + </para> + </section> + <section id="ch-getting-files-build-system-images"> + <title>Using Document Image Files</title> + <para> + Image files, such as <filename>.PNG</filename>, are often used in documents. + While your image files may be placed anywhere you like, we recommend that you store your image files in a <filename>figs/</filename> subdirectory within your document directory. + In other words, place your image <filename>picture.png</filename> in the <filename>mydoc/figs/picture.png</filename> file. + </para> + <note> + <title>Use PNG Images, Not JPG</title> + <para> + Depending on the output media, sometimes images may be scaled, + streteched, or squashed. + To minimize any distortions, we recommend that you use only + <wordasword>PDF</wordasword> images and avoid <wordasword>JPG</wordasword> files. + </para> + <para> + You may find the <systemitem class="filesystem">convert(1)</systemitem> program, from the <application>ImageMagick</application> <abbrev>RPM</abbrev> package, provides a convenient way to reformat any <wordasword>JPG</wordasword> images you already have. + </para> + </note> + <para> + You may organize your image files into as many subdirectories under <filename>figs/</filename> as you choose. + The document building system will recreate your image subdirectory structure in the output documents. + </para> + <para> + In addition, we recommend that you follow our convention on naming the image. + For example, an image often contains a caption or other text. + This text should be translated along with the document content, so keeping <filename>words-en.png</filename> separate from <filename>words-ru.png</filename> is a good practice. + An image file with no text can be named just <filename>picture.png</filename>, for example. + </para> + <para> + Sometimes, a document may require images that do not follow the naming convention. + You may still use these images with the document building system, but it requires that you create an ordinary text file containing the image filenames you want to use. + This file must be named <filename>figs/Manifest-</filename><systemitem class="macro">${LANG}</systemitem> so that the build system can find it as the search for image filenames begins. + </para> + <para> + An easy way to create the <filename>figs/Manifest-</filename><systemitem class="macro">${LANG}</systemitem> file is shown in <xref linkend="ch-getting-files-build-system-manifest"/>. + </para> + <example id="ch-getting-files-build-system-manifest"> + <title>Building A Manifest</title> +<programlisting> +rm -f figs/Manifest-en +find figs -print >/tmp/manifest +mv /tmp/manifest figs/Manifest-en +vi figs/Manifest-en +</programlisting> +</example> + + </section> + </section> +</chapter> + +<!-- +Local variables: +mode: xml +fill-column: 72 +End: +--> |