Remove unnecessary files.
This commit is contained in:
parent
6457f53b95
commit
4f25f34ddd
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=47716
18 changed files with 0 additions and 8987 deletions
|
@ -1,29 +0,0 @@
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!--
|
|
||||||
Creates entities for each chapter in the Documentation Project Primer.
|
|
||||||
Each entity is named chap.foo, where foo is the value of the id
|
|
||||||
attribute on that chapter, and corresponds to the name of the
|
|
||||||
directory in which that chapter's .xml file is stored.
|
|
||||||
|
|
||||||
Chapters should be listed in the order in which they are referenced.
|
|
||||||
|
|
||||||
$FreeBSD$
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!ENTITY chap.overview SYSTEM "overview/chapter.xml">
|
|
||||||
<!ENTITY chap.tools SYSTEM "tools/chapter.xml">
|
|
||||||
<!ENTITY chap.working-copy SYSTEM "working-copy/chapter.xml">
|
|
||||||
<!ENTITY chap.structure SYSTEM "structure/chapter.xml">
|
|
||||||
<!ENTITY chap.doc-build SYSTEM "doc-build/chapter.xml">
|
|
||||||
<!ENTITY chap.the-website SYSTEM "the-website/chapter.xml">
|
|
||||||
<!ENTITY chap.xml-primer SYSTEM "xml-primer/chapter.xml">
|
|
||||||
<!ENTITY chap.xhtml-markup SYSTEM "xhtml-markup/chapter.xml">
|
|
||||||
<!ENTITY chap.docbook-markup SYSTEM "docbook-markup/chapter.xml">
|
|
||||||
<!ENTITY chap.stylesheets SYSTEM "stylesheets/chapter.xml">
|
|
||||||
<!ENTITY chap.translations SYSTEM "translations/chapter.xml">
|
|
||||||
<!ENTITY chap.po-translations SYSTEM "po-translations/chapter.xml">
|
|
||||||
<!ENTITY chap.writing-style SYSTEM "writing-style/chapter.xml">
|
|
||||||
<!ENTITY chap.editor-config SYSTEM "editor-config/chapter.xml">
|
|
||||||
<!ENTITY chap.see-also SYSTEM "see-also/chapter.xml">
|
|
||||||
|
|
||||||
<!ENTITY app.examples SYSTEM "examples/appendix.xml">
|
|
|
@ -1,529 +0,0 @@
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Copyright (c) 1999 Neil Blakey-Milner, All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
|
||||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
|
||||||
copyright notice, this list of conditions and the following
|
|
||||||
disclaimer as the first lines of this file unmodified.
|
|
||||||
|
|
||||||
2. Redistributions in compiled form (transformed to other DTDs,
|
|
||||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
|
||||||
the above copyright notice, this list of conditions and the
|
|
||||||
following disclaimer in the documentation and/or other materials
|
|
||||||
provided with the distribution.
|
|
||||||
|
|
||||||
THIS DOCUMENTATION IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
|
||||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
||||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
$FreeBSD$
|
|
||||||
-->
|
|
||||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="doc-build">
|
|
||||||
<title>The Documentation Build Process</title>
|
|
||||||
|
|
||||||
<para>This chapter covers organization of the documentation build
|
|
||||||
process and how &man.make.1; is used to control it.</para>
|
|
||||||
|
|
||||||
<sect1 xml:id="doc-build-rendering">
|
|
||||||
<title>Rendering DocBook into Output</title>
|
|
||||||
|
|
||||||
<para>Different types of output can be produced from a single
|
|
||||||
DocBook source file. The type of output desired is set with the
|
|
||||||
<varname>FORMATS</varname> variable. A list of known formats is
|
|
||||||
stored in <varname>KNOWN_FORMATS</varname>:</para>
|
|
||||||
|
|
||||||
<screen xml:id="doc-build-rendering-known-formats">&prompt.user; <userinput>cd ~/doc/en_US.ISO8859-1/books/handbook</userinput>
|
|
||||||
&prompt.user; <userinput>make -V KNOWN_FORMATS</userinput></screen>
|
|
||||||
|
|
||||||
<table xml:id="doc-build-rendering-common-formats" frame="none">
|
|
||||||
<title>Common Output Formats</title>
|
|
||||||
|
|
||||||
<tgroup cols="3">
|
|
||||||
<thead>
|
|
||||||
<row>
|
|
||||||
<entry><varname>FORMATS</varname> Value</entry>
|
|
||||||
<entry>File Type</entry>
|
|
||||||
<entry>Description</entry>
|
|
||||||
</row>
|
|
||||||
</thead>
|
|
||||||
|
|
||||||
<tbody>
|
|
||||||
<row>
|
|
||||||
<entry><literal>html</literal></entry>
|
|
||||||
<entry><acronym>HTML</acronym>, one file</entry>
|
|
||||||
<entry>A single <filename>book.html</filename> or
|
|
||||||
<filename>article.html</filename>.</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry><literal>html-split</literal></entry>
|
|
||||||
<entry><acronym>HTML</acronym>, multiple files</entry>
|
|
||||||
<entry>Multiple <acronym>HTML</acronym> files, one for
|
|
||||||
each chapter or section, for use on a typical web
|
|
||||||
site.</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry><literal>pdf</literal></entry>
|
|
||||||
<entry><acronym>PDF</acronym></entry>
|
|
||||||
<entry>Portable Document Format</entry>
|
|
||||||
</row>
|
|
||||||
</tbody>
|
|
||||||
</tgroup>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<para>The default output format can vary by document, but is
|
|
||||||
usually <literal>html-split</literal>. Other formats are chosen
|
|
||||||
by setting <varname>FORMATS</varname> to a specific value.
|
|
||||||
Multiple output formats can be created at a single time by
|
|
||||||
setting <varname>FORMATS</varname> to a list of formats.</para>
|
|
||||||
|
|
||||||
<example xml:id="doc-build-formats-example-html">
|
|
||||||
<title>Build a Single HTML Output File</title>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>cd ~/doc/en_US.ISO8859-1/books/handbook</userinput>
|
|
||||||
&prompt.user; <userinput>make FORMATS=html</userinput></screen>
|
|
||||||
</example>
|
|
||||||
|
|
||||||
<example xml:id="doc-build-formats-example-html-split-pdf">
|
|
||||||
<title>Build HTML-Split and <acronym>PDF</acronym> Output
|
|
||||||
Files</title>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>cd ~/doc/en_US.ISO8859-1/books/handbook</userinput>
|
|
||||||
&prompt.user; <userinput>make FORMATS="html-split pdf"</userinput></screen>
|
|
||||||
</example>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="doc-build-toolset">
|
|
||||||
<title>The &os; Documentation Build Toolset</title>
|
|
||||||
|
|
||||||
<para>These are the tools used to build and install the
|
|
||||||
<acronym>FDP</acronym> documentation.</para>
|
|
||||||
|
|
||||||
<itemizedlist>
|
|
||||||
<listitem>
|
|
||||||
<para>The primary build tool is &man.make.1;, specifically
|
|
||||||
<application>Berkeley Make</application>.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Package building is handled by &os;'s
|
|
||||||
&man.pkg.create.1;.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>&man.gzip.1; is used to create compressed versions of
|
|
||||||
the document. &man.bzip2.1; archives are also supported.
|
|
||||||
&man.tar.1; is used for package building.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>&man.install.1; is used to install the
|
|
||||||
documentation.</para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="doc-build-makefiles">
|
|
||||||
|
|
||||||
<title>Understanding <filename>Makefile</filename>s in the
|
|
||||||
Documentation Tree</title>
|
|
||||||
|
|
||||||
<para>There are three main types of <filename>Makefile</filename>s
|
|
||||||
in the &os; Documentation Project tree.</para>
|
|
||||||
|
|
||||||
<itemizedlist>
|
|
||||||
<listitem>
|
|
||||||
<para><link linkend="sub-make">Subdirectory
|
|
||||||
<filename>Makefile</filename>s</link> simply pass
|
|
||||||
commands to those directories below them.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><link linkend="doc-make">Documentation
|
|
||||||
<filename>Makefile</filename>s</link> describe the
|
|
||||||
document(s) that should be produced from this
|
|
||||||
directory.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><link linkend="make-includes"><application>Make</application>
|
|
||||||
includes</link> are the glue that perform the document
|
|
||||||
production, and are usually of the form
|
|
||||||
<filename>doc.<replaceable>xxx</replaceable>.mk</filename>.</para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
|
|
||||||
<sect2 xml:id="sub-make">
|
|
||||||
<title>Subdirectory <filename>Makefile</filename>s</title>
|
|
||||||
|
|
||||||
<para>These <filename>Makefile</filename>s usually take the form
|
|
||||||
of:</para>
|
|
||||||
|
|
||||||
<programlisting>SUBDIR =articles
|
|
||||||
SUBDIR+=books
|
|
||||||
|
|
||||||
COMPAT_SYMLINK = en
|
|
||||||
|
|
||||||
DOC_PREFIX?= ${.CURDIR}/..
|
|
||||||
.include "${DOC_PREFIX}/share/mk/doc.project.mk"</programlisting>
|
|
||||||
|
|
||||||
<para>The first four non-empty lines define the &man.make.1;
|
|
||||||
variables <varname>SUBDIR</varname>,
|
|
||||||
<varname>COMPAT_SYMLINK</varname>, and
|
|
||||||
<varname>DOC_PREFIX</varname>.</para>
|
|
||||||
|
|
||||||
<para>The <varname>SUBDIR</varname> statement and
|
|
||||||
<varname>COMPAT_SYMLINK</varname> statement show how to
|
|
||||||
assign a value to a variable, overriding any previous
|
|
||||||
value.</para>
|
|
||||||
|
|
||||||
<para>The second <varname>SUBDIR</varname> statement shows how a
|
|
||||||
value is appended to the current value of a variable. The
|
|
||||||
<varname>SUBDIR</varname> variable is now <literal>articles
|
|
||||||
books</literal>.</para>
|
|
||||||
|
|
||||||
<para>The <varname>DOC_PREFIX</varname> assignment shows how a
|
|
||||||
value is assigned to the variable, but only if it is not
|
|
||||||
already defined. This is useful if
|
|
||||||
<varname>DOC_PREFIX</varname> is not where this
|
|
||||||
<filename>Makefile</filename> thinks it is - the user can
|
|
||||||
override this and provide the correct value.</para>
|
|
||||||
|
|
||||||
<para>What does it all mean? <varname>SUBDIR</varname>
|
|
||||||
mentions which subdirectories below this one the build process
|
|
||||||
should pass any work on to.</para>
|
|
||||||
|
|
||||||
<para><varname>COMPAT_SYMLINK</varname> is specific to
|
|
||||||
compatibility symlinks (amazingly enough) for languages to
|
|
||||||
their official encoding (<filename>doc/en</filename> would
|
|
||||||
point to <filename>en_US.ISO-8859-1</filename>).</para>
|
|
||||||
|
|
||||||
<para><varname>DOC_PREFIX</varname> is the path to the root of
|
|
||||||
the &os; Document Project tree. This is not always that easy
|
|
||||||
to find, and is also easily overridden, to allow for
|
|
||||||
flexibility. <varname>.CURDIR</varname> is a &man.make.1;
|
|
||||||
builtin variable with the path to the current
|
|
||||||
directory.</para>
|
|
||||||
|
|
||||||
<para>The final line includes the &os; Documentation Project's
|
|
||||||
project-wide &man.make.1; system file
|
|
||||||
<filename>doc.project.mk</filename> which is the glue which
|
|
||||||
converts these variables into build instructions.</para>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="doc-make">
|
|
||||||
<title>Documentation <filename>Makefile</filename>s</title>
|
|
||||||
|
|
||||||
<para>These <filename>Makefile</filename>s set &man.make.1;
|
|
||||||
variables that describe how to build the documentation
|
|
||||||
contained in that directory.</para>
|
|
||||||
|
|
||||||
<para>Here is an example:</para>
|
|
||||||
|
|
||||||
<programlisting>MAINTAINER=nik@FreeBSD.org
|
|
||||||
|
|
||||||
DOC?= book
|
|
||||||
|
|
||||||
FORMATS?= html-split html
|
|
||||||
|
|
||||||
INSTALL_COMPRESSED?= gz
|
|
||||||
INSTALL_ONLY_COMPRESSED?=
|
|
||||||
|
|
||||||
# SGML content
|
|
||||||
SRCS= book.xml
|
|
||||||
|
|
||||||
DOC_PREFIX?= ${.CURDIR}/../../..
|
|
||||||
|
|
||||||
.include "$(DOC_PREFIX)/share/mk/docproj.docbook.mk"</programlisting>
|
|
||||||
|
|
||||||
<para>The <varname>MAINTAINER</varname> variable allows
|
|
||||||
committers to claim ownership of a document in the &os;
|
|
||||||
Documentation Project, and take responsibility for maintaining
|
|
||||||
it.</para>
|
|
||||||
|
|
||||||
<para><varname>DOC</varname> is the name (sans the
|
|
||||||
<filename>.xml</filename> extension) of the main document
|
|
||||||
created by this directory. <varname>SRCS</varname> lists all
|
|
||||||
the individual files that make up the document. This should
|
|
||||||
also include important files in which a change should result
|
|
||||||
in a rebuild.</para>
|
|
||||||
|
|
||||||
<para><varname>FORMATS</varname> indicates the default formats
|
|
||||||
that should be built for this document.
|
|
||||||
<varname>INSTALL_COMPRESSED</varname> is the default list of
|
|
||||||
compression techniques that should be used in the document
|
|
||||||
build. <varname>INSTALL_ONLY_COMPRESS</varname>, empty by
|
|
||||||
default, should be non-empty if only compressed documents are
|
|
||||||
desired in the build.</para>
|
|
||||||
|
|
||||||
<para>The <varname>DOC_PREFIX</varname> and include statements
|
|
||||||
should be familiar already.</para>
|
|
||||||
</sect2>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="make-includes">
|
|
||||||
<title>&os; Documentation Project
|
|
||||||
<application>Make</application> Includes</title>
|
|
||||||
|
|
||||||
<para>&man.make.1; includes are best explained by inspection of
|
|
||||||
the code. Here are the system include files:</para>
|
|
||||||
|
|
||||||
<itemizedlist>
|
|
||||||
<listitem>
|
|
||||||
<para><filename>doc.project.mk</filename> is the main project
|
|
||||||
include file, which includes all the following include
|
|
||||||
files, as necessary.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><filename>doc.subdir.mk</filename> handles traversing of
|
|
||||||
the document tree during the build and install
|
|
||||||
processes.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><filename>doc.install.mk</filename> provides variables
|
|
||||||
that affect ownership and installation of documents.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><filename>doc.docbook.mk</filename> is included if
|
|
||||||
<varname>DOCFORMAT</varname> is <literal>docbook</literal>
|
|
||||||
and <varname>DOC</varname> is set.</para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
|
|
||||||
<sect2>
|
|
||||||
<title><filename>doc.project.mk</filename></title>
|
|
||||||
|
|
||||||
<para>By inspection:</para>
|
|
||||||
|
|
||||||
<programlisting>DOCFORMAT?= docbook
|
|
||||||
MAINTAINER?= doc@FreeBSD.org
|
|
||||||
|
|
||||||
PREFIX?= /usr/local
|
|
||||||
PRI_LANG?= en_US.ISO8859-1
|
|
||||||
|
|
||||||
.if defined(DOC)
|
|
||||||
.if ${DOCFORMAT} == "docbook"
|
|
||||||
.include "doc.docbook.mk"
|
|
||||||
.endif
|
|
||||||
.endif
|
|
||||||
|
|
||||||
.include "doc.subdir.mk"
|
|
||||||
.include "doc.install.mk"</programlisting>
|
|
||||||
|
|
||||||
<sect3>
|
|
||||||
|
|
||||||
<title>Variables</title>
|
|
||||||
|
|
||||||
<para><varname>DOCFORMAT</varname> and
|
|
||||||
<varname>MAINTAINER</varname> are assigned default values,
|
|
||||||
if these are not set by the document make file.</para>
|
|
||||||
|
|
||||||
<para><varname>PREFIX</varname> is the prefix under which the
|
|
||||||
<link linkend="tools">documentation building tools</link>
|
|
||||||
are installed. For normal package and port installation,
|
|
||||||
this is <filename>/usr/local</filename>.</para>
|
|
||||||
|
|
||||||
<para><varname>PRI_LANG</varname> should be set to whatever
|
|
||||||
language and encoding is natural amongst users these
|
|
||||||
documents are being built for. US English is the
|
|
||||||
default.</para>
|
|
||||||
|
|
||||||
<note>
|
|
||||||
<para><varname>PRI_LANG</varname> does not affect which
|
|
||||||
documents can, or even will, be built. Its main use is
|
|
||||||
creating links to commonly referenced documents into the
|
|
||||||
&os; documentation install root.</para>
|
|
||||||
</note>
|
|
||||||
</sect3>
|
|
||||||
|
|
||||||
<sect3>
|
|
||||||
<title>Conditionals</title>
|
|
||||||
|
|
||||||
<para>The <literal>.if defined(DOC)</literal> line is an
|
|
||||||
example of a &man.make.1; conditional which, like in other
|
|
||||||
programs, defines behavior if some condition is true or if
|
|
||||||
it is false. <literal>defined</literal> is a function which
|
|
||||||
returns whether the variable given is defined or not.</para>
|
|
||||||
|
|
||||||
<para><literal>.if ${DOCFORMAT} == "docbook"</literal>, next,
|
|
||||||
tests whether the <varname>DOCFORMAT</varname> variable is
|
|
||||||
<literal>"docbook"</literal>, and in this case, includes
|
|
||||||
<filename>doc.docbook.mk</filename>.</para>
|
|
||||||
|
|
||||||
<para>The two <literal>.endif</literal>s close the two above
|
|
||||||
conditionals, marking the end of their application.</para>
|
|
||||||
</sect3>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2>
|
|
||||||
<title><filename>doc.subdir.mk</filename></title>
|
|
||||||
|
|
||||||
<para>This file is too long to explain in detail. These notes
|
|
||||||
describe the most important features.</para>
|
|
||||||
|
|
||||||
<sect3>
|
|
||||||
<title>Variables</title>
|
|
||||||
|
|
||||||
<itemizedlist>
|
|
||||||
<listitem>
|
|
||||||
<para><varname>SUBDIR</varname> is a list of
|
|
||||||
subdirectories that the build process should go further
|
|
||||||
down into.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><varname>ROOT_SYMLINKS</varname> is the name of
|
|
||||||
directories that should be linked to the document
|
|
||||||
install root from their actual locations, if the current
|
|
||||||
language is the primary language (specified by
|
|
||||||
<varname>PRI_LANG</varname>).</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><varname>COMPAT_SYMLINK</varname> is described in
|
|
||||||
the
|
|
||||||
<link linkend="sub-make">Subdirectory Makefile</link>
|
|
||||||
section.</para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
</sect3>
|
|
||||||
|
|
||||||
<sect3>
|
|
||||||
<title>Targets and Macros</title>
|
|
||||||
|
|
||||||
<para>Dependencies are described by
|
|
||||||
<literal><replaceable>target</replaceable>:
|
|
||||||
<replaceable>dependency1 dependency2
|
|
||||||
...</replaceable></literal> tuples, where to build
|
|
||||||
<literal>target</literal>, the given
|
|
||||||
dependencies must be built first.</para>
|
|
||||||
|
|
||||||
<para>After that descriptive tuple, instructions on how to
|
|
||||||
build the target may be given, if the conversion process
|
|
||||||
between the target and its dependencies are not previously
|
|
||||||
defined, or if this particular conversion is not the same as
|
|
||||||
the default conversion method.</para>
|
|
||||||
|
|
||||||
<para>A special dependency <literal>.USE</literal> defines
|
|
||||||
the equivalent of a macro.</para>
|
|
||||||
|
|
||||||
<programlisting>_SUBDIRUSE: .USE
|
|
||||||
.for entry in ${SUBDIR}
|
|
||||||
@${ECHO} "===> ${DIRPRFX}${entry}"
|
|
||||||
@(cd ${.CURDIR}/${entry} && \
|
|
||||||
${MAKE} ${.TARGET:S/realpackage/package/:S/realinstall/install/} DIRPRFX=${DIRPRFX}${entry}/ )
|
|
||||||
.endfor</programlisting>
|
|
||||||
|
|
||||||
<para>In the above, <buildtarget>_SUBDIRUSE</buildtarget> is now
|
|
||||||
a macro which will execute the given commands when it is
|
|
||||||
listed as a dependency.</para>
|
|
||||||
|
|
||||||
<para>What sets this macro apart from other targets?
|
|
||||||
Basically, it is executed <emphasis>after</emphasis> the
|
|
||||||
instructions given in the build procedure it is listed as a
|
|
||||||
dependency to, and it does not adjust
|
|
||||||
<varname>.TARGET</varname>, which is the variable which
|
|
||||||
contains the name of the target currently being
|
|
||||||
built.</para>
|
|
||||||
|
|
||||||
<programlisting>clean: _SUBDIRUSE
|
|
||||||
rm -f ${CLEANFILES}</programlisting>
|
|
||||||
|
|
||||||
<para>In the above, <buildtarget>clean</buildtarget> will use
|
|
||||||
the <buildtarget>_SUBDIRUSE</buildtarget> macro after it has
|
|
||||||
executed the instruction
|
|
||||||
<command>rm -f ${CLEANFILES}</command>. In effect, this
|
|
||||||
causes <buildtarget>clean</buildtarget> to go further and
|
|
||||||
further down the directory tree, deleting built files as it
|
|
||||||
goes <emphasis>down</emphasis>, not on the way back
|
|
||||||
up.</para>
|
|
||||||
|
|
||||||
<sect4>
|
|
||||||
<title>Provided Targets</title>
|
|
||||||
|
|
||||||
<itemizedlist>
|
|
||||||
<listitem>
|
|
||||||
<para><buildtarget>install</buildtarget> and
|
|
||||||
<buildtarget>package</buildtarget> both go down the
|
|
||||||
directory tree calling the real versions of themselves
|
|
||||||
in the subdirectories
|
|
||||||
(<buildtarget>realinstall</buildtarget> and
|
|
||||||
<buildtarget>realpackage</buildtarget>
|
|
||||||
respectively).</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><buildtarget>clean</buildtarget> removes files
|
|
||||||
created by the build process (and goes down the
|
|
||||||
directory tree too).
|
|
||||||
<buildtarget>cleandir</buildtarget> does the same, and
|
|
||||||
also removes the object directory, if any.</para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
</sect4>
|
|
||||||
</sect3>
|
|
||||||
|
|
||||||
<sect3>
|
|
||||||
<title>More on Conditionals</title>
|
|
||||||
|
|
||||||
<itemizedlist>
|
|
||||||
<listitem>
|
|
||||||
<para><literal>exists</literal> is another condition
|
|
||||||
function which returns true if the given file
|
|
||||||
exists.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><literal>empty</literal> returns true if the given
|
|
||||||
variable is empty.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><literal>target</literal> returns true if the given
|
|
||||||
target does not already exist.</para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
</sect3>
|
|
||||||
|
|
||||||
<sect3>
|
|
||||||
<title>Looping Constructs in <command>make
|
|
||||||
(.for)</command></title>
|
|
||||||
|
|
||||||
<para><literal>.for</literal> provides a way to repeat a set
|
|
||||||
of instructions for each space-separated element in a
|
|
||||||
variable. It does this by assigning a variable to contain
|
|
||||||
the current element in the list being examined.</para>
|
|
||||||
|
|
||||||
<programlisting>_SUBDIRUSE: .USE
|
|
||||||
.for entry in ${SUBDIR}
|
|
||||||
@${ECHO} "===> ${DIRPRFX}${entry}"
|
|
||||||
@(cd ${.CURDIR}/${entry} && \
|
|
||||||
${MAKE} ${.TARGET:S/realpackage/package/:S/realinstall/install/} DIRPRFX=${DIRPRFX}${entry}/ )
|
|
||||||
.endfor</programlisting>
|
|
||||||
|
|
||||||
<para>In the above, if <varname>SUBDIR</varname> is empty, no
|
|
||||||
action is taken; if it has one or more elements, the
|
|
||||||
instructions between <literal>.for</literal> and
|
|
||||||
<literal>.endfor</literal> would repeat for every element,
|
|
||||||
with <varname>entry</varname> being replaced with the value
|
|
||||||
of the current element.</para>
|
|
||||||
</sect3>
|
|
||||||
</sect2>
|
|
||||||
</sect1>
|
|
||||||
</chapter>
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,170 +0,0 @@
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Copyright (c) 2013 Warren Block
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above
|
|
||||||
copyright notice, this list of conditions and the following
|
|
||||||
disclaimer in the documentation and/or other materials provided
|
|
||||||
with the distribution.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS
|
|
||||||
IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
||||||
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
||||||
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
||||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
$FreeBSD$
|
|
||||||
-->
|
|
||||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
|
||||||
xml:id="editor-config">
|
|
||||||
|
|
||||||
<title>Editor Configuration</title>
|
|
||||||
|
|
||||||
<para>Adjusting text editor configuration can make working on
|
|
||||||
document files quicker and easier, and help documents conform to
|
|
||||||
<acronym>FDP</acronym> guidelines.</para>
|
|
||||||
|
|
||||||
<sect1 xml:id="editor-config-vim">
|
|
||||||
<title><application>Vim</application></title>
|
|
||||||
|
|
||||||
<para>Install from <package>editors/vim</package>
|
|
||||||
or <package>editors/vim-lite</package>.</para>
|
|
||||||
|
|
||||||
<sect2 xml:id="editor-config-vim-config">
|
|
||||||
<title>Configuration</title>
|
|
||||||
|
|
||||||
<para>Edit <filename>~/.vimrc</filename>, adding these
|
|
||||||
lines:</para>
|
|
||||||
|
|
||||||
<programlisting>if has("autocmd")
|
|
||||||
au BufNewFile,BufRead *.sgml,*.ent,*.xsl,*.xml call Set_SGML()
|
|
||||||
au BufNewFile,BufRead *.[1-9] call ShowSpecial()
|
|
||||||
endif " has(autocmd)
|
|
||||||
|
|
||||||
function Set_Highlights()
|
|
||||||
"match ExtraWhitespace /^\s* \s*\|\s\+$/
|
|
||||||
highlight default link OverLength ErrorMsg
|
|
||||||
match OverLength /\%71v.\+/
|
|
||||||
return 0
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function ShowSpecial()
|
|
||||||
setlocal list listchars=tab:>>,trail:*,eol:$
|
|
||||||
hi def link nontext ErrorMsg
|
|
||||||
return 0
|
|
||||||
endfunction " ShowSpecial()
|
|
||||||
|
|
||||||
function Set_SGML()
|
|
||||||
setlocal number
|
|
||||||
syn match sgmlSpecial "&[^;]*;"
|
|
||||||
setlocal syntax=sgml
|
|
||||||
setlocal filetype=xml
|
|
||||||
setlocal shiftwidth=2
|
|
||||||
setlocal textwidth=70
|
|
||||||
setlocal tabstop=8
|
|
||||||
setlocal softtabstop=2
|
|
||||||
setlocal formatprg="fmt -p"
|
|
||||||
setlocal autoindent
|
|
||||||
setlocal smartindent
|
|
||||||
" Rewrap paragraphs
|
|
||||||
noremap P gqj
|
|
||||||
" Replace spaces with tabs
|
|
||||||
noremap T :s/ /\t/<CR>
|
|
||||||
call ShowSpecial()
|
|
||||||
call Set_Highlights()
|
|
||||||
return 0
|
|
||||||
endfunction " Set_SGML()</programlisting>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="editor-config-vim-use">
|
|
||||||
<title>Use</title>
|
|
||||||
|
|
||||||
<para>Press <keycap>P</keycap> to reformat paragraphs or text that has been selected in Visual mode. Press
|
|
||||||
<keycap>T</keycap> to replace groups of eight spaces with a
|
|
||||||
tab.</para>
|
|
||||||
</sect2>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="editor-config-emacs">
|
|
||||||
<title><application>Emacs</application></title>
|
|
||||||
|
|
||||||
<para>Install from
|
|
||||||
<package>editors/emacs</package>
|
|
||||||
or <package>editors/xemacs</package>.</para>
|
|
||||||
|
|
||||||
<para>Edit <filename>~/.emacs</filename>, adding this
|
|
||||||
line:</para>
|
|
||||||
|
|
||||||
<programlisting>(add-hook 'nxml-mode-hook 'turn-on-auto-fill)</programlisting>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="editor-config-nano">
|
|
||||||
<title><application>nano</application></title>
|
|
||||||
|
|
||||||
<para>Install from
|
|
||||||
<package>editors/nano</package> or
|
|
||||||
<package>editors/nano-devel</package>.</para>
|
|
||||||
|
|
||||||
<sect2 xml:id="editor-config-nano-config">
|
|
||||||
<title>Configuration</title>
|
|
||||||
|
|
||||||
<para>Copy the sample <acronym>XML</acronym> syntax highlight
|
|
||||||
file to the user's home directory:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>cp /usr/local/share/nano/xml.nanorc ~/.nanorc</userinput></screen>
|
|
||||||
|
|
||||||
<para>Add these lines to the new
|
|
||||||
<filename>~/.nanorc</filename>.</para>
|
|
||||||
|
|
||||||
<programlisting>syntax "xml" "\.([jrs]html?|xml|xslt?)$"
|
|
||||||
# trailing whitespace
|
|
||||||
color ,blue "[[:space:]]+$"
|
|
||||||
# multiples of eight spaces at the start a line
|
|
||||||
# (after zero or more tabs) should be a tab
|
|
||||||
color ,blue "^([TAB]*[ ]{8})+"
|
|
||||||
# tabs after spaces
|
|
||||||
color ,yellow "( )+TAB"
|
|
||||||
# highlight indents that have an odd number of spaces
|
|
||||||
color ,red "^(([ ]{2})+|(TAB+))*[ ]{1}[^ ]{1}"
|
|
||||||
# lines longer than 70 characters
|
|
||||||
color ,yellow "^(.{71})|(TAB.{63})|(TAB{2}.{55})|(TAB{3}.{47}).+$"</programlisting>
|
|
||||||
|
|
||||||
<para>Process the file to create embedded tabs:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>perl -i'' -pe 's/TAB/\t/g' ~/.nanorc</userinput></screen>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="editor-config-nano-use">
|
|
||||||
<title>Use</title>
|
|
||||||
|
|
||||||
<para>Specify additional helpful options when running the
|
|
||||||
editor:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>nano -AKipwz -r 70 -T8 <replaceable>chapter.xml</replaceable></userinput></screen>
|
|
||||||
|
|
||||||
<para>Users of &man.csh.1; can define an alias in
|
|
||||||
<filename>~/.cshrc</filename> to automate these
|
|
||||||
options:</para>
|
|
||||||
|
|
||||||
<programlisting>alias nano "nano -AKipwz -r 70 -T8"</programlisting>
|
|
||||||
|
|
||||||
<para>After the alias is defined, the options will be added
|
|
||||||
automatically:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>nano <replaceable>chapter.xml</replaceable></userinput></screen>
|
|
||||||
</sect2>
|
|
||||||
</sect1>
|
|
||||||
</chapter>
|
|
|
@ -1,162 +0,0 @@
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Copyright (c) 2000 Nik Clayton, All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
|
||||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
|
||||||
copyright notice, this list of conditions and the following
|
|
||||||
disclaimer as the first lines of this file unmodified.
|
|
||||||
|
|
||||||
2. Redistributions in compiled form (transformed to other DTDs,
|
|
||||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
|
||||||
the above copyright notice, this list of conditions and the
|
|
||||||
following disclaimer in the documentation and/or other materials
|
|
||||||
provided with the distribution.
|
|
||||||
|
|
||||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
|
||||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
||||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
$FreeBSD$
|
|
||||||
-->
|
|
||||||
<appendix xmlns="http://docbook.org/ns/docbook"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
|
||||||
xml:id="examples">
|
|
||||||
|
|
||||||
<title>Examples</title>
|
|
||||||
|
|
||||||
<para>These examples are not exhaustive—they do not contain
|
|
||||||
all the elements that might be desirable to use, particularly in a
|
|
||||||
document's front matter. For more examples of DocBook markup,
|
|
||||||
examine the <acronym>XML</acronym> source for this and other
|
|
||||||
documents available in the <application>Subversion</application>
|
|
||||||
<literal>doc</literal> repository, or available online starting at
|
|
||||||
<uri
|
|
||||||
xlink:href="http://svnweb.FreeBSD.org/doc/">http://svnweb.FreeBSD.org/doc/</uri>.</para>
|
|
||||||
|
|
||||||
<sect1 xml:id="examples-docbook-book">
|
|
||||||
<title>DocBook <tag>book</tag></title>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title>DocBook <tag>book</tag></title>
|
|
||||||
|
|
||||||
<programlisting><!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
|
|
||||||
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
|
|
||||||
|
|
||||||
<tag class="starttag">book xmlns="http://docbook.org/ns/docbook"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
|
||||||
xml:lang="en"</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">info</tag>
|
|
||||||
<tag class="starttag">title</tag>An Example Book<tag class="endtag">title</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">author</tag>
|
|
||||||
<tag class="starttag">personname</tag>
|
|
||||||
<tag class="starttag">firstname</tag>Your first name<tag class="endtag">firstname</tag>
|
|
||||||
<tag class="starttag">surname</tag>Your surname<tag class="endtag">surname</tag>
|
|
||||||
<tag class="endtag">personname</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">affiliation</tag>
|
|
||||||
<tag class="starttag">address</tag>
|
|
||||||
<tag class="starttag">email</tag>foo@example.com<tag class="endtag">email</tag>
|
|
||||||
<tag class="endtag">address</tag>
|
|
||||||
<tag class="endtag">affiliation</tag>
|
|
||||||
<tag class="endtag">author</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">copyright</tag>
|
|
||||||
<tag class="starttag">year</tag>2000<tag class="endtag">year</tag>
|
|
||||||
<tag class="starttag">holder</tag>Copyright string here<tag class="endtag">holder</tag>
|
|
||||||
<tag class="endtag">copyright</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">abstract</tag>
|
|
||||||
<tag class="starttag">para</tag>If your book has an abstract then it should go here.<tag class="endtag">para</tag>
|
|
||||||
<tag class="endtag">abstract</tag>
|
|
||||||
<tag class="endtag">info</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">preface</tag>
|
|
||||||
<tag class="starttag">title</tag>Preface<tag class="endtag">title</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">para</tag>Your book may have a preface, in which case it should be placed
|
|
||||||
here.<tag class="endtag">para</tag>
|
|
||||||
<tag class="endtag">preface</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">chapter</tag>
|
|
||||||
<tag class="starttag">title</tag>My First Chapter<tag class="endtag">title</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">para</tag>This is the first chapter in my book.<tag class="endtag">para</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">sect1</tag>
|
|
||||||
<tag class="starttag">title</tag>My First Section<tag class="endtag">title</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">para</tag>This is the first section in my book.<tag class="endtag">para</tag>
|
|
||||||
<tag class="endtag">sect1</tag>
|
|
||||||
<tag class="endtag">chapter</tag>
|
|
||||||
<tag class="endtag">book</tag></programlisting>
|
|
||||||
</example>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="examples-docbook-article">
|
|
||||||
<title>DocBook <tag>article</tag></title>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title>DocBook <tag>article</tag></title>
|
|
||||||
|
|
||||||
<programlisting><!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
|
|
||||||
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
|
|
||||||
|
|
||||||
<tag class="starttag">article xmlns="http://docbook.org/ns/docbook"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
|
||||||
xml:lang="en"</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">info</tag>
|
|
||||||
<tag class="starttag">title</tag>An Example Article<tag class="endtag">title</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">author</tag>
|
|
||||||
<tag class="starttag">personname</tag>
|
|
||||||
<tag class="starttag">firstname</tag>Your first name<tag class="endtag">firstname</tag>
|
|
||||||
<tag class="starttag">surname</tag>Your surname<tag class="endtag">surname</tag>
|
|
||||||
<tag class="endtag">personname</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">affiliation</tag>
|
|
||||||
<tag class="starttag">address</tag>
|
|
||||||
<tag class="starttag">email</tag>foo@example.com<tag class="endtag">email</tag>
|
|
||||||
<tag class="endtag">address</tag>
|
|
||||||
<tag class="endtag">affiliation</tag>
|
|
||||||
<tag class="endtag">author</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">copyright</tag>
|
|
||||||
<tag class="starttag">year</tag>2000<tag class="endtag">year</tag>
|
|
||||||
<tag class="starttag">holder</tag>Copyright string here<tag class="endtag">holder</tag>
|
|
||||||
<tag class="endtag">copyright</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">abstract</tag>
|
|
||||||
<tag class="starttag">para</tag>If your article has an abstract then it should go here.<tag class="endtag">para</tag>
|
|
||||||
<tag class="endtag">abstract</tag>
|
|
||||||
<tag class="endtag">info</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">sect1</tag>
|
|
||||||
<tag class="starttag">title</tag>My First Section<tag class="endtag">title</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">para</tag>This is the first section in my article.<tag class="endtag">para</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">sect2</tag>
|
|
||||||
<tag class="starttag">title</tag>My First Sub-Section<tag class="endtag">title</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">para</tag>This is the first sub-section in my article.<tag class="endtag">para</tag>
|
|
||||||
<tag class="endtag">sect2</tag>
|
|
||||||
<tag class="endtag">sect1</tag>
|
|
||||||
<tag class="endtag">article</tag></programlisting>
|
|
||||||
</example>
|
|
||||||
</sect1>
|
|
||||||
</appendix>
|
|
|
@ -1,255 +0,0 @@
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
|
||||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
|
||||||
copyright notice, this list of conditions and the following
|
|
||||||
disclaimer as the first lines of this file unmodified.
|
|
||||||
|
|
||||||
2. Redistributions in compiled form (transformed to other DTDs,
|
|
||||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
|
||||||
the above copyright notice, this list of conditions and the
|
|
||||||
following disclaimer in the documentation and/or other materials
|
|
||||||
provided with the distribution.
|
|
||||||
|
|
||||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
|
||||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
||||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
$FreeBSD$
|
|
||||||
-->
|
|
||||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="overview">
|
|
||||||
<title>Overview</title>
|
|
||||||
|
|
||||||
<para>Welcome to the &os; Documentation Project
|
|
||||||
(<acronym>FDP</acronym>). Quality documentation is crucial
|
|
||||||
to the success of &os;, and we value your contributions very
|
|
||||||
highly.</para>
|
|
||||||
|
|
||||||
<para>This document describes how the <acronym>FDP</acronym> is
|
|
||||||
organized, how to write and submit documentation, and how to
|
|
||||||
effectively use the available tools.</para>
|
|
||||||
|
|
||||||
<para>Everyone is welcome to contribute to the
|
|
||||||
<acronym>FDP</acronym>. Willingness to contribute is the only
|
|
||||||
membership requirement.</para>
|
|
||||||
|
|
||||||
<para>This primer shows how to:</para>
|
|
||||||
|
|
||||||
<itemizedlist>
|
|
||||||
<listitem>
|
|
||||||
<para>Identify which parts of &os; are maintained by the
|
|
||||||
<acronym>FDP</acronym>.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Install the required documentation tools and files.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Make changes to the documentation.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Submit changes back for review and inclusion in the &os;
|
|
||||||
documentation.</para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
|
|
||||||
<sect1 xml:id="overview-doc">
|
|
||||||
<title>The &os; Documentation Set</title>
|
|
||||||
|
|
||||||
<para>The <acronym>FDP</acronym> is responsible for four
|
|
||||||
categories of &os; documentation.</para>
|
|
||||||
|
|
||||||
<itemizedlist>
|
|
||||||
<listitem>
|
|
||||||
<para><emphasis>Handbook</emphasis>: The Handbook is the
|
|
||||||
comprehensive online resource and reference for &os;
|
|
||||||
users.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><emphasis>FAQ</emphasis>: The <acronym>FAQ</acronym>
|
|
||||||
uses a short question and answer format to address questions
|
|
||||||
that are frequently asked on the various mailing lists and
|
|
||||||
forums devoted to &os;. This format does not permit long
|
|
||||||
and comprehensive answers.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><emphasis>Manual pages</emphasis>: The English language
|
|
||||||
system manual pages are usually not written by the
|
|
||||||
<acronym>FDP</acronym>, as they are part of the base system.
|
|
||||||
However, the <acronym>FDP</acronym> can reword parts of
|
|
||||||
existing manual pages to make them clearer or to correct
|
|
||||||
inaccuracies.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><emphasis>Web site</emphasis>: This is the main &os;
|
|
||||||
presence on the web, visible at <link xlink:href="http://www.freebsd.org/index.html">http://www.FreeBSD.org/</link>
|
|
||||||
and many mirrors around the world. The web site is
|
|
||||||
typically a new user's first exposure to &os;.</para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
|
|
||||||
<para>Translation teams are responsible for translating the
|
|
||||||
Handbook and web site into different languages. Manual pages
|
|
||||||
are not translated at present.</para>
|
|
||||||
|
|
||||||
<para>Documentation source for the &os; web site, Handbook, and
|
|
||||||
<acronym>FAQ</acronym> is available in the documentation
|
|
||||||
repository at
|
|
||||||
<literal>https://svn.FreeBSD.org/doc/</literal>.</para>
|
|
||||||
|
|
||||||
<para>Source for manual pages is available in a separate
|
|
||||||
source repository located at
|
|
||||||
<literal>https://svn.FreeBSD.org/base/</literal>.</para>
|
|
||||||
|
|
||||||
<para>Documentation commit messages are visible with
|
|
||||||
<command>svn log</command>. Commit messages are also
|
|
||||||
archived at <uri xlink:href="&a.svn-doc-all.url;">&a.svn-doc-all.url;</uri>.</para>
|
|
||||||
|
|
||||||
<para>Web frontends to both of these repositories are available at <link
|
|
||||||
xlink:href="https://svnweb.FreeBSD.org/doc/"></link> and <link
|
|
||||||
xlink:href="https://svnweb.FreeBSD.org/base/"></link>.</para>
|
|
||||||
|
|
||||||
<para>Many people have written tutorials or how-to articles about
|
|
||||||
&os;. Some are stored as part of the <acronym>FDP</acronym>
|
|
||||||
files. In other cases, the author has decided to keep the
|
|
||||||
documentation separate. The <acronym>FDP</acronym> endeavors to
|
|
||||||
provide links to as much of this external documentation as
|
|
||||||
possible.</para>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="overview-quick-start">
|
|
||||||
<title>Quick Start</title>
|
|
||||||
|
|
||||||
<para>Some preparatory steps must be taken before editing the &os;
|
|
||||||
documentation. First, subscribe to the &a.doc;. Some team
|
|
||||||
members also interact on the <literal>#bsddocs</literal>
|
|
||||||
<acronym>IRC</acronym> channel on
|
|
||||||
<link xlink:href="http://www.efnet.org/">EFnet</link>. These people
|
|
||||||
can help with questions or problems involving the
|
|
||||||
documentation.</para>
|
|
||||||
|
|
||||||
<procedure>
|
|
||||||
<step>
|
|
||||||
<para>Install the
|
|
||||||
<package>textproc/docproj</package>
|
|
||||||
package or port. This meta-port installs all of the
|
|
||||||
software needed to edit and build &os; documentation.</para>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>Install a local working copy of the documentation from
|
|
||||||
the &os; repository in
|
|
||||||
<filename>~/doc</filename> (see
|
|
||||||
<xref linkend="working-copy"/>).</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>svn checkout https://svn.FreeBSD.org/doc/head <replaceable>~/doc</replaceable></userinput></screen>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>Configure the text editor:</para>
|
|
||||||
|
|
||||||
<itemizedlist>
|
|
||||||
<listitem>
|
|
||||||
<para>Word wrap set to 70 characters.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Tab stops set to 2.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Replace each group of 8 leading spaces with a
|
|
||||||
single tab.</para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
|
|
||||||
<para>Specific editor configurations are listed in
|
|
||||||
<xref linkend="editor-config"/>.</para>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>Update the local working copy:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>svn up <replaceable>~/doc</replaceable></userinput></screen>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>Edit the documentation files that require changes. If a
|
|
||||||
file needs major changes, consult the mailing list for
|
|
||||||
input.</para>
|
|
||||||
|
|
||||||
<para>References to tag and entity usage can be found in
|
|
||||||
<xref linkend="xhtml-markup"/> and
|
|
||||||
<xref linkend="docbook-markup"/>.</para>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>After editing, check for problems by running:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>igor -R filename.xml | less -RS</userinput></screen>
|
|
||||||
|
|
||||||
<para>Review the output and edit the file to fix any problems
|
|
||||||
shown, then rerun the command to find any remaining
|
|
||||||
problems. Repeat until all of the errors are
|
|
||||||
resolved.</para>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para><emphasis>Always</emphasis> build-test changes before
|
|
||||||
submitting them. Running <userinput>make</userinput> in the
|
|
||||||
top-level directory of the documentation being edited will
|
|
||||||
generate that documentation in split HTML format. For
|
|
||||||
example, to build the English version of the Handbook in
|
|
||||||
<acronym>HTML</acronym>, run <command>make</command> in the
|
|
||||||
<filename>en_US.ISO8859-1/books/handbook/</filename>
|
|
||||||
directory.</para>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>When changes are complete and tested, generate a
|
|
||||||
<quote>diff file</quote>:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>cd ~/doc</userinput>
|
|
||||||
&prompt.user; <userinput>svn diff > <replaceable>bsdinstall</replaceable>.diff.txt</userinput></screen>
|
|
||||||
|
|
||||||
<para>Give the diff file a descriptive name. In the example
|
|
||||||
above, changes have been made to the
|
|
||||||
<filename>bsdinstall</filename> portion of
|
|
||||||
the Handbook.</para>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>Submit the diff file using the web-based
|
|
||||||
<link xlink:href="&url.base;/support.html#gnats">Problem
|
|
||||||
Report</link> system. If using
|
|
||||||
the web form, enter a synopsis of
|
|
||||||
<emphasis>[patch] <replaceable>short description of
|
|
||||||
problem</replaceable></emphasis>. Select the category
|
|
||||||
<literal>docs</literal> and the class
|
|
||||||
<literal>doc-bug</literal>. In the body of the message,
|
|
||||||
enter a short description of the changes and any important
|
|
||||||
details about them. Use the
|
|
||||||
<guibutton>[ Browse... ]</guibutton> button to
|
|
||||||
attach the diff file.</para>
|
|
||||||
</step>
|
|
||||||
</procedure>
|
|
||||||
</sect1>
|
|
||||||
</chapter>
|
|
|
@ -1,823 +0,0 @@
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!--
|
|
||||||
The FreeBSD Documentation Project
|
|
||||||
$FreeBSD$
|
|
||||||
-->
|
|
||||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
|
||||||
xml:id="po-translations">
|
|
||||||
|
|
||||||
<title><acronym>PO</acronym> Translations</title>
|
|
||||||
|
|
||||||
<sect1 xml:id="po-translations-introduction">
|
|
||||||
<title>Introduction</title>
|
|
||||||
|
|
||||||
<para>The <link
|
|
||||||
xlink:href="http://www.gnu.org/software/gettext/"><acronym>GNU</acronym>
|
|
||||||
<application>gettext</application></link> system offers
|
|
||||||
translators an easy way to create and maintain translations of
|
|
||||||
documents. Translatable strings are extracted from the original
|
|
||||||
document into a <acronym>PO</acronym> (Portable Object) file.
|
|
||||||
Translated versions of the strings are entered with a separate
|
|
||||||
editor. The strings can be used directly or built into a
|
|
||||||
complete translated version of the original document.</para>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="po-translations-quick-start">
|
|
||||||
<title>Quick Start</title>
|
|
||||||
|
|
||||||
<para>The procedure shown in
|
|
||||||
<xref linkend="overview-quick-start"/> is assumed to have
|
|
||||||
already been performed, but the <literal>TRANSLATOR</literal>
|
|
||||||
option must be enabled in the
|
|
||||||
<package role="port">textproc/docproj</package> port. If that
|
|
||||||
option was not enabled, display the options menu and enable
|
|
||||||
it, then reinstall the port:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.root; <userinput>cd /usr/ports/textproc/docproj</userinput>
|
|
||||||
&prompt.root; <userinput>make config</userinput>
|
|
||||||
&prompt.root; <userinput>make clean deinstall install clean</userinput></screen>
|
|
||||||
|
|
||||||
<para>This example shows the creation of a Spanish translation of
|
|
||||||
the short <link xlink:href="&url.articles.leap-seconds.en;">Leap
|
|
||||||
Seconds</link> article.</para>
|
|
||||||
|
|
||||||
<procedure xml:id="po-translations-quick-start-install-po-editor">
|
|
||||||
<title>Install a <acronym>PO</acronym> Editor</title>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>A <acronym>PO</acronym> editor is needed to edit
|
|
||||||
translation files. This example uses
|
|
||||||
<package role="ports">editors/poedit</package>.</para>
|
|
||||||
|
|
||||||
<screen>&prompt.root; <userinput>cd /usr/ports/editors/poedit</userinput>
|
|
||||||
&prompt.root; <userinput>make install clean</userinput></screen>
|
|
||||||
</step>
|
|
||||||
</procedure>
|
|
||||||
|
|
||||||
<procedure xml:id="po-translations-quick-start-initial-setup">
|
|
||||||
<title>Initial Setup</title>
|
|
||||||
|
|
||||||
<para>When a new translation is first created, the directory
|
|
||||||
structure and <filename>Makefile</filename> must be created or
|
|
||||||
copied from the English original:</para>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>Create a directory for the new translation. The
|
|
||||||
English article source is in
|
|
||||||
<filename>~/doc/en_US.ISO8859-1/articles/leap-seconds/</filename>.
|
|
||||||
The Spanish translation will go in
|
|
||||||
<filename>~/doc/es_ES.ISO8859-1/articles/leap-seconds/</filename>.
|
|
||||||
The path is the same except for the name of the language
|
|
||||||
directory.</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>svn mkdir --parents ~/doc/es_ES.ISO8859-1/articles/leap-seconds/</userinput></screen>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>Copy the <filename>Makefile</filename> from the original
|
|
||||||
document into the translation directory:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>svn cp ~/doc/en_US.ISO8859-1/articles/leap-seconds/Makefile \
|
|
||||||
~/doc/es_ES.ISO8859-1/articles/leap-seconds/</userinput></screen>
|
|
||||||
</step>
|
|
||||||
</procedure>
|
|
||||||
|
|
||||||
<procedure xml:id="po-translations-quick-start-translation">
|
|
||||||
<title>Translation</title>
|
|
||||||
|
|
||||||
<para>Translating a document consists of two steps: extracting
|
|
||||||
translatable strings from the original document, and entering
|
|
||||||
translations for those strings. These steps are repeated
|
|
||||||
until the translator feels that enough of the document has
|
|
||||||
been translated to produce a usable translated
|
|
||||||
document.</para>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>Extract the translatable strings from the original
|
|
||||||
English version into a <acronym>PO</acronym> file:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>cd ~/doc/es_ES.ISO8859-1/articles/leap-seconds/</userinput>
|
|
||||||
&prompt.user; <userinput>make po</userinput></screen>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>Use a <acronym>PO</acronym> editor to enter translations
|
|
||||||
in the <acronym>PO</acronym> file. There are several
|
|
||||||
different editors available. <filename>poedit</filename>
|
|
||||||
from <package role="port">editors/poedit</package> is shown
|
|
||||||
here.</para>
|
|
||||||
|
|
||||||
<para>The <acronym>PO</acronym> file name is the
|
|
||||||
two-character language code followed by an underline and a
|
|
||||||
two-character region code. For Spanish, the file name is
|
|
||||||
<filename>es_ES.po</filename>.</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>poedit es_ES.po</userinput></screen>
|
|
||||||
</step>
|
|
||||||
</procedure>
|
|
||||||
|
|
||||||
<procedure xml:id="po-translations-quick-generating-a-translated-document">
|
|
||||||
<title>Generating a Translated Document</title>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>Generate the translated document:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>cd ~/doc/es_ES.ISO8859-1/articles/leap-seconds/</userinput>
|
|
||||||
&prompt.user; <userinput>make tran</userinput></screen>
|
|
||||||
|
|
||||||
<para>The name of the generated document matches the name
|
|
||||||
of the English original, usually
|
|
||||||
<filename>article.xml</filename> for articles or
|
|
||||||
<filename>book.xml</filename> for books.</para>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>Check the generated file by rendering it to
|
|
||||||
<acronym>HTML</acronym> and viewing it with a
|
|
||||||
web browser:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>make FORMATS=html</userinput>
|
|
||||||
&prompt.user; <userinput>firefox article.html</userinput></screen>
|
|
||||||
</step>
|
|
||||||
</procedure>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="po-translations-creating">
|
|
||||||
<title>Creating New Translations</title>
|
|
||||||
|
|
||||||
<para>The first step to creating a new translated document is
|
|
||||||
locating or creating a directory to hold it. &os; puts
|
|
||||||
translated documents in a subdirectory named for their
|
|
||||||
language and region in the format
|
|
||||||
<filename><replaceable>lang</replaceable>_<replaceable>REGION</replaceable></filename>.
|
|
||||||
<replaceable>lang</replaceable> is a two-character lowercase
|
|
||||||
code. It is followed by an underscore character and then the
|
|
||||||
two-character uppercase <replaceable>REGION</replaceable>
|
|
||||||
code.</para>
|
|
||||||
|
|
||||||
<table xml:id="po-translations-language-names" frame="none">
|
|
||||||
<title>Language Names</title>
|
|
||||||
|
|
||||||
<tgroup cols="5">
|
|
||||||
<thead>
|
|
||||||
<row>
|
|
||||||
<entry>Language</entry>
|
|
||||||
<entry>Region</entry>
|
|
||||||
<entry>Translated Directory Name</entry>
|
|
||||||
<entry><acronym>PO</acronym> File Name</entry>
|
|
||||||
<entry>Character Set</entry>
|
|
||||||
</row>
|
|
||||||
</thead>
|
|
||||||
|
|
||||||
<tbody>
|
|
||||||
<row>
|
|
||||||
<entry>English</entry>
|
|
||||||
<entry>United States</entry>
|
|
||||||
<entry><filename>en_US.ISO8859-1</filename></entry>
|
|
||||||
<entry><filename>en_US.po</filename></entry>
|
|
||||||
<entry><acronym>ISO</acronym> 8859-1</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Bengali</entry>
|
|
||||||
<entry>Bangladesh</entry>
|
|
||||||
<entry><filename>bn_BD.UTF-8</filename></entry>
|
|
||||||
<entry><filename>bn_BD.po</filename></entry>
|
|
||||||
<entry><acronym>UTF</acronym>-8</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Danish</entry>
|
|
||||||
<entry>Denmark</entry>
|
|
||||||
<entry><filename>da_DK.ISO8859-1</filename></entry>
|
|
||||||
<entry><filename>da_DK.po</filename></entry>
|
|
||||||
<entry><acronym>ISO</acronym> 8859-1</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>German</entry>
|
|
||||||
<entry>Germany</entry>
|
|
||||||
<entry><filename>de_DE.ISO8859-1</filename></entry>
|
|
||||||
<entry><filename>de_DE.po</filename></entry>
|
|
||||||
<entry><acronym>ISO</acronym> 8859-1</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Greek</entry>
|
|
||||||
<entry>Greece</entry>
|
|
||||||
<entry><filename>el_GR.ISO8859-7</filename></entry>
|
|
||||||
<entry><filename>el_GR.po</filename></entry>
|
|
||||||
<entry><acronym>ISO</acronym> 8859-7</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Spanish</entry>
|
|
||||||
<entry>Spain</entry>
|
|
||||||
<entry><filename>es_ES.ISO8859-1</filename></entry>
|
|
||||||
<entry><filename>es_ES.po</filename></entry>
|
|
||||||
<entry><acronym>ISO</acronym> 8859-1</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>French</entry>
|
|
||||||
<entry>France</entry>
|
|
||||||
<entry><filename>fr_FR.ISO8859-1</filename></entry>
|
|
||||||
<entry><filename>fr_FR.po</filename></entry>
|
|
||||||
<entry><acronym>ISO</acronym> 8859-1</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Hungarian</entry>
|
|
||||||
<entry>Hungary</entry>
|
|
||||||
<entry><filename>hu_HU.ISO8859-2</filename></entry>
|
|
||||||
<entry><filename>hu_HU.po</filename></entry>
|
|
||||||
<entry><acronym>ISO</acronym> 8859-2</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Italian</entry>
|
|
||||||
<entry>Italy</entry>
|
|
||||||
<entry><filename>it_IT.ISO8859-15</filename></entry>
|
|
||||||
<entry><filename>it_IT.po</filename></entry>
|
|
||||||
<entry><acronym>ISO</acronym> 8859-15</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Japanese</entry>
|
|
||||||
<entry>Japan</entry>
|
|
||||||
<entry><filename>ja_JP.eucJP</filename></entry>
|
|
||||||
<entry><filename>ja_JP.po</filename></entry>
|
|
||||||
<entry><acronym>EUC</acronym> JP</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Korean</entry>
|
|
||||||
<entry>Korea</entry>
|
|
||||||
<entry><filename>ko_KR.UTF-8</filename></entry>
|
|
||||||
<entry><filename>ko_KR.po</filename></entry>
|
|
||||||
<entry><acronym>UTF</acronym>-8</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Mongolian</entry>
|
|
||||||
<entry>Mongolia</entry>
|
|
||||||
<entry><filename>mn_MN.UTF-8</filename></entry>
|
|
||||||
<entry><filename>mn_MN.po</filename></entry>
|
|
||||||
<entry><acronym>UTF</acronym>-8</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Dutch</entry>
|
|
||||||
<entry>Netherlands</entry>
|
|
||||||
<entry><filename>nl_NL.ISO8859-1</filename></entry>
|
|
||||||
<entry><filename>nl_NL.po</filename></entry>
|
|
||||||
<entry><acronym>ISO</acronym> 8859-1</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Norwegian</entry>
|
|
||||||
<entry>Norway</entry>
|
|
||||||
<entry><filename>no_NO.ISO8859-1</filename></entry>
|
|
||||||
<entry><filename>no_NO.po</filename></entry>
|
|
||||||
<entry><acronym>ISO</acronym> 8859-1</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Polish</entry>
|
|
||||||
<entry>Poland</entry>
|
|
||||||
<entry><filename>pl_PL.ISO8859-2</filename></entry>
|
|
||||||
<entry><filename>pl_PL.po</filename></entry>
|
|
||||||
<entry><acronym>ISO</acronym> 8859-2</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Portuguese</entry>
|
|
||||||
<entry>Brazil</entry>
|
|
||||||
<entry><filename>pt_BR.ISO8859-1</filename></entry>
|
|
||||||
<entry><filename>pt_BR.po</filename></entry>
|
|
||||||
<entry><acronym>ISO</acronym> 8859-1</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Russian</entry>
|
|
||||||
<entry>Russia</entry>
|
|
||||||
<entry><filename>ru_RU.KOI8-R</filename></entry>
|
|
||||||
<entry><filename>ru_RU.po</filename></entry>
|
|
||||||
<entry><acronym>KOI</acronym>8-R</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Serbian</entry>
|
|
||||||
<entry>Serbia</entry>
|
|
||||||
<entry><filename>sr_YU.ISO8859-2</filename></entry>
|
|
||||||
<entry><filename>sr_YU.po</filename></entry>
|
|
||||||
<entry><acronym>ISO</acronym> 8859-2</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Turkish</entry>
|
|
||||||
<entry>Turkey</entry>
|
|
||||||
<entry><filename>tr_TR.ISO8859-9</filename></entry>
|
|
||||||
<entry><filename>tr_TR.po</filename></entry>
|
|
||||||
<entry><acronym>ISO</acronym> 8859-9</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Chinese</entry>
|
|
||||||
<entry>China</entry>
|
|
||||||
<entry><filename>zh_CN.UTF-8</filename></entry>
|
|
||||||
<entry><filename>zh_CN.po</filename></entry>
|
|
||||||
<entry><acronym>UTF</acronym>-8</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Chinese</entry>
|
|
||||||
<entry>Taiwan</entry>
|
|
||||||
<entry><filename>zh_TW.UTF-8</filename></entry>
|
|
||||||
<entry><filename>zh_TW.po</filename></entry>
|
|
||||||
<entry><acronym>UTF</acronym>-8</entry>
|
|
||||||
</row>
|
|
||||||
</tbody>
|
|
||||||
</tgroup>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<para>The translations are in subdirectories of the main
|
|
||||||
documentation directory, here assumed to be
|
|
||||||
<filename>~/doc/</filename> as shown in
|
|
||||||
<xref linkend="overview-quick-start"/>. For example, German
|
|
||||||
translations are located in
|
|
||||||
<filename>~/doc/de_DE.ISO8859-1/</filename>, and French
|
|
||||||
translations are in
|
|
||||||
<filename>~/doc/fr_FR.ISO8859-1/</filename>.</para>
|
|
||||||
|
|
||||||
<para>Each language directory contains separate subdirectories
|
|
||||||
named for the type of documents, usually
|
|
||||||
<filename>articles/</filename> and
|
|
||||||
<filename>books/</filename>.</para>
|
|
||||||
|
|
||||||
<para>Combining these directory names gives the complete path to
|
|
||||||
an article or book. For example, the French translation of the
|
|
||||||
NanoBSD article is in
|
|
||||||
<filename>~/doc/fr_FR.ISO8859-1/articles/nanobsd/</filename>,
|
|
||||||
and the Mongolian translation of the Handbook is in
|
|
||||||
<filename>~/doc/mn_MN.UTF-8/books/handbook/</filename>.</para>
|
|
||||||
|
|
||||||
<para>A new language directory must be created when translating
|
|
||||||
a document to a new language. If the language directory already
|
|
||||||
exists, only a subdirectory in the
|
|
||||||
<filename>articles/</filename> or <filename>books/</filename>
|
|
||||||
directory is needed.</para>
|
|
||||||
|
|
||||||
<para>&os; documentation builds are controlled by a
|
|
||||||
<filename>Makefile</filename> in the same directory. With
|
|
||||||
simple articles, the <filename>Makefile</filename> can often
|
|
||||||
just be copied verbatim from the original English directory.
|
|
||||||
The translation process combines multiple separate
|
|
||||||
<filename>book.xml</filename> and
|
|
||||||
<filename>chapter.xml</filename> files in books into a single
|
|
||||||
file, so the <filename>Makefile</filename> for book translations
|
|
||||||
must be copied and modified.</para>
|
|
||||||
|
|
||||||
<example xml:id="po-translations-creating-example">
|
|
||||||
<title>Creating a Spanish Translation of the Porter's
|
|
||||||
Handbook</title>
|
|
||||||
|
|
||||||
<para>Create a new Spanish translation of the
|
|
||||||
<link xlink:href="&url.books.porters-handbook.en;">Porter's
|
|
||||||
Handbook</link>. The original is a book in
|
|
||||||
<filename>~/doc/en_US.ISO8859-1/books/porters-handbook/</filename>.</para>
|
|
||||||
|
|
||||||
<procedure>
|
|
||||||
<step>
|
|
||||||
<para>The Spanish language books directory
|
|
||||||
<filename>~/doc/es_ES.ISO8859-1/books/</filename> already
|
|
||||||
exists, so only a new subdirectory for the Porter's
|
|
||||||
Handbook is needed:</para>
|
|
||||||
<screen>&prompt.user; <userinput>cd ~/doc/es_ES.ISO8859-1/books/</userinput>
|
|
||||||
&prompt.user; <userinput>svn mkdir porters-handbook</userinput>
|
|
||||||
A porters-handbook</screen>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>Copy the <filename>Makefile</filename> from the
|
|
||||||
original book:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>cd ~/doc/es_ES.ISO8859-1/books/porters-handbook</userinput>
|
|
||||||
&prompt.user; <userinput>svn cp ~/doc/en_US.ISO8859-1/books/porters-handbook/Makefile .</userinput>
|
|
||||||
A Makefile</screen>
|
|
||||||
|
|
||||||
<para>Modify the contents of the
|
|
||||||
<filename>Makefile</filename> to only expect a single
|
|
||||||
<filename>book.xml</filename>:</para>
|
|
||||||
|
|
||||||
<programlisting>#
|
|
||||||
# $FreeBSD$
|
|
||||||
#
|
|
||||||
# Build the FreeBSD Porter's Handbook.
|
|
||||||
#
|
|
||||||
|
|
||||||
MAINTAINER=doc@FreeBSD.org
|
|
||||||
|
|
||||||
DOC?= book
|
|
||||||
|
|
||||||
FORMATS?= html-split
|
|
||||||
|
|
||||||
INSTALL_COMPRESSED?= gz
|
|
||||||
INSTALL_ONLY_COMPRESSED?=
|
|
||||||
|
|
||||||
# XML content
|
|
||||||
SRCS= book.xml
|
|
||||||
|
|
||||||
# Images from the cross-document image library
|
|
||||||
IMAGES_LIB+= callouts/1.png
|
|
||||||
IMAGES_LIB+= callouts/2.png
|
|
||||||
IMAGES_LIB+= callouts/3.png
|
|
||||||
IMAGES_LIB+= callouts/4.png
|
|
||||||
IMAGES_LIB+= callouts/5.png
|
|
||||||
IMAGES_LIB+= callouts/6.png
|
|
||||||
IMAGES_LIB+= callouts/7.png
|
|
||||||
IMAGES_LIB+= callouts/8.png
|
|
||||||
IMAGES_LIB+= callouts/9.png
|
|
||||||
IMAGES_LIB+= callouts/10.png
|
|
||||||
IMAGES_LIB+= callouts/11.png
|
|
||||||
IMAGES_LIB+= callouts/12.png
|
|
||||||
IMAGES_LIB+= callouts/13.png
|
|
||||||
IMAGES_LIB+= callouts/14.png
|
|
||||||
IMAGES_LIB+= callouts/15.png
|
|
||||||
IMAGES_LIB+= callouts/16.png
|
|
||||||
IMAGES_LIB+= callouts/17.png
|
|
||||||
IMAGES_LIB+= callouts/18.png
|
|
||||||
IMAGES_LIB+= callouts/19.png
|
|
||||||
IMAGES_LIB+= callouts/20.png
|
|
||||||
IMAGES_LIB+= callouts/21.png
|
|
||||||
|
|
||||||
URL_RELPREFIX?= ../../../..
|
|
||||||
DOC_PREFIX?= ${.CURDIR}/../../..
|
|
||||||
|
|
||||||
SYMLINKS= ${DESTDIR} index.html handbook.html
|
|
||||||
|
|
||||||
.include "${DOC_PREFIX}/share/mk/doc.project.mk"</programlisting>
|
|
||||||
|
|
||||||
<para>Now the document structure is ready for the translator
|
|
||||||
to begin translating with
|
|
||||||
<command>make po</command>.</para>
|
|
||||||
</step>
|
|
||||||
</procedure>
|
|
||||||
</example>
|
|
||||||
|
|
||||||
<example xml:id="po-translations-creating-example-french">
|
|
||||||
<title>Creating a French Translation of the
|
|
||||||
<acronym>PGP</acronym> Keys Article</title>
|
|
||||||
|
|
||||||
<para>Create a new French translation of the
|
|
||||||
<link xlink:href="&url.articles.pgpkeys;"><acronym>PGP</acronym>
|
|
||||||
Keys article</link>. The original is an article in
|
|
||||||
<filename>~/doc/en_US.ISO8859-1/articles/pgpkeys/</filename>.</para>
|
|
||||||
|
|
||||||
<procedure>
|
|
||||||
<step>
|
|
||||||
<para>The French language article directory
|
|
||||||
<filename>~/doc/fr_FR.ISO8859-1/articles/</filename>
|
|
||||||
already exists, so only a new subdirectory for the
|
|
||||||
<acronym>PGP</acronym> Keys article is needed:</para>
|
|
||||||
<screen>&prompt.user; <userinput>cd ~/doc/fr_FR.ISO8859-1/articles/</userinput>
|
|
||||||
&prompt.user; <userinput>svn mkdir pgpkeys</userinput>
|
|
||||||
A pgpkeys</screen>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>Copy the <filename>Makefile</filename> from the
|
|
||||||
original article:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>cd ~/doc/fr_FR.ISO8859-1/articles/pgpkeys</userinput>
|
|
||||||
&prompt.user; <userinput>svn cp ~/doc/en_US.ISO8859-1/articles/pgpkeys/Makefile .</userinput>
|
|
||||||
A Makefile</screen>
|
|
||||||
|
|
||||||
<para>Check the contents of the
|
|
||||||
<filename>Makefile</filename>. Because this is a simple
|
|
||||||
article, in this case the <filename>Makefile</filename>
|
|
||||||
can be used unchanged. The <literal>$&os;...$</literal>
|
|
||||||
version string on the third line will be replaced by the
|
|
||||||
version control system when this file is committed.</para>
|
|
||||||
|
|
||||||
<programlisting>#
|
|
||||||
# $FreeBSD$
|
|
||||||
#
|
|
||||||
# Article: PGP Keys
|
|
||||||
|
|
||||||
DOC?= article
|
|
||||||
|
|
||||||
FORMATS?= html
|
|
||||||
WITH_ARTICLE_TOC?= YES
|
|
||||||
|
|
||||||
INSTALL_COMPRESSED?= gz
|
|
||||||
INSTALL_ONLY_COMPRESSED?=
|
|
||||||
|
|
||||||
SRCS= article.xml
|
|
||||||
|
|
||||||
# To build with just key fingerprints, set FINGERPRINTS_ONLY.
|
|
||||||
|
|
||||||
URL_RELPREFIX?= ../../../..
|
|
||||||
DOC_PREFIX?= ${.CURDIR}/../../..
|
|
||||||
|
|
||||||
.include "${DOC_PREFIX}/share/mk/doc.project.mk"</programlisting>
|
|
||||||
|
|
||||||
<para>With the document structure complete, the
|
|
||||||
<acronym>PO</acronym> file can be created with
|
|
||||||
<command>make po</command>.</para>
|
|
||||||
</step>
|
|
||||||
</procedure>
|
|
||||||
</example>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="po-translations-translating">
|
|
||||||
<title>Translating</title>
|
|
||||||
|
|
||||||
<para>The <application>gettext</application> system greatly
|
|
||||||
reduces the number of things that must be tracked by a
|
|
||||||
translator. Strings to be translated are extracted from the
|
|
||||||
original document into a <acronym>PO</acronym> file. Then a
|
|
||||||
<acronym>PO</acronym> editor is used to enter the translated
|
|
||||||
versions of each string.</para>
|
|
||||||
|
|
||||||
<para>The &os; <acronym>PO</acronym> translation system does not
|
|
||||||
overwrite <acronym>PO</acronym> files, so the extraction step
|
|
||||||
can be run at any time to update the <acronym>PO</acronym>
|
|
||||||
file.</para>
|
|
||||||
|
|
||||||
<para>A <acronym>PO</acronym> editor is used to edit the file.
|
|
||||||
<package role="port">editors/poedit</package> is shown in
|
|
||||||
these examples because it is simple and has minimal
|
|
||||||
requirements. Other <acronym>PO</acronym> editors offer
|
|
||||||
features to make the job of translating easier. The Ports
|
|
||||||
Collection offers several of these editors, including
|
|
||||||
<package role="port">devel/gtranslator</package>.</para>
|
|
||||||
|
|
||||||
<para>It is important to preserve the <acronym>PO</acronym> file.
|
|
||||||
It contains all of the work that translators have done.</para>
|
|
||||||
|
|
||||||
<example xml:id="po-translations-translating-example">
|
|
||||||
<title>Translating the Porter's Handbook to Spanish</title>
|
|
||||||
|
|
||||||
<para>Enter Spanish translations of the contents of the Porter's
|
|
||||||
Handbook.</para>
|
|
||||||
|
|
||||||
<procedure>
|
|
||||||
<step>
|
|
||||||
<para>Change to the Spanish Porter's Handbook directory and
|
|
||||||
update the <acronym>PO</acronym> file. The generated
|
|
||||||
<acronym>PO</acronym> file is called
|
|
||||||
<filename>es_ES.po</filename> as shown in
|
|
||||||
<xref linkend="po-translations-language-names"/>.</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>cd ~/doc/es_ES.ISO8859-1/books/porters-handbook</userinput>
|
|
||||||
&prompt.user; <userinput>make po</userinput></screen>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>Enter translations using a <acronym>PO</acronym>
|
|
||||||
editor:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>poedit es_ES.po</userinput></screen>
|
|
||||||
</step>
|
|
||||||
</procedure>
|
|
||||||
</example>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="po-translations-tips">
|
|
||||||
<title>Tips for Translators</title>
|
|
||||||
|
|
||||||
<sect2 xml:id="po-translations-tips-xmltags">
|
|
||||||
<title>Preserving <acronym>XML</acronym> Tags</title>
|
|
||||||
|
|
||||||
<para>Preserve <acronym>XML</acronym> tags that are shown in
|
|
||||||
the English original.</para>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title>Preserving <acronym>XML</acronym> Tags</title>
|
|
||||||
|
|
||||||
<para>English original:</para>
|
|
||||||
|
|
||||||
<programlisting>If <tag class="starttag">acronym</tag>NTP<tag class="endtag">acronym</tag> is not being used</programlisting>
|
|
||||||
|
|
||||||
<para>Spanish translation:</para>
|
|
||||||
|
|
||||||
<programlisting>Si <tag class="starttag">acronym</tag>NTP<tag class="endtag">acronym</tag> no se utiliza</programlisting>
|
|
||||||
</example>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="po-translations-tips-spaces">
|
|
||||||
<title>Preserving Spaces</title>
|
|
||||||
|
|
||||||
<para>Preserve existing spaces at the beginning and end of
|
|
||||||
strings to be translated. The translated version must have
|
|
||||||
these spaces also.</para>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="po-translations-tips-verbatim">
|
|
||||||
<title>Verbatim Tags</title>
|
|
||||||
|
|
||||||
<para>The contents of some tags should be copied verbatim, not
|
|
||||||
translated:</para>
|
|
||||||
|
|
||||||
<itemizedlist xml:id="po-translations-tips-verbatim-list">
|
|
||||||
<listitem>
|
|
||||||
<para><tag class="starttag">citerefentry</tag></para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><tag class="starttag">command</tag></para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><tag class="starttag">filename</tag></para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><tag class="starttag">literal</tag></para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><tag class="starttag">manvolnum</tag></para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><tag class="starttag">orgname</tag></para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><tag class="starttag">package</tag></para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><tag class="starttag">programlisting</tag></para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><tag class="starttag">prompt</tag></para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><tag class="starttag">refentrytitle</tag></para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><tag class="starttag">screen</tag></para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><tag class="starttag">userinput</tag></para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><tag class="starttag">varname</tag></para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
<sect2 xml:id="po-translations-tips-makefile">
|
|
||||||
<title>Modifying the <filename>Makefile</filename></title>
|
|
||||||
|
|
||||||
<para>What needs to be changed in the
|
|
||||||
<filename>Makefile</filename>?</para>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="po-translations-tips-locale">
|
|
||||||
<title>Setting Locales for Editing</title>
|
|
||||||
|
|
||||||
<para>Locale settings so the <acronym>PO</acronym> editor works
|
|
||||||
correctly?</para>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="po-translations-tips-poeditors">
|
|
||||||
<title>Settings for Specific <acronym>PO</acronym>
|
|
||||||
Editors</title>
|
|
||||||
|
|
||||||
<para>Per bcr: turn off "intelligent quotes" in
|
|
||||||
Mac poedit.</para>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="po-translations-tips-tm">
|
|
||||||
<title>Using Translation Memory</title>
|
|
||||||
|
|
||||||
<para>Using translation memory. Saving, updating, sharing
|
|
||||||
with other members of a translation team.</para>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="po-translations-tips-submitting">
|
|
||||||
<title>Submitting Translations</title>
|
|
||||||
|
|
||||||
<para>Submitting translations as diffs, committing
|
|
||||||
<acronym>PO</acronym> files.</para>
|
|
||||||
</sect2>
|
|
||||||
-->
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="po-translations-building">
|
|
||||||
<title>Building a Translated Document</title>
|
|
||||||
|
|
||||||
<para>A translated version of the original document can be created
|
|
||||||
at any time. Any untranslated portions of the original will be
|
|
||||||
included in English in the resulting document. Most
|
|
||||||
<acronym>PO</acronym> editors have an indicator that shows how
|
|
||||||
much of the translation has been completed. This makes it easy
|
|
||||||
for the translator to see when enough strings have been
|
|
||||||
translated to make building the final document
|
|
||||||
worthwhile.</para>
|
|
||||||
|
|
||||||
<example xml:id="po-translations-building-example">
|
|
||||||
<title>Building the Spanish Porter's Handbook</title>
|
|
||||||
|
|
||||||
<para>Build and preview the Spanish version of the Porter's
|
|
||||||
Handbook that was created in an earlier example.</para>
|
|
||||||
|
|
||||||
<procedure>
|
|
||||||
<step>
|
|
||||||
<para>Build the translated document. Because the original
|
|
||||||
is a book, the generated document is
|
|
||||||
<filename>book.xml</filename>.</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>cd ~/doc/es_ES.ISO8859-1/books/porters-handbook</userinput>
|
|
||||||
&prompt.user; <userinput>make tran</userinput></screen>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>Render the translated <filename>book.xml</filename> to
|
|
||||||
<acronym>HTML</acronym> and view it with
|
|
||||||
<application>Firefox</application>. This is the
|
|
||||||
same procedure used with the English version of the
|
|
||||||
documents, and other <varname>FORMATS</varname> can
|
|
||||||
be used here in the same way. See <xref
|
|
||||||
linkend="doc-build-rendering-common-formats"/>.</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>make FORMATS=html</userinput>
|
|
||||||
&prompt.user; <userinput>firefox book.html</userinput></screen>
|
|
||||||
</step>
|
|
||||||
</procedure>
|
|
||||||
</example>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="po-translations-submitting">
|
|
||||||
<title>Submitting the New Translation</title>
|
|
||||||
|
|
||||||
<para>Prepare the new translation files for submission. This
|
|
||||||
example shows a new Spanish translation of the NanoBSD
|
|
||||||
article in
|
|
||||||
<filename>~/doc/es_ES.ISO8859-1/articles/nanobsd</filename>.</para>
|
|
||||||
|
|
||||||
<procedure>
|
|
||||||
<step>
|
|
||||||
<para>The <acronym>PO</acronym> file must contain a &os;
|
|
||||||
version string comment on the first line:</para>
|
|
||||||
|
|
||||||
<programlisting>#$FreeBSD$</programlisting>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>The <filename>Makefile</filename>, the
|
|
||||||
<acronym>PO</acronym> file, and the generated
|
|
||||||
<acronym>XML</acronym> translation must all be added to
|
|
||||||
version control:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>cd ~/doc/es_ES.ISO8859-1/articles/nanobsd/</userinput>
|
|
||||||
&prompt.user; <userinput>ls</userinput>
|
|
||||||
Makefile article.xml es_ES.po
|
|
||||||
&prompt.user; <userinput>svn add Makefile article.xml es_ES.po</userinput>
|
|
||||||
A Makefile
|
|
||||||
A article.xml
|
|
||||||
A es_ES.po</screen>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>These files must also have the
|
|
||||||
<application>Subversion</application>
|
|
||||||
<literal>svn:keywords</literal> property set to
|
|
||||||
<literal>FreeBSD=%H</literal>:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>svn propset svn:keywords FreeBSD=%H Makefile article.xml es_ES.po</userinput>
|
|
||||||
property 'svn:keywords' set on 'Makefile'
|
|
||||||
property 'svn:keywords' set on 'article.xml'
|
|
||||||
property 'svn:keywords' set on 'es_ES.po'</screen>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para>A diff of these new files is created from the
|
|
||||||
<filename>~/doc/</filename> base directory so the full path
|
|
||||||
is shown with the filenames. This helps committers identify
|
|
||||||
the target language directory.</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>cd ~/doc</userinput>
|
|
||||||
<userinput>svn diff es_ES.ISO8859-1/articles/nanobsd/ > /tmp/es_nanobsd.diff</userinput></screen>
|
|
||||||
|
|
||||||
<para>The diff file is now ready for attachment to a
|
|
||||||
<link
|
|
||||||
xlink:href="https://bugs.freebsd.org/bugzilla/enter_bug.cgi?product=Documentation">documentation
|
|
||||||
bug report</link> or <link
|
|
||||||
xlink:href="https://reviews.freebsd.org/">code
|
|
||||||
review</link>.</para>
|
|
||||||
</step>
|
|
||||||
</procedure>
|
|
||||||
</sect1>
|
|
||||||
</chapter>
|
|
|
@ -1,171 +0,0 @@
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
|
||||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
|
||||||
copyright notice, this list of conditions and the following
|
|
||||||
disclaimer as the first lines of this file unmodified.
|
|
||||||
|
|
||||||
2. Redistributions in compiled form (transformed to other DTDs,
|
|
||||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
|
||||||
the above copyright notice, this list of conditions and the
|
|
||||||
following disclaimer in the documentation and/or other materials
|
|
||||||
provided with the distribution.
|
|
||||||
|
|
||||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
|
||||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
||||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
$FreeBSD$
|
|
||||||
-->
|
|
||||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="psgml-mode">
|
|
||||||
<title>Using <literal>sgml-mode</literal> with
|
|
||||||
<application>Emacs</application></title>
|
|
||||||
|
|
||||||
<para>Recent versions of <application>Emacs</application> or
|
|
||||||
<application>XEmacs</application> (available from the Ports
|
|
||||||
Collection) contain a very useful package called PSGML (can be
|
|
||||||
installed from <package>editors/psgml</package>).
|
|
||||||
Automatically invoked when a file with the
|
|
||||||
<filename>.xml</filename> extension is loaded, or by typing
|
|
||||||
<command>M-x sgml-mode</command>, it is a major mode for dealing
|
|
||||||
with SGML files, elements and attributes.</para>
|
|
||||||
|
|
||||||
<para>An understanding of some of the commands provided by this mode
|
|
||||||
can make working with SGML documents such as the Handbook much
|
|
||||||
easier.</para>
|
|
||||||
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term><command>C-c C-e</command></term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Runs <function>sgml-insert-element</function>. You will
|
|
||||||
be prompted for the name of the element to insert at the
|
|
||||||
current point. You can use the <keycap>Tab</keycap> key to
|
|
||||||
complete the element. Elements that are not valid at the
|
|
||||||
current point will be disallowed.</para>
|
|
||||||
|
|
||||||
<para>The start and end tags for the element will be inserted.
|
|
||||||
If the element contains other, mandatory, elements then
|
|
||||||
these will be inserted as well.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><command>C-c =</command></term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Runs <function>sgml-change-element-name</function>.
|
|
||||||
Place the point within an element and run this command. You
|
|
||||||
will be prompted for the name of the element to change to.
|
|
||||||
Both the start and end tags of the current element will be
|
|
||||||
changed to the new element.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><command>C-c C-r</command></term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Runs <function>sgml-tag-region</function>. Select some
|
|
||||||
text (move to start of text, <command>C-space</command>,
|
|
||||||
move to end of text, <command>C-space</command>) and then
|
|
||||||
run this command. You will be prompted for the element to
|
|
||||||
use. This element will then be inserted immediately before
|
|
||||||
and after your marked region.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><command>C-c -</command></term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Runs <function>sgml-untag-element</function>. Place the
|
|
||||||
point within the start or end tag of an element you want to
|
|
||||||
remove, and run this command. The element's start and end
|
|
||||||
tags will be removed.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><command>C-c C-q</command></term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Runs <function>sgml-fill-element</function>. Will
|
|
||||||
recursively fill (i.e., reformat) content from the current
|
|
||||||
element in. The filling <emphasis>will</emphasis> affect
|
|
||||||
content in which whitespace is significant, such as within
|
|
||||||
<tag>programlisting</tag> elements, so run this
|
|
||||||
command with care.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><command>C-c C-a</command></term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Runs <function>sgml-edit-attributes</function>. Opens a
|
|
||||||
second buffer containing a list of all the attributes for
|
|
||||||
the closest enclosing element, and their current values.
|
|
||||||
Use <keycap>Tab</keycap> to navigate between attributes,
|
|
||||||
<command>C-k</command> to remove an existing value and
|
|
||||||
replace it with a new one, <command>C-c C-c</command> to
|
|
||||||
close this buffer and return to the main document.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><command>C-c C-v</command></term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Runs <function>sgml-validate</function>. Prompts you to
|
|
||||||
save the current document (if necessary) and then runs an
|
|
||||||
SGML validator. The output from the validator is captured
|
|
||||||
into a new buffer, and you can then navigate from one
|
|
||||||
troublespot to the next, fixing markup errors as you
|
|
||||||
go.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><command>C-c /</command></term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Runs <function>sgml-insert-end-tag</function>. Inserts
|
|
||||||
the end tag for the current open element.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
|
|
||||||
<para>Doubtless there are other useful functions of this mode, but
|
|
||||||
those are the ones I use most often.</para>
|
|
||||||
|
|
||||||
<para>You can also use the following entries in
|
|
||||||
<filename>.emacs</filename> to set proper spacing, indentation,
|
|
||||||
and column width for working with the Documentation
|
|
||||||
Project.</para>
|
|
||||||
|
|
||||||
<programlisting> (defun local-sgml-mode-hook
|
|
||||||
(setq fill-column 70
|
|
||||||
indent-tabs-mode nil
|
|
||||||
next-line-add-newlines nil
|
|
||||||
standard-indent 4
|
|
||||||
sgml-indent-data t)
|
|
||||||
(auto-fill-mode t)
|
|
||||||
(setq sgml-catalog-files '("/usr/local/share/xml/catalog")))
|
|
||||||
(add-hook 'psgml-mode-hook
|
|
||||||
'(lambda () (local-psgml-mode-hook)))</programlisting>
|
|
||||||
</chapter>
|
|
|
@ -1,108 +0,0 @@
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
|
||||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
|
||||||
copyright notice, this list of conditions and the following
|
|
||||||
disclaimer as the first lines of this file unmodified.
|
|
||||||
|
|
||||||
2. Redistributions in compiled form (transformed to other DTDs,
|
|
||||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
|
||||||
the above copyright notice, this list of conditions and the
|
|
||||||
following disclaimer in the documentation and/or other materials
|
|
||||||
provided with the distribution.
|
|
||||||
|
|
||||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
|
||||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
||||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
$FreeBSD$
|
|
||||||
-->
|
|
||||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="see-also">
|
|
||||||
<title>See Also</title>
|
|
||||||
|
|
||||||
<para>This document is deliberately not an exhaustive discussion of
|
|
||||||
XML, the DTDs listed, and the FreeBSD Documentation Project. For
|
|
||||||
more information about these, you are encouraged to see the
|
|
||||||
following web sites.</para>
|
|
||||||
|
|
||||||
<sect1 xml:id="see-also-fdp">
|
|
||||||
<title>The FreeBSD Documentation Project</title>
|
|
||||||
|
|
||||||
<itemizedlist>
|
|
||||||
<listitem>
|
|
||||||
<para><link xlink:href="&url.base;/docproj/index.html">The FreeBSD
|
|
||||||
Documentation Project web pages</link></para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><link xlink:href="&url.books.handbook;/index.html">The FreeBSD
|
|
||||||
Handbook</link></para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="see-also-xml">
|
|
||||||
<title>XML</title>
|
|
||||||
|
|
||||||
<itemizedlist>
|
|
||||||
<listitem>
|
|
||||||
<para><link xlink:href="http://www.w3.org/XML/">W3C's XML page
|
|
||||||
SGML/XML web page</link></para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="see-also-html">
|
|
||||||
<title>HTML</title>
|
|
||||||
|
|
||||||
<itemizedlist>
|
|
||||||
<listitem>
|
|
||||||
<para><link xlink:href="http://www.w3.org/">The World Wide Web
|
|
||||||
Consortium</link></para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><link xlink:href="http://www.w3.org/TR/REC-html40/">The HTML
|
|
||||||
4.0 specification</link></para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="see-also-docbook">
|
|
||||||
<title>DocBook</title>
|
|
||||||
|
|
||||||
<itemizedlist>
|
|
||||||
<listitem>
|
|
||||||
<para><link xlink:href="http://www.oasis-open.org/docbook/">The
|
|
||||||
DocBook Technical Committee</link>, maintainers of the
|
|
||||||
DocBook DTD</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><link xlink:href="http://www.docbook.org/">DocBook: The
|
|
||||||
Definitive Guide</link>, the online documentation for the
|
|
||||||
DocBook DTD</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><link xlink:href="http://docbook.sourceforge.net/">The DocBook
|
|
||||||
Open Repository</link> contains DSSSL stylesheets and
|
|
||||||
other resources for people using DocBook</para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
</chapter>
|
|
|
@ -1,305 +0,0 @@
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
|
||||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
|
||||||
copyright notice, this list of conditions and the following
|
|
||||||
disclaimer as the first lines of this file unmodified.
|
|
||||||
|
|
||||||
2. Redistributions in compiled form (transformed to other DTDs,
|
|
||||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
|
||||||
the above copyright notice, this list of conditions and the
|
|
||||||
following disclaimer in the documentation and/or other materials
|
|
||||||
provided with the distribution.
|
|
||||||
|
|
||||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
|
||||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
||||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
$FreeBSD$
|
|
||||||
-->
|
|
||||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="structure">
|
|
||||||
<title>Documentation Directory Structure</title>
|
|
||||||
|
|
||||||
<para>Files and directories in the
|
|
||||||
<filename>doc/</filename> tree follow a
|
|
||||||
structure meant to:</para>
|
|
||||||
|
|
||||||
<orderedlist>
|
|
||||||
<listitem>
|
|
||||||
<para>Make it easy to automate converting the document to other
|
|
||||||
formats.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Promote consistency between the different documentation
|
|
||||||
organizations, to make it easier to switch between working on
|
|
||||||
different documents.</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Make it easy to decide where in the tree new documentation
|
|
||||||
should be placed.</para>
|
|
||||||
</listitem>
|
|
||||||
</orderedlist>
|
|
||||||
|
|
||||||
<para>In addition, the documentation tree must accommodate
|
|
||||||
documents in many different languages and encodings. It is
|
|
||||||
important that the documentation tree structure does not enforce
|
|
||||||
any particular defaults or cultural preferences.</para>
|
|
||||||
|
|
||||||
<sect1 xml:id="structure-top">
|
|
||||||
<title>The Top Level,
|
|
||||||
<filename>doc/</filename></title>
|
|
||||||
|
|
||||||
<para>There are two types of directory under
|
|
||||||
<filename>doc/</filename>, each with very
|
|
||||||
specific directory names and meanings.</para>
|
|
||||||
|
|
||||||
<informaltable pgwide="1" frame="none">
|
|
||||||
<tgroup cols="2">
|
|
||||||
<thead>
|
|
||||||
<row>
|
|
||||||
<entry>Directory</entry>
|
|
||||||
<entry>Usage</entry>
|
|
||||||
</row>
|
|
||||||
</thead>
|
|
||||||
|
|
||||||
<tbody>
|
|
||||||
<row>
|
|
||||||
<entry valign="top">
|
|
||||||
<filename>share</filename></entry>
|
|
||||||
|
|
||||||
<entry>Contains files that are not specific to the various
|
|
||||||
translations and encodings of the documentation.
|
|
||||||
Contains subdirectories to further categorize the
|
|
||||||
information. For example, the files that comprise the
|
|
||||||
&man.make.1; infrastructure are in
|
|
||||||
<filename>share/mk</filename>, while
|
|
||||||
the additional <acronym>XML</acronym> support files
|
|
||||||
(such as the &os; extended DocBook
|
|
||||||
<acronym>DTD</acronym>) are in <filename>share/xml</filename>.</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry valign="top">
|
|
||||||
<filename><replaceable>lang</replaceable>.<replaceable>encoding</replaceable></filename></entry>
|
|
||||||
|
|
||||||
<entry>One directory exists for each available translation
|
|
||||||
and encoding of the documentation, for example
|
|
||||||
<filename>en_US.ISO8859-1/</filename>
|
|
||||||
and <filename>zh_TW.UTF-8/</filename>.
|
|
||||||
The names are long, but by fully specifying the language
|
|
||||||
and encoding we prevent any future headaches when a
|
|
||||||
translation team wants to provide documentation in the
|
|
||||||
same language but in more than one encoding. This also
|
|
||||||
avoids problems that might be caused by a future switch
|
|
||||||
to Unicode.</entry>
|
|
||||||
</row>
|
|
||||||
</tbody>
|
|
||||||
</tgroup>
|
|
||||||
</informaltable>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="structure-locale">
|
|
||||||
<title>The
|
|
||||||
<filename><replaceable>lang</replaceable>.<replaceable>encoding</replaceable>/</filename>
|
|
||||||
Directories</title>
|
|
||||||
|
|
||||||
<para>These directories contain the documents themselves. The
|
|
||||||
documentation is split into up to three more categories at
|
|
||||||
this level, indicated by the different directory names.</para>
|
|
||||||
|
|
||||||
<informaltable pgwide="1" frame="none">
|
|
||||||
<tgroup cols="2">
|
|
||||||
<thead>
|
|
||||||
<row>
|
|
||||||
<entry>Directory</entry>
|
|
||||||
<entry>Usage</entry>
|
|
||||||
</row>
|
|
||||||
</thead>
|
|
||||||
|
|
||||||
<tbody>
|
|
||||||
<row>
|
|
||||||
<entry valign="top">
|
|
||||||
<filename>articles</filename></entry>
|
|
||||||
|
|
||||||
<entry>Documentation marked up as a DocBook
|
|
||||||
<tag>article</tag> (or equivalent). Reasonably
|
|
||||||
short, and broken up into sections. Normally only
|
|
||||||
available as one <acronym>XHTML</acronym> file.</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry valign="top"><filename>books</filename></entry>
|
|
||||||
|
|
||||||
<entry>Documentation marked up as a DocBook
|
|
||||||
<tag>book</tag> (or equivalent). Book length,
|
|
||||||
and broken up into chapters. Normally available as both
|
|
||||||
one large <acronym>XHTML</acronym> file (for people with
|
|
||||||
fast connections, or who want to print it easily from a
|
|
||||||
browser) and as a collection of linked, smaller
|
|
||||||
files.</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry valign="top">
|
|
||||||
<filename>man</filename></entry>
|
|
||||||
|
|
||||||
<entry>For translations of the system manual pages. This
|
|
||||||
directory will contain one or more <filename role="directory">man<replaceable>n</replaceable></filename>
|
|
||||||
directories, corresponding to the sections that have
|
|
||||||
been translated.</entry>
|
|
||||||
</row>
|
|
||||||
</tbody>
|
|
||||||
</tgroup>
|
|
||||||
</informaltable>
|
|
||||||
|
|
||||||
<para>Not every <filename role="directory"><replaceable>lang</replaceable>.<replaceable>encoding</replaceable></filename>
|
|
||||||
directory will have all of these subdirectories. It depends
|
|
||||||
on how much translation has been accomplished by that
|
|
||||||
translation team.</para>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="structure-document">
|
|
||||||
<title>Document-Specific Information</title>
|
|
||||||
|
|
||||||
<para>This section contains specific notes about particular
|
|
||||||
documents managed by the FDP.</para>
|
|
||||||
|
|
||||||
<sect2>
|
|
||||||
<title>The Handbook</title>
|
|
||||||
|
|
||||||
<subtitle><filename>books/handbook/</filename></subtitle>
|
|
||||||
|
|
||||||
<para>The Handbook is written in DocBook <acronym>XML</acronym>
|
|
||||||
using the &os; DocBook extended <acronym>DTD</acronym>.</para>
|
|
||||||
|
|
||||||
<para>The Handbook is organized as a DocBook
|
|
||||||
<tag>book</tag>. The book is divided into
|
|
||||||
<tag>part</tag>s, each of which contains several
|
|
||||||
<tag>chapter</tag>s. <tag>chapter</tag>s are
|
|
||||||
further subdivided into sections (<tag>sect1</tag>)
|
|
||||||
and subsections (<tag>sect2</tag>,
|
|
||||||
<tag>sect3</tag>) and so on.</para>
|
|
||||||
|
|
||||||
<sect3>
|
|
||||||
<title>Physical Organization</title>
|
|
||||||
|
|
||||||
<para>There are a number of files and directories within the
|
|
||||||
<filename>handbook</filename> directory.</para>
|
|
||||||
|
|
||||||
<note>
|
|
||||||
<para>The Handbook's organization may change over time, and
|
|
||||||
this document may lag in detailing the organizational
|
|
||||||
changes. Post questions about Handbook organization to the
|
|
||||||
&a.doc;.</para>
|
|
||||||
</note>
|
|
||||||
|
|
||||||
<sect4>
|
|
||||||
<title><filename>Makefile</filename></title>
|
|
||||||
|
|
||||||
<para>The <filename>Makefile</filename> defines some
|
|
||||||
variables that affect how the <acronym>XML</acronym>
|
|
||||||
source is converted to other formats, and lists the
|
|
||||||
various source files that make up the Handbook. It then
|
|
||||||
includes the standard <filename>doc.project.mk</filename>,
|
|
||||||
to bring in the rest of the code that handles converting
|
|
||||||
documents from one format to another.</para>
|
|
||||||
</sect4>
|
|
||||||
|
|
||||||
<sect4>
|
|
||||||
<title><filename>book.xml</filename></title>
|
|
||||||
|
|
||||||
<para>This is the top level document in the Handbook. It
|
|
||||||
contains the Handbook's <link linkend="xml-primer-doctype-declaration">DOCTYPE
|
|
||||||
declaration</link>, as well as the elements that
|
|
||||||
describe the Handbook's structure.</para>
|
|
||||||
|
|
||||||
<para><filename>book.xml</filename> uses <link linkend="xml-primer-parameter-entities">parameter
|
|
||||||
entities</link> to load in the files with the
|
|
||||||
<filename>.ent</filename> extension. These files
|
|
||||||
(described later) then define <link linkend="xml-primer-general-entities">general
|
|
||||||
entities</link> that are used throughout the rest of the
|
|
||||||
Handbook.</para>
|
|
||||||
</sect4>
|
|
||||||
|
|
||||||
<sect4>
|
|
||||||
<title><filename role="directory"><replaceable>directory</replaceable>/chapter.xml</filename></title>
|
|
||||||
|
|
||||||
<para>Each chapter in the Handbook is stored in a file
|
|
||||||
called <filename>chapter.xml</filename> in a separate
|
|
||||||
directory from the other chapters. Each directory is
|
|
||||||
named after the value of the <literal>id</literal>
|
|
||||||
attribute on the <tag>chapter</tag>
|
|
||||||
element.</para>
|
|
||||||
|
|
||||||
<para>For example, if one of the chapter files
|
|
||||||
contains:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">chapter id="kernelconfig"</tag>
|
|
||||||
...
|
|
||||||
<tag class="endtag">chapter</tag></programlisting>
|
|
||||||
|
|
||||||
<para>Then it will be called
|
|
||||||
<filename>chapter.xml</filename> in the
|
|
||||||
<filename>kernelconfig</filename> directory. In general,
|
|
||||||
the entire contents of the chapter are in this one
|
|
||||||
file.</para>
|
|
||||||
|
|
||||||
<para>When the <acronym>XHTML</acronym> version of the
|
|
||||||
Handbook is produced, this will yield
|
|
||||||
<filename>kernelconfig.html</filename>. This is because
|
|
||||||
of the <literal>id</literal> value, and is not related to
|
|
||||||
the name of the directory.</para>
|
|
||||||
|
|
||||||
<para>In earlier versions of the Handbook, the files were
|
|
||||||
stored in the same directory as
|
|
||||||
<filename>book.xml</filename>, and named after the value
|
|
||||||
of the <literal>id</literal> attribute on the file's
|
|
||||||
<tag>chapter</tag> element. Now, it is possible
|
|
||||||
to include images in each chapter. Images for each
|
|
||||||
Handbook chapter are stored within <filename>share/images/books/handbook</filename>.
|
|
||||||
The localized version of these images should be
|
|
||||||
placed in the same directory as the <acronym>XML</acronym>
|
|
||||||
sources for each chapter. Namespace collisions are
|
|
||||||
inevitable, and it is easier to work with several
|
|
||||||
directories with a few files in them than it is to work
|
|
||||||
with one directory that has many files in it.</para>
|
|
||||||
|
|
||||||
<para>A brief look will show that there are many directories
|
|
||||||
with individual <filename>chapter.xml</filename> files,
|
|
||||||
including <filename>basics/chapter.xml</filename>,
|
|
||||||
<filename>introduction/chapter.xml</filename>, and
|
|
||||||
<filename>printing/chapter.xml</filename>.</para>
|
|
||||||
|
|
||||||
<important>
|
|
||||||
<para>Do not name chapters or directories after
|
|
||||||
their ordering within the Handbook. This ordering can
|
|
||||||
change as the content within the Handbook is
|
|
||||||
reorganized. Reorganization should be possible without
|
|
||||||
renaming files, unless entire chapters are being
|
|
||||||
promoted or demoted within the hierarchy.</para>
|
|
||||||
</important>
|
|
||||||
|
|
||||||
<para>The <filename>chapter.xml</filename> files are not
|
|
||||||
complete <acronym>XML</acronym> documents that can be
|
|
||||||
built individually. They can only be built
|
|
||||||
as parts of the whole Handbook.</para>
|
|
||||||
</sect4>
|
|
||||||
</sect3>
|
|
||||||
</sect2>
|
|
||||||
</sect1>
|
|
||||||
</chapter>
|
|
|
@ -1,75 +0,0 @@
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
|
||||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
|
||||||
copyright notice, this list of conditions and the following
|
|
||||||
disclaimer as the first lines of this file unmodified.
|
|
||||||
|
|
||||||
2. Redistributions in compiled form (transformed to other DTDs,
|
|
||||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
|
||||||
the above copyright notice, this list of conditions and the
|
|
||||||
following disclaimer in the documentation and/or other materials
|
|
||||||
provided with the distribution.
|
|
||||||
|
|
||||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
|
||||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
||||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
$FreeBSD$
|
|
||||||
-->
|
|
||||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="stylesheets">
|
|
||||||
<title>Style Sheets</title>
|
|
||||||
|
|
||||||
<para><acronym>XML</acronym> is concerned with content, and says
|
|
||||||
nothing about how that content should be presented to the reader
|
|
||||||
or rendered on paper. Multiple <emphasis>style sheet</emphasis>
|
|
||||||
languages have been developed to describe visual layout, including
|
|
||||||
Extensible Stylesheet Language Transformation
|
|
||||||
(<acronym>XSLT</acronym>), Document Style Semantics and
|
|
||||||
Specification Language (<acronym>DSSSL</acronym>), and Cascading
|
|
||||||
Style Sheets (<acronym>CSS</acronym>).</para>
|
|
||||||
|
|
||||||
<para>The <acronym>FDP</acronym> documents use
|
|
||||||
<acronym>XSLT</acronym> stylesheets to transform DocBook into
|
|
||||||
<acronym>XHTML</acronym>, and then <acronym>CSS</acronym>
|
|
||||||
formatting is applied to the <acronym>XHTML</acronym> pages.
|
|
||||||
Printable output is currently rendered with legacy
|
|
||||||
<acronym>DSSSL</acronym> stylesheets, but this will probably
|
|
||||||
change in the future.</para>
|
|
||||||
|
|
||||||
<sect1 xml:id="stylesheets-css">
|
|
||||||
<title><acronym>CSS</acronym></title>
|
|
||||||
|
|
||||||
<para>Cascading Style Sheets (<acronym>CSS</acronym>) are a
|
|
||||||
mechanism for attaching style information (font, weight, size,
|
|
||||||
color, and so forth) to elements in an <acronym>XHTML</acronym>
|
|
||||||
document without abusing <acronym>XHTML</acronym> to do
|
|
||||||
so.</para>
|
|
||||||
|
|
||||||
<sect2>
|
|
||||||
<title>The DocBook Documents</title>
|
|
||||||
|
|
||||||
<para>The &os; <acronym>XSLT</acronym> and
|
|
||||||
<acronym>DSSSL</acronym> stylesheets refer to
|
|
||||||
<filename>docbook.css</filename>, which is expected to be
|
|
||||||
present in the same directory as the <acronym>XHTML</acronym>
|
|
||||||
files. The project-wide <acronym>CSS</acronym> file is copied
|
|
||||||
from <filename>doc/share/misc/docbook.css</filename> when
|
|
||||||
documents are converted to <acronym>XHTML</acronym>, and is
|
|
||||||
installed automatically.</para>
|
|
||||||
</sect2>
|
|
||||||
</sect1>
|
|
||||||
</chapter>
|
|
|
@ -1,200 +0,0 @@
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
|
||||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
|
||||||
copyright notice, this list of conditions and the following
|
|
||||||
disclaimer as the first lines of this file unmodified.
|
|
||||||
|
|
||||||
2. Redistributions in compiled form (transformed to other DTDs,
|
|
||||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
|
||||||
the above copyright notice, this list of conditions and the
|
|
||||||
following disclaimer in the documentation and/or other materials
|
|
||||||
provided with the distribution.
|
|
||||||
|
|
||||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
|
||||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
||||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
$FreeBSD$
|
|
||||||
-->
|
|
||||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="the-website">
|
|
||||||
<title>The Website</title>
|
|
||||||
|
|
||||||
<para>The &os; web site is part of the &os; documents. Files for
|
|
||||||
the web site are stored in the
|
|
||||||
<filename>en_US.ISO8859-1/htdocs</filename> subdirectory of the
|
|
||||||
document tree directory, <filename>~/doc</filename> in this
|
|
||||||
example.</para>
|
|
||||||
|
|
||||||
<sect1 xml:id="the-website-env">
|
|
||||||
<title>Environment Variables</title>
|
|
||||||
|
|
||||||
<para>Several environment variables control which parts of the the
|
|
||||||
web site are built or installed, and to which
|
|
||||||
directories.</para>
|
|
||||||
|
|
||||||
<tip>
|
|
||||||
<para>The web build system uses &man.make.1;, and considers
|
|
||||||
variables to be set when they have been defined, even if they
|
|
||||||
are empty. The examples here show the recommended ways of
|
|
||||||
defining and using these variables. Setting or defining these
|
|
||||||
variables with other values or methods might lead to
|
|
||||||
unexpected surprises.</para>
|
|
||||||
</tip>
|
|
||||||
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry xml:id="the-website-env-destdir">
|
|
||||||
<term><varname>DESTDIR</varname></term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>DESTDIR specifies the path where the web site files
|
|
||||||
are to be installed.</para>
|
|
||||||
|
|
||||||
<para>This variable is best set with &man.env.1; or the user
|
|
||||||
shell's method of setting environment variables,
|
|
||||||
<command>setenv</command> for &man.csh.1; or
|
|
||||||
<command>export</command> for &man.sh.1;.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry xml:id="the-website-env-englishonly">
|
|
||||||
<term><varname>ENGLISH_ONLY</varname></term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Default: undefined. Build and include all
|
|
||||||
translations.</para>
|
|
||||||
|
|
||||||
<para><userinput>ENGLISH_ONLY=yes</userinput>: use only
|
|
||||||
the English documents and ignore all translations.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry xml:id="the-website-env-webonly">
|
|
||||||
<term><varname>WEB_ONLY</varname></term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Default: undefined. Build both the web site
|
|
||||||
and all the books and articles.</para>
|
|
||||||
|
|
||||||
<para><userinput>WEB_ONLY=yes</userinput>: build or install
|
|
||||||
only <acronym>HTML</acronym> pages from the
|
|
||||||
<filename>en_US.ISO8859-1/htdocs</filename> directory.
|
|
||||||
Other directories and documents, including books and
|
|
||||||
articles, will be ignored.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry xml:id="the-website-env-weblang">
|
|
||||||
<term><varname>WEB_LANG</varname></term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Default: undefined. Build and include all the
|
|
||||||
available languages on the web site.</para>
|
|
||||||
|
|
||||||
<para>Set to a space-separated list of languages to be
|
|
||||||
included in the build
|
|
||||||
or install. The formats are the same as the directory
|
|
||||||
names in the document root directory. For example, to
|
|
||||||
include the German and French documents:</para>
|
|
||||||
|
|
||||||
<screen><userinput>WEB_LANG="de_DE.ISO8859-1 fr_FR.ISO8859-1"</userinput></screen>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
|
|
||||||
<para><varname>WEB_ONLY</varname>, <varname>WEB_LANG</varname>,
|
|
||||||
and <varname>ENGLISH_ONLY</varname> are &man.make.1; variables
|
|
||||||
and can be set in <filename>/etc/make.conf</filename>,
|
|
||||||
<filename>Makefile.inc</filename>, as environment variables on
|
|
||||||
the command line, or in dot files.</para>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="the-website-build">
|
|
||||||
<title>Building and Installing the Web Pages</title>
|
|
||||||
|
|
||||||
<para>Having obtained the documentation and web site source files,
|
|
||||||
the web site can be built.</para>
|
|
||||||
|
|
||||||
<para>An actual installation of the web site is run as the <systemitem class="username">root</systemitem>
|
|
||||||
user because the permissions on the web server directory will
|
|
||||||
not allow files to be installed by an unprivileged user.
|
|
||||||
For testing, it can be useful to install the files as a normal
|
|
||||||
user to a temporary directory.</para>
|
|
||||||
|
|
||||||
<para>In these examples, the web site files are built by user
|
|
||||||
<systemitem class="username">jru</systemitem> in their home
|
|
||||||
directory, <filename>~/doc</filename>, with a full path of
|
|
||||||
<filename>/usr/home/jru/doc</filename>.</para>
|
|
||||||
|
|
||||||
<tip>
|
|
||||||
<para>The web site build uses the <filename>INDEX</filename>
|
|
||||||
from the Ports Collection and might fail if that file or
|
|
||||||
<filename>/usr/ports</filename> is not
|
|
||||||
present. The simplest approach is to install the <link xlink:href="&url.books.handbook;/ports.html#ports-tree">Ports
|
|
||||||
Collection</link>.</para>
|
|
||||||
</tip>
|
|
||||||
|
|
||||||
<example xml:id="the-website-examples-build">
|
|
||||||
<title>Build the Full Web Site and All Documents</title>
|
|
||||||
|
|
||||||
<para>Build the web site and all documents. The resulting files
|
|
||||||
are left in the document tree:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>cd ~/doc/en_US.ISO8859-1/htdocs/</userinput>
|
|
||||||
&prompt.user; <userinput>make all</userinput></screen>
|
|
||||||
</example>
|
|
||||||
|
|
||||||
<example xml:id="the-website-examples-buildinstall-englishonly">
|
|
||||||
<title>Build Only the Web Site in English</title>
|
|
||||||
|
|
||||||
<para>Build the web site only, in English, as user
|
|
||||||
<systemitem class="username">jru</systemitem>, and install
|
|
||||||
the resulting files into <filename>/tmp/www</filename> for
|
|
||||||
testing:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>cd ~/doc/en_US.ISO8859-1/htdocs/</userinput>
|
|
||||||
&prompt.user; <userinput>env DESTDIR=/tmp/www make ENGLISH_ONLY=yes WEB_ONLY=yes all install</userinput></screen>
|
|
||||||
</example>
|
|
||||||
|
|
||||||
<example xml:id="the-website-examples-buildinstall">
|
|
||||||
<title>Build and Install the Web Site</title>
|
|
||||||
|
|
||||||
<para>Build the web site and all documents as user
|
|
||||||
<systemitem class="username">jru</systemitem>. Install the
|
|
||||||
resulting files as
|
|
||||||
<systemitem class="username">root</systemitem> into the
|
|
||||||
default directory,
|
|
||||||
<filename>/root/public_html</filename>:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>cd ~/doc/en_US.ISO8859-1/htdocs</userinput>
|
|
||||||
&prompt.user; <userinput>make all</userinput>
|
|
||||||
&prompt.user; <userinput>su -</userinput>
|
|
||||||
Password:
|
|
||||||
&prompt.root; <userinput>cd /usr/home/jru/doc/en_US.ISO8859-1/htdocs</userinput>
|
|
||||||
&prompt.root; <userinput>make install</userinput></screen>
|
|
||||||
</example>
|
|
||||||
|
|
||||||
<para>The install process does not delete any old or outdated
|
|
||||||
files that existed previously in the same directory. If a new
|
|
||||||
copy of the site is built and installed every day, this command
|
|
||||||
will find and delete all files that have not been updated in
|
|
||||||
three days:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.root; <userinput>find <replaceable>/usr/local/www</replaceable> -ctime 3 -delete</userinput></screen>
|
|
||||||
</sect1>
|
|
||||||
</chapter>
|
|
|
@ -1,141 +0,0 @@
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
|
||||||
(SGML, HTML, PDF, PostScript, RTF and so forth) with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
|
||||||
copyright notice, this list of conditions and the following
|
|
||||||
disclaimer as the first lines of this file unmodified.
|
|
||||||
|
|
||||||
2. Redistributions in compiled form (transformed to other DTDs,
|
|
||||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
|
||||||
the above copyright notice, this list of conditions and the
|
|
||||||
following disclaimer in the documentation and/or other materials
|
|
||||||
provided with the distribution.
|
|
||||||
|
|
||||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
|
||||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
||||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
$FreeBSD$
|
|
||||||
-->
|
|
||||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="tools">
|
|
||||||
<title>Tools</title>
|
|
||||||
|
|
||||||
<para>Several software tools are used to manage the FreeBSD
|
|
||||||
documentation and render it to different output formats. Some of
|
|
||||||
these tools are required and must be installed before working
|
|
||||||
through the examples in the following chapters. Some are
|
|
||||||
optional, adding capabilities or making the job of creating
|
|
||||||
documentation less demanding.</para>
|
|
||||||
|
|
||||||
<sect1 xml:id="tools-required">
|
|
||||||
<title>Required Tools</title>
|
|
||||||
|
|
||||||
<para>Install
|
|
||||||
<package>textproc/docproj</package> from the
|
|
||||||
Ports Collection. This <emphasis>meta-port</emphasis> installs
|
|
||||||
all the applications required to do useful work with the &os;
|
|
||||||
documentation. Some further notes on particular components are
|
|
||||||
given below.</para>
|
|
||||||
|
|
||||||
<sect2>
|
|
||||||
<title><acronym>DTD</acronym>s and
|
|
||||||
<acronym>Entities</acronym></title>
|
|
||||||
|
|
||||||
<para>&os; documentation uses several Document Type Definitions
|
|
||||||
(<acronym>DTD</acronym>s) and sets of <acronym>XML</acronym>
|
|
||||||
entities. These are all installed by the
|
|
||||||
<package>textproc/docproj</package>
|
|
||||||
port.</para>
|
|
||||||
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term><acronym>XHTML</acronym> <acronym>DTD</acronym>
|
|
||||||
(<package>textproc/xhtml</package>)</term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para><acronym>XHTML</acronym> is the markup language of
|
|
||||||
choice for the World Wide Web, and is used throughout
|
|
||||||
the &os; web site.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>DocBook <acronym>DTD</acronym> (<package>textproc/docbook-xml-450</package>)</term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>DocBook is designed for marking up technical
|
|
||||||
documentation. Most of the &os; documentation is
|
|
||||||
written in DocBook.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>ISO 8879 entities
|
|
||||||
(<package>textproc/iso8879</package>)</term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Character entities from the ISO 8879:1986 standard
|
|
||||||
used by many <acronym>DTD</acronym>s. Includes named
|
|
||||||
mathematical symbols, additional characters in the Latin
|
|
||||||
character set (accents, diacriticals, and so on), and
|
|
||||||
Greek symbols.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</sect2>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="tools-optional">
|
|
||||||
<title>Optional Tools</title>
|
|
||||||
|
|
||||||
<para>These applications are not required, but can make working on
|
|
||||||
the documentation easier or add capabilities.</para>
|
|
||||||
|
|
||||||
<sect2>
|
|
||||||
<title>Software</title>
|
|
||||||
|
|
||||||
<variablelist>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><application>Vim</application>
|
|
||||||
(<package>editors/vim</package>)</term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>A popular editor for working with
|
|
||||||
<acronym>XML</acronym> and derived documents, like
|
|
||||||
DocBook <acronym>XML</acronym>.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><application>Emacs</application> or
|
|
||||||
<application>XEmacs</application>
|
|
||||||
(<package>editors/emacs</package> or
|
|
||||||
<package>editors/xemacs</package>)</term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Both of these editors include a special mode for
|
|
||||||
editing documents marked up according to an
|
|
||||||
<acronym>XML</acronym> <acronym>DTD</acronym>. This
|
|
||||||
mode includes commands to reduce the amount of typing
|
|
||||||
needed, and help reduce the possibility of
|
|
||||||
errors.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</sect2>
|
|
||||||
</sect1>
|
|
||||||
</chapter>
|
|
|
@ -1,473 +0,0 @@
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Copyright (c) 1999 Nik Clayton, All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
|
||||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
|
||||||
copyright notice, this list of conditions and the following
|
|
||||||
disclaimer as the first lines of this file unmodified.
|
|
||||||
|
|
||||||
2. Redistributions in compiled form (transformed to other DTDs,
|
|
||||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
|
||||||
the above copyright notice, this list of conditions and the
|
|
||||||
following disclaimer in the documentation and/or other materials
|
|
||||||
provided with the distribution.
|
|
||||||
|
|
||||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
|
||||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
||||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
$FreeBSD$
|
|
||||||
-->
|
|
||||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="translations">
|
|
||||||
<title>Translations</title>
|
|
||||||
|
|
||||||
<para>This is the FAQ for people translating the FreeBSD
|
|
||||||
documentation (FAQ, Handbook, tutorials, manual pages, and others)
|
|
||||||
to different languages.</para>
|
|
||||||
|
|
||||||
<para>It is <emphasis>very</emphasis> heavily based on the
|
|
||||||
translation FAQ from the FreeBSD German Documentation Project,
|
|
||||||
originally written by Frank Gründer
|
|
||||||
<email>elwood@mc5sys.in-berlin.de</email> and translated back to
|
|
||||||
English by Bernd Warken <email>bwarken@mayn.de</email>.</para>
|
|
||||||
|
|
||||||
<para>The FAQ is maintained by the &a.doceng;.</para>
|
|
||||||
|
|
||||||
<qandaset>
|
|
||||||
<qandaentry>
|
|
||||||
<question>
|
|
||||||
<para>What do <phrase>i18n</phrase> and <phrase>l10n</phrase>
|
|
||||||
mean?</para>
|
|
||||||
</question>
|
|
||||||
|
|
||||||
<answer>
|
|
||||||
<para><phrase>i18n</phrase> means
|
|
||||||
<phrase>internationalization</phrase> and
|
|
||||||
<phrase>l10n</phrase> means <phrase>localization</phrase>.
|
|
||||||
They are just a convenient shorthand.</para>
|
|
||||||
|
|
||||||
<para><phrase>i18n</phrase> can be read as <quote>i</quote>
|
|
||||||
followed by 18 letters, followed by <quote>n</quote>.
|
|
||||||
Similarly, <phrase>l10n</phrase> is <quote>l</quote>
|
|
||||||
followed by 10 letters, followed by <quote>n</quote>.</para>
|
|
||||||
</answer>
|
|
||||||
</qandaentry>
|
|
||||||
|
|
||||||
<qandaentry>
|
|
||||||
<question>
|
|
||||||
<para>Is there a mailing list for translators?</para>
|
|
||||||
</question>
|
|
||||||
|
|
||||||
<answer>
|
|
||||||
<para>Yes. Different translation groups have their own
|
|
||||||
mailing lists. The <link xlink:href="http://www.freebsd.org/docproj/translations.html">list
|
|
||||||
of translation projects</link> has more information about
|
|
||||||
the mailing lists and web sites run by each translation
|
|
||||||
project. In addition there is
|
|
||||||
<email>freebsd-translators@freebsd.org</email> for general
|
|
||||||
translation discussion.</para>
|
|
||||||
</answer>
|
|
||||||
</qandaentry>
|
|
||||||
|
|
||||||
<qandaentry>
|
|
||||||
<question>
|
|
||||||
<para>Are more translators needed?</para>
|
|
||||||
</question>
|
|
||||||
|
|
||||||
<answer>
|
|
||||||
<para>Yes. The more people work on translation the faster it
|
|
||||||
gets done, and the faster changes to the English
|
|
||||||
documentation are mirrored in the translated
|
|
||||||
documents.</para>
|
|
||||||
|
|
||||||
<para>You do not have to be a professional translator to be
|
|
||||||
able to help.</para>
|
|
||||||
</answer>
|
|
||||||
</qandaentry>
|
|
||||||
|
|
||||||
<qandaentry>
|
|
||||||
<question>
|
|
||||||
<para>What languages do I need to know?</para>
|
|
||||||
</question>
|
|
||||||
|
|
||||||
<answer>
|
|
||||||
<para>Ideally, you will have a good knowledge of written
|
|
||||||
English, and obviously you will need to be fluent in the
|
|
||||||
language you are translating to.</para>
|
|
||||||
|
|
||||||
<para>English is not strictly necessary. For example, you
|
|
||||||
could do a Hungarian translation of the FAQ from the Spanish
|
|
||||||
translation.</para>
|
|
||||||
</answer>
|
|
||||||
</qandaentry>
|
|
||||||
|
|
||||||
<qandaentry>
|
|
||||||
<question>
|
|
||||||
<para>What software do I need to know?</para>
|
|
||||||
</question>
|
|
||||||
|
|
||||||
<answer>
|
|
||||||
<para>It is strongly recommended that you maintain a local
|
|
||||||
copy of the FreeBSD Subversion repository (at least the
|
|
||||||
documentation part). This can be done by running:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>svn checkout https://svn.FreeBSD.org/doc/head/ head</userinput></screen>
|
|
||||||
|
|
||||||
<para><link xlink:href="https://svn.FreeBSD.org/">svn.FreeBSD.org</link>
|
|
||||||
is a public <literal>SVN</literal> server.
|
|
||||||
Verify the server
|
|
||||||
certificate from the list of <link xlink:href="&url.books.handbook;/svn.html#svn-mirrors">Subversion
|
|
||||||
mirror sites</link>.</para>
|
|
||||||
|
|
||||||
<note>
|
|
||||||
<para>This will require the <package>devel/subversion</package> package to
|
|
||||||
be installed.</para>
|
|
||||||
</note>
|
|
||||||
|
|
||||||
<para>You should be comfortable using
|
|
||||||
<application>svn</application>. This will allow you to see
|
|
||||||
what has changed between different versions of the files
|
|
||||||
that make up the documentation.</para>
|
|
||||||
|
|
||||||
<para>For example, to view the differences between revisions
|
|
||||||
<literal>r33733</literal> and <literal>r33734</literal> of
|
|
||||||
<filename>en_US.ISO8859-1/books/fdp-primer/book.xml</filename>,
|
|
||||||
run:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>svn diff -r<replaceable>33733</replaceable>:<replaceable>33734</replaceable> en_US.ISO8859-1/books/fdp-primer/book.xml</userinput></screen>
|
|
||||||
</answer>
|
|
||||||
</qandaentry>
|
|
||||||
|
|
||||||
<qandaentry>
|
|
||||||
<question>
|
|
||||||
<para>How do I find out who else might be translating to the
|
|
||||||
same language?</para>
|
|
||||||
</question>
|
|
||||||
|
|
||||||
<answer>
|
|
||||||
<para>The <link xlink:href="http://www.FreeBSD.org/docproj/translations.html">Documentation
|
|
||||||
Project translations page</link> lists the translation
|
|
||||||
efforts that are currently known about. If others are
|
|
||||||
already working on translating documentation to your
|
|
||||||
language, please do not duplicate their efforts. Instead,
|
|
||||||
contact them to see how you can help.</para>
|
|
||||||
|
|
||||||
<para>If no one is listed on that page as translating for your
|
|
||||||
language, then send a message to the &a.doc; in case someone
|
|
||||||
else is thinking of doing a translation, but has not
|
|
||||||
announced it yet.</para>
|
|
||||||
</answer>
|
|
||||||
</qandaentry>
|
|
||||||
|
|
||||||
<qandaentry>
|
|
||||||
<question>
|
|
||||||
<para>No one else is translating to my language. What do I
|
|
||||||
do?</para>
|
|
||||||
</question>
|
|
||||||
|
|
||||||
<answer>
|
|
||||||
<para>Congratulations, you have just started the
|
|
||||||
<quote>FreeBSD <replaceable>your-language-here</replaceable>
|
|
||||||
Documentation Translation Project</quote>. Welcome
|
|
||||||
aboard.</para>
|
|
||||||
|
|
||||||
<para>First, decide whether or not you have got the time to
|
|
||||||
spare. Since you are the only person working on your
|
|
||||||
language at the moment it is going to be your responsibility
|
|
||||||
to publicize your work and coordinate any volunteers that
|
|
||||||
might want to help you.</para>
|
|
||||||
|
|
||||||
<para>Write an email to the Documentation Project mailing
|
|
||||||
list, announcing that you are going to translate the
|
|
||||||
documentation, so the Documentation Project translations
|
|
||||||
page can be maintained.</para>
|
|
||||||
|
|
||||||
<para>If there is already someone in your country providing
|
|
||||||
FreeBSD mirroring services you should contact them and ask
|
|
||||||
if you can have some webspace for your project, and possibly
|
|
||||||
an email address or mailing list services.</para>
|
|
||||||
|
|
||||||
<para>Then pick a document and start translating. It is best
|
|
||||||
to start with something fairly small—either the FAQ,
|
|
||||||
or one of the tutorials.</para>
|
|
||||||
</answer>
|
|
||||||
</qandaentry>
|
|
||||||
|
|
||||||
<qandaentry>
|
|
||||||
<question>
|
|
||||||
<para>I have translated some documentation, where do I send
|
|
||||||
it?</para>
|
|
||||||
</question>
|
|
||||||
|
|
||||||
<answer>
|
|
||||||
<para>That depends. If you are already working with a
|
|
||||||
translation team (such as the Japanese team, or the German
|
|
||||||
team) then they will have their own procedures for handling
|
|
||||||
submitted documentation, and these will be outlined on their
|
|
||||||
web pages.</para>
|
|
||||||
|
|
||||||
<para>If you are the only person working on a particular
|
|
||||||
language (or you are responsible for a translation project
|
|
||||||
and want to submit your changes back to the FreeBSD project)
|
|
||||||
then you should send your translation to the FreeBSD project
|
|
||||||
(see the next question).</para>
|
|
||||||
</answer>
|
|
||||||
</qandaentry>
|
|
||||||
|
|
||||||
<qandaentry>
|
|
||||||
<question>
|
|
||||||
<para>I am the only person working on translating to this
|
|
||||||
language, how do I submit my translation?</para>
|
|
||||||
|
|
||||||
<para>or</para>
|
|
||||||
|
|
||||||
<para>We are a translation team, and want to submit
|
|
||||||
documentation that our members have translated for
|
|
||||||
us.</para>
|
|
||||||
</question>
|
|
||||||
|
|
||||||
<answer>
|
|
||||||
<para>First, make sure your translation is organized properly.
|
|
||||||
This means that it should drop into the existing
|
|
||||||
documentation tree and build straight away.</para>
|
|
||||||
|
|
||||||
<para>Currently, the FreeBSD documentation is stored in a top
|
|
||||||
level directory called <filename>head/</filename>.
|
|
||||||
Directories below this are named according to the language
|
|
||||||
code they are written in, as defined in ISO639
|
|
||||||
(<filename>/usr/share/misc/iso639</filename> on a version of
|
|
||||||
FreeBSD newer than 20th January 1999).</para>
|
|
||||||
|
|
||||||
<para>If your language can be encoded in different ways (for
|
|
||||||
example, Chinese) then there should be directories below
|
|
||||||
this, one for each encoding format you have provided.</para>
|
|
||||||
|
|
||||||
<para>Finally, you should have directories for each
|
|
||||||
document.</para>
|
|
||||||
|
|
||||||
<para>For example, a hypothetical Swedish translation might
|
|
||||||
look like:</para>
|
|
||||||
|
|
||||||
<programlisting>head/
|
|
||||||
sv_SE.ISO8859-1/
|
|
||||||
Makefile
|
|
||||||
htdocs/
|
|
||||||
docproj/
|
|
||||||
books/
|
|
||||||
faq/
|
|
||||||
Makefile
|
|
||||||
book.xml</programlisting>
|
|
||||||
|
|
||||||
<para><literal>sv_SE.ISO8859-1</literal> is the name of the
|
|
||||||
translation, in
|
|
||||||
<filename><replaceable>lang</replaceable>.<replaceable>encoding</replaceable></filename>
|
|
||||||
form. Note the two Makefiles, which will be used to build
|
|
||||||
the documentation.</para>
|
|
||||||
|
|
||||||
<para>Use &man.tar.1; and &man.gzip.1; to compress up your
|
|
||||||
documentation, and send it to the project.</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>cd doc</userinput>
|
|
||||||
&prompt.user; <userinput>tar cf swedish-docs.tar sv_SE.ISO8859-1</userinput>
|
|
||||||
&prompt.user; <userinput>gzip -9 swedish-docs.tar</userinput></screen>
|
|
||||||
|
|
||||||
<para>Put <filename>swedish-docs.tar.gz</filename> somewhere.
|
|
||||||
If you do not have access to your own webspace (perhaps your
|
|
||||||
ISP does not let you have any) then you can email
|
|
||||||
&a.doceng;, and arrange to email the files when it is
|
|
||||||
convenient.</para>
|
|
||||||
|
|
||||||
<para>Either way, you should use Bugzilla to submit a
|
|
||||||
report indicating that you have submitted the documentation.
|
|
||||||
It would be very helpful if you could get other people to
|
|
||||||
look over your translation and double check it first, since
|
|
||||||
it is unlikely that the person committing it will be fluent
|
|
||||||
in the language.</para>
|
|
||||||
|
|
||||||
<para>Someone (probably the Documentation Project Manager,
|
|
||||||
currently &a.doceng;) will then take your translation and
|
|
||||||
confirm that it builds. In particular, the following things
|
|
||||||
will be looked at:</para>
|
|
||||||
|
|
||||||
<orderedlist>
|
|
||||||
<listitem>
|
|
||||||
<para>Do all your files use RCS strings (such as
|
|
||||||
"ID")?</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Does <command>make all</command> in the
|
|
||||||
<filename>sv_SE.ISO8859-1</filename> directory work
|
|
||||||
correctly?</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Does <command>make install</command> work
|
|
||||||
correctly?</para>
|
|
||||||
</listitem>
|
|
||||||
</orderedlist>
|
|
||||||
|
|
||||||
<para>If there are any problems then whoever is looking at the
|
|
||||||
submission will get back to you to work them out.</para>
|
|
||||||
|
|
||||||
<para>If there are no problems your translation will be
|
|
||||||
committed as soon as possible.</para>
|
|
||||||
</answer>
|
|
||||||
</qandaentry>
|
|
||||||
|
|
||||||
<qandaentry>
|
|
||||||
<question>
|
|
||||||
<para>Can I include language or country specific text in my
|
|
||||||
translation?</para>
|
|
||||||
</question>
|
|
||||||
|
|
||||||
<answer>
|
|
||||||
<para>We would prefer that you did not.</para>
|
|
||||||
|
|
||||||
<para>For example, suppose that you are translating the
|
|
||||||
Handbook to Korean, and want to include a section about
|
|
||||||
retailers in Korea in your Handbook.</para>
|
|
||||||
|
|
||||||
<para>There is no real reason why that information should not
|
|
||||||
be in the English (or German, or Spanish, or Japanese, or
|
|
||||||
…) versions as well. It is feasible that an English
|
|
||||||
speaker in Korea might try to pick up a copy of FreeBSD
|
|
||||||
whilst over there. It also helps increase FreeBSD's
|
|
||||||
perceived presence around the globe, which is not a bad
|
|
||||||
thing.</para>
|
|
||||||
|
|
||||||
<para>If you have country specific information, please submit
|
|
||||||
it as a change to the English Handbook (using
|
|
||||||
Bugzilla) and then translate the change back to your
|
|
||||||
language in the translated Handbook.</para>
|
|
||||||
|
|
||||||
<para>Thanks.</para>
|
|
||||||
</answer>
|
|
||||||
</qandaentry>
|
|
||||||
|
|
||||||
<qandaentry>
|
|
||||||
<question>
|
|
||||||
<para>How should language specific characters be
|
|
||||||
included?</para>
|
|
||||||
</question>
|
|
||||||
|
|
||||||
<answer>
|
|
||||||
<para>Non-ASCII characters in the documentation should be
|
|
||||||
included using SGML entities.</para>
|
|
||||||
|
|
||||||
<para>Briefly, these look like an ampersand (&), the name
|
|
||||||
of the entity, and a semi-colon (;).</para>
|
|
||||||
|
|
||||||
<para>The entity names are defined in ISO8879, which is in the
|
|
||||||
ports tree as <package>textproc/iso8879</package>.</para>
|
|
||||||
|
|
||||||
<para>A few examples include:</para>
|
|
||||||
|
|
||||||
<segmentedlist>
|
|
||||||
<segtitle>Entity</segtitle>
|
|
||||||
|
|
||||||
<segtitle>Appearance</segtitle>
|
|
||||||
|
|
||||||
<segtitle>Description</segtitle>
|
|
||||||
|
|
||||||
<seglistitem>
|
|
||||||
<seg>&eacute;</seg>
|
|
||||||
<seg>é</seg>
|
|
||||||
<seg>Small <quote>e</quote> with an acute accent</seg>
|
|
||||||
</seglistitem>
|
|
||||||
|
|
||||||
<seglistitem>
|
|
||||||
<seg>&Eacute;</seg>
|
|
||||||
<seg>É</seg>
|
|
||||||
<seg>Large <quote>E</quote> with an acute accent</seg>
|
|
||||||
</seglistitem>
|
|
||||||
|
|
||||||
<seglistitem>
|
|
||||||
<seg>&uuml;</seg>
|
|
||||||
<seg>ü</seg>
|
|
||||||
<seg>Small <quote>u</quote> with an umlaut</seg>
|
|
||||||
</seglistitem>
|
|
||||||
</segmentedlist>
|
|
||||||
|
|
||||||
<para>After you have installed the iso8879 port, the files in
|
|
||||||
<filename>/usr/local/share/xml/iso8879</filename> contain
|
|
||||||
the complete list.</para>
|
|
||||||
</answer>
|
|
||||||
</qandaentry>
|
|
||||||
|
|
||||||
<qandaentry>
|
|
||||||
<question>
|
|
||||||
<para>Addressing the reader</para>
|
|
||||||
</question>
|
|
||||||
|
|
||||||
<answer>
|
|
||||||
<para>In the English documents, the reader is addressed as
|
|
||||||
<quote>you</quote>, there is no formal/informal distinction
|
|
||||||
as there is in some languages.</para>
|
|
||||||
|
|
||||||
<para>If you are translating to a language which does
|
|
||||||
distinguish, use whichever form is typically used in other
|
|
||||||
technical documentation in your language. If in doubt, use
|
|
||||||
a mildly polite form.</para>
|
|
||||||
</answer>
|
|
||||||
</qandaentry>
|
|
||||||
|
|
||||||
<qandaentry>
|
|
||||||
<question>
|
|
||||||
<para>Do I need to include any additional information in my
|
|
||||||
translations?</para>
|
|
||||||
</question>
|
|
||||||
|
|
||||||
<answer>
|
|
||||||
<para>Yes.</para>
|
|
||||||
|
|
||||||
<para>The header of the English version of each document will
|
|
||||||
look something like this:</para>
|
|
||||||
|
|
||||||
<programlisting><!--
|
|
||||||
The FreeBSD Documentation Project
|
|
||||||
|
|
||||||
$FreeBSD: head/en_US.ISO8859-1/books/faq/book.xml 38674 2012-04-14 13:52:52Z $
|
|
||||||
--></programlisting>
|
|
||||||
|
|
||||||
<para>The exact boilerplate may change, but it will always
|
|
||||||
include a $FreeBSD$ line and the phrase
|
|
||||||
<literal>The FreeBSD Documentation Project</literal>.
|
|
||||||
Note that the $FreeBSD part is expanded automatically
|
|
||||||
by Subversion, so it should be empty (just
|
|
||||||
<literal>$FreeBSD$</literal>) for new
|
|
||||||
files.</para>
|
|
||||||
|
|
||||||
<para>Your translated documents should include their own
|
|
||||||
$FreeBSD$ line, and change the
|
|
||||||
<literal>FreeBSD Documentation Project</literal> line to
|
|
||||||
<literal>The FreeBSD <replaceable>language</replaceable>
|
|
||||||
Documentation Project</literal>.</para>
|
|
||||||
|
|
||||||
<para>In addition, you should add a third line which indicates
|
|
||||||
which revision of the English text this is based on.</para>
|
|
||||||
|
|
||||||
<para>So, the Spanish version of this file might start:</para>
|
|
||||||
|
|
||||||
<programlisting><!--
|
|
||||||
The FreeBSD Spanish Documentation Project
|
|
||||||
|
|
||||||
$FreeBSD: head/es_ES.ISO8859-1/books/faq/book.xml 38826 2012-05-17 19:12:14Z hrs $
|
|
||||||
Original revision: r38674
|
|
||||||
--></programlisting>
|
|
||||||
</answer>
|
|
||||||
</qandaentry>
|
|
||||||
</qandaset>
|
|
||||||
</chapter>
|
|
|
@ -1,177 +0,0 @@
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Copyright (c) 2013 Warren Block
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above
|
|
||||||
copyright notice, this list of conditions and the following
|
|
||||||
disclaimer in the documentation and/or other materials provided
|
|
||||||
with the distribution.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS
|
|
||||||
IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
||||||
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
||||||
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
||||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
$FreeBSD$
|
|
||||||
-->
|
|
||||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="working-copy">
|
|
||||||
<title>The Working Copy</title>
|
|
||||||
|
|
||||||
<para>The <emphasis>working copy</emphasis> is a copy of the &os;
|
|
||||||
repository documentation tree downloaded onto the local computer.
|
|
||||||
Changes are made to the local working copy, tested, and then
|
|
||||||
submitted as patches to be committed to the main
|
|
||||||
repository.</para>
|
|
||||||
|
|
||||||
<para>A full copy of the documentation tree can occupy 700 megabytes
|
|
||||||
of disk space. Allow for a full gigabyte of space to have room
|
|
||||||
for temporary files and test versions of various output
|
|
||||||
formats.</para>
|
|
||||||
|
|
||||||
<para><link xlink:href="&url.books.handbook;/svn.html"><application>Subversion</application></link>
|
|
||||||
is used to manage the &os; documentation files. It is installed
|
|
||||||
by <package>textproc/docproj</package> as one of
|
|
||||||
the required applications.</para>
|
|
||||||
|
|
||||||
<sect1 xml:id="working-copy-doc-and-src">
|
|
||||||
<title>Documentation and Manual Pages</title>
|
|
||||||
|
|
||||||
<para>&os; documentation is not just books and articles. Manual
|
|
||||||
pages for all the commands and configuration files are also part
|
|
||||||
of the documentation, and part of the <acronym>FDP</acronym>'s
|
|
||||||
territory. Two repositories are involved:
|
|
||||||
<literal>doc</literal> for the books and articles, and
|
|
||||||
<literal>base</literal> for the operating system and manual
|
|
||||||
pages. To edit manual pages, the <literal>base</literal>
|
|
||||||
repository must be checked out separately.</para>
|
|
||||||
|
|
||||||
<para>Repositories may contain multiple versions of documentation
|
|
||||||
and source code. New modifications are almost always made only
|
|
||||||
to the latest version, called <literal>head</literal>.</para>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="working-copy-choosing-directory">
|
|
||||||
<title>Choosing a Directory</title>
|
|
||||||
|
|
||||||
<para>&os; documentation is traditionally stored in
|
|
||||||
<filename>/usr/doc/</filename>, and system
|
|
||||||
source code with manual pages in
|
|
||||||
<filename>/usr/src/</filename>. These
|
|
||||||
directory trees are relocatable, and users may want to put the
|
|
||||||
working copies in other locations to avoid interfering with
|
|
||||||
existing information in the main directories. The examples
|
|
||||||
that follow use <filename>~/doc</filename>
|
|
||||||
and <filename>~/src</filename>, both
|
|
||||||
subdirectories of the user's home directory.</para>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="working-copy-checking-out">
|
|
||||||
<title>Checking Out a Copy</title>
|
|
||||||
|
|
||||||
<para>A download of a working copy from the repository is called
|
|
||||||
a <emphasis>checkout</emphasis>, and done with
|
|
||||||
<command>svn checkout</command>. This example checks out a
|
|
||||||
copy of the latest version (<literal>head</literal>) of
|
|
||||||
the main documentation tree:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>svn checkout https://svn.FreeBSD.org/doc/head <replaceable>~/doc</replaceable></userinput></screen>
|
|
||||||
|
|
||||||
<para>A checkout of the source code to work on manual pages is
|
|
||||||
very similar:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>svn checkout https://svn.FreeBSD.org/base/head <replaceable>~/src</replaceable></userinput></screen>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="working-copy-updating">
|
|
||||||
<title>Updating a Working Copy</title>
|
|
||||||
|
|
||||||
<para>The documents and files in the &os; repository change daily.
|
|
||||||
People modify files and commit changes frequently. Even a short
|
|
||||||
time after an initial checkout, there will already be
|
|
||||||
differences between the local working copy and the main &os;
|
|
||||||
repository. To update the local version with the changes that
|
|
||||||
have been made to the main repository, use
|
|
||||||
<command>svn update</command> on the directory containing the
|
|
||||||
local working copy:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>svn update <replaceable>~/doc</replaceable></userinput></screen>
|
|
||||||
|
|
||||||
<para>Get in the protective habit of using
|
|
||||||
<command>svn update</command> before editing document files.
|
|
||||||
Someone else may have edited that file very recently, and the
|
|
||||||
local working copy will not include the latest changes until it
|
|
||||||
has been updated. Editing the newest version of a file is much
|
|
||||||
easier than trying to combine an older, edited local file with
|
|
||||||
the newer version from the repository.</para>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="working-copy-revert">
|
|
||||||
<title>Reverting Changes</title>
|
|
||||||
|
|
||||||
<para>Sometimes it turns out that changes were
|
|
||||||
not necessary after all, or the writer just wants to start over.
|
|
||||||
Files can be <quote>reset</quote> to their unchanged form with
|
|
||||||
<command>svn revert</command>. For example, to erase the edits
|
|
||||||
made to <filename>chapter.xml</filename> and reset it to
|
|
||||||
unmodified form:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>svn revert chapter.xml</userinput></screen>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="working-copy-making-diff">
|
|
||||||
<title>Making a Diff</title>
|
|
||||||
|
|
||||||
<para>After edits to a file or group of files are completed, the
|
|
||||||
differences between the local working copy and the version on
|
|
||||||
the &os; repository must be collected into a single file for
|
|
||||||
submission. These <emphasis>diff</emphasis> files are produced
|
|
||||||
by redirecting the output of <command>svn diff</command> into a
|
|
||||||
file:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>cd <replaceable>~/doc</replaceable></userinput>
|
|
||||||
&prompt.user; <userinput>svn diff > <replaceable>doc-fix-spelling.diff</replaceable></userinput></screen>
|
|
||||||
|
|
||||||
<para>Give the file a meaningful name that identifies the
|
|
||||||
contents. The example above is for spelling fixes to the whole
|
|
||||||
documentation tree.</para>
|
|
||||||
|
|
||||||
<para>If the diff file is to be submitted with the web
|
|
||||||
<quote><link xlink:href="https://bugs.FreeBSD.org/bugzilla/enter_bug.cgi">Submit a &os;
|
|
||||||
problem report</link></quote> interface, add a
|
|
||||||
<filename>.txt</filename> extension to give the earnest and
|
|
||||||
simple-minded web form a clue that the contents are plain
|
|
||||||
text.</para>
|
|
||||||
|
|
||||||
<para>Be careful: <command>svn diff</command> includes all changes
|
|
||||||
made in the current directory and any subdirectories. If there
|
|
||||||
are files in the working copy with edits that are not ready to
|
|
||||||
be submitted yet, provide a list of only the files that are to
|
|
||||||
be included:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.user; <userinput>cd <replaceable>~/doc</replaceable></userinput>
|
|
||||||
&prompt.user; <userinput>svn diff <replaceable>disks/chapter.xml printers/chapter.xml</replaceable> > <replaceable>disks-printers.diff</replaceable></userinput></screen>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="working-copy-subversion-references">
|
|
||||||
<title><application>Subversion</application> References</title>
|
|
||||||
|
|
||||||
<para>These examples show very basic usage of
|
|
||||||
<application>Subversion</application>. More detail is available
|
|
||||||
in the <link xlink:href="http://svnbook.red-bean.com/">Subversion Book</link>
|
|
||||||
and the <link xlink:href="http://subversion.apache.org/docs/">Subversion
|
|
||||||
documentation</link>.</para>
|
|
||||||
</sect1>
|
|
||||||
</chapter>
|
|
|
@ -1,592 +0,0 @@
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Copyright (c) 1998 Nik Clayton, All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
|
||||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
|
||||||
copyright notice, this list of conditions and the following
|
|
||||||
disclaimer as the first lines of this file unmodified.
|
|
||||||
|
|
||||||
2. Redistributions in compiled form (transformed to other DTDs,
|
|
||||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
|
||||||
the above copyright notice, this list of conditions and the
|
|
||||||
following disclaimer in the documentation and/or other materials
|
|
||||||
provided with the distribution.
|
|
||||||
|
|
||||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
|
||||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
||||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
$FreeBSD$
|
|
||||||
-->
|
|
||||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="writing-style">
|
|
||||||
<title>Writing Style</title>
|
|
||||||
|
|
||||||
<sect1 xml:id="writing-style-tips">
|
|
||||||
<title>Tips</title>
|
|
||||||
|
|
||||||
<para>Technical documentation can be improved by consistent use of
|
|
||||||
several principles. Most of these can be classified into three
|
|
||||||
goals: <emphasis>be clear</emphasis>,
|
|
||||||
<emphasis>be complete</emphasis>, and
|
|
||||||
<emphasis>be concise</emphasis>. These goals can conflict with
|
|
||||||
each other. Good writing consists of a balance between
|
|
||||||
them.</para>
|
|
||||||
|
|
||||||
<sect2 xml:id="writing-style-be-clear">
|
|
||||||
<title>Be Clear</title>
|
|
||||||
|
|
||||||
<para>Clarity is extremely important. The reader may be a
|
|
||||||
novice, or reading the document in a second language. Strive
|
|
||||||
for simple, uncomplicated text that clearly explains the
|
|
||||||
concepts.</para>
|
|
||||||
|
|
||||||
<para>Avoid flowery or embellished speech, jokes, or colloquial
|
|
||||||
expressions. Write as simply and clearly as possible. Simple
|
|
||||||
text is easier to understand and translate.</para>
|
|
||||||
|
|
||||||
<para>Keep explanations as short, simple, and clear as possible.
|
|
||||||
Avoid empty phrases like <quote>in order to</quote>, which
|
|
||||||
usually just means <quote>to</quote>. Avoid potentially
|
|
||||||
patronizing words like <quote>basically</quote>. Avoid Latin
|
|
||||||
terms like <quote>i.e.</quote> or <quote>cf.</quote>, which
|
|
||||||
may be unknown outside of academic or scientific
|
|
||||||
groups.</para>
|
|
||||||
|
|
||||||
<para>Write in a formal style. Avoid addressing the reader
|
|
||||||
as <quote>you</quote>. For example, say
|
|
||||||
<quote>copy the file to <filename>/tmp</filename></quote>
|
|
||||||
rather than <quote>you can copy the file to
|
|
||||||
<filename>/tmp</filename></quote>.</para>
|
|
||||||
|
|
||||||
<para>Give clear, correct, <emphasis>tested</emphasis> examples.
|
|
||||||
A trivial example is better than no example. A good example
|
|
||||||
is better yet. Do not give bad examples, identifiable by
|
|
||||||
apologies or sentences like <quote>but really it should never
|
|
||||||
be done that way</quote>. Bad examples are worse than no
|
|
||||||
examples. Give good examples, because <emphasis>even when
|
|
||||||
warned not to use the example as shown</emphasis>, the
|
|
||||||
reader will usually just use the example as shown.</para>
|
|
||||||
|
|
||||||
<para>Avoid <emphasis>weasel words</emphasis> like
|
|
||||||
<quote>should</quote>, <quote>might</quote>,
|
|
||||||
<quote>try</quote>, or <quote>could</quote>. These words
|
|
||||||
imply that the speaker is unsure of the facts, and
|
|
||||||
create doubt in the reader.</para>
|
|
||||||
|
|
||||||
<para>Similarly, give instructions as imperative commands: not
|
|
||||||
<quote>you should do this</quote>, but merely
|
|
||||||
<quote>do this</quote>.</para>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="writing-style-be-complete">
|
|
||||||
<title>Be Complete</title>
|
|
||||||
|
|
||||||
<para>Do not make assumptions about the reader's abilities or
|
|
||||||
skill level. Tell them what they need to know. Give links to
|
|
||||||
other documents to provide background information without
|
|
||||||
having to recreate it. Put yourself in the reader's place,
|
|
||||||
anticipate the questions they will ask, and answer
|
|
||||||
them.</para>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="writing-style-be-concise">
|
|
||||||
<title>Be Concise</title>
|
|
||||||
|
|
||||||
<para>While features should be documented completely, sometimes
|
|
||||||
there is so much information that the reader cannot easily
|
|
||||||
find the specific detail needed. The balance between being
|
|
||||||
complete and being concise is a challenge. One approach is to
|
|
||||||
have an introduction, then a <quote>quick start</quote>
|
|
||||||
section that describes the most common situation, followed by
|
|
||||||
an in-depth reference section.</para>
|
|
||||||
</sect2>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="writing-style-guidelines">
|
|
||||||
<title>Guidelines</title>
|
|
||||||
|
|
||||||
<para>To promote consistency between the myriad authors of the
|
|
||||||
&os; documentation, some guidelines have been drawn up for
|
|
||||||
authors to follow.</para>
|
|
||||||
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term>Use American English Spelling</term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>There are several variants of English, with different
|
|
||||||
spellings for the same word. Where spellings differ, use
|
|
||||||
the American English variant. <quote>color</quote>, not
|
|
||||||
<quote>colour</quote>, <quote>rationalize</quote>, not
|
|
||||||
<quote>rationalise</quote>, and so on.</para>
|
|
||||||
|
|
||||||
<note>
|
|
||||||
<para>The use of British English may be accepted in the
|
|
||||||
case of a contributed article, however the spelling must
|
|
||||||
be consistent within the whole document. The other
|
|
||||||
documents such as books, web site, manual pages, etc.
|
|
||||||
will have to use American English.</para>
|
|
||||||
</note>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>Do not use contractions</term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Do not use contractions. Always spell the phrase out
|
|
||||||
in full. <quote>Don't use contractions</quote> is
|
|
||||||
wrong.</para>
|
|
||||||
|
|
||||||
<para>Avoiding contractions makes for a more formal tone, is
|
|
||||||
more precise, and is slightly easier for
|
|
||||||
translators.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>Use the serial comma</term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>In a list of items within a paragraph, separate each
|
|
||||||
item from the others with a comma. Separate the last item
|
|
||||||
from the others with a comma and the word
|
|
||||||
<quote>and</quote>.</para>
|
|
||||||
|
|
||||||
<para>For example:</para>
|
|
||||||
|
|
||||||
<blockquote>
|
|
||||||
<para>This is a list of one, two and three items.</para>
|
|
||||||
</blockquote>
|
|
||||||
|
|
||||||
<para>Is this a list of three items, <quote>one</quote>,
|
|
||||||
<quote>two</quote>, and <quote>three</quote>, or a list of
|
|
||||||
two items, <quote>one</quote> and <quote>two and
|
|
||||||
three</quote>?</para>
|
|
||||||
|
|
||||||
<para>It is better to be explicit and include a serial
|
|
||||||
comma:</para>
|
|
||||||
|
|
||||||
<blockquote>
|
|
||||||
<para>This is a list of one, two, and three items.</para>
|
|
||||||
</blockquote>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>Avoid redundant phrases</term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Do not use redundant phrases. In particular,
|
|
||||||
<quote>the command</quote>, <quote>the file</quote>, and
|
|
||||||
<quote>man command</quote> are often redundant.</para>
|
|
||||||
|
|
||||||
<para>For example, commands:</para>
|
|
||||||
|
|
||||||
<informalexample>
|
|
||||||
<para>Wrong: Use the <command>svn</command> command to
|
|
||||||
update sources.</para>
|
|
||||||
</informalexample>
|
|
||||||
|
|
||||||
<informalexample>
|
|
||||||
<para>Right: Use <command>svn</command> to update
|
|
||||||
sources.</para>
|
|
||||||
</informalexample>
|
|
||||||
|
|
||||||
<para>Filenames:</para>
|
|
||||||
|
|
||||||
<informalexample>
|
|
||||||
<para>Wrong: … in the filename
|
|
||||||
<filename>/etc/rc.local</filename>…</para>
|
|
||||||
</informalexample>
|
|
||||||
|
|
||||||
<informalexample>
|
|
||||||
<para>Right: … in
|
|
||||||
<filename>/etc/rc.local</filename>…</para>
|
|
||||||
</informalexample>
|
|
||||||
|
|
||||||
<para>Manual page references (the second example uses
|
|
||||||
<tag>citerefentry</tag> with the
|
|
||||||
<literal>&man.csh.1;</literal> entity):.</para>
|
|
||||||
|
|
||||||
<informalexample>
|
|
||||||
<para>Wrong: See <command>man csh</command> for more
|
|
||||||
information.</para>
|
|
||||||
</informalexample>
|
|
||||||
|
|
||||||
<informalexample>
|
|
||||||
<para>Right: See &man.csh.1;.</para>
|
|
||||||
</informalexample>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>Two spaces between sentences</term>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>Always use two spaces between sentences, as it
|
|
||||||
improves readability and eases use of tools such as
|
|
||||||
<application>Emacs</application>.</para>
|
|
||||||
|
|
||||||
<para>A period and spaces followed by a capital letter
|
|
||||||
does not always mark a new sentence, especially in names.
|
|
||||||
<quote>Jordan K. Hubbard</quote> is a good example. It
|
|
||||||
has a capital <literal>H</literal> following a period and
|
|
||||||
a space, and is certainly not a new sentence.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
|
|
||||||
<para>For more information about writing style, see <link xlink:href="http://www.bartleby.com/141/">Elements of
|
|
||||||
Style</link>, by William Strunk.</para>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="writing-style-guide">
|
|
||||||
<title>Style Guide</title>
|
|
||||||
|
|
||||||
<para>To keep the source for the documentation consistent when
|
|
||||||
many different people are editing it, please follow these style
|
|
||||||
conventions.</para>
|
|
||||||
|
|
||||||
<sect2>
|
|
||||||
<title>Letter Case</title>
|
|
||||||
|
|
||||||
<para>Tags are entered in lower case, <tag>para</tag>,
|
|
||||||
<emphasis>not</emphasis> <tag>PARA</tag>.</para>
|
|
||||||
|
|
||||||
<para>Text that appears in SGML contexts is generally written in
|
|
||||||
upper case, <literal><!ENTITY…></literal>, and
|
|
||||||
<literal><!DOCTYPE…></literal>,
|
|
||||||
<emphasis>not</emphasis>
|
|
||||||
<literal><!entity…></literal> and
|
|
||||||
<literal><!doctype…></literal>.</para>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="writing-style-acronyms">
|
|
||||||
<title>Acronyms</title>
|
|
||||||
|
|
||||||
<para>Acronyms should be defined the first time they appear in a
|
|
||||||
document, as in:
|
|
||||||
<quote>Network Time Protocol (<acronym>NTP</acronym>)</quote>.
|
|
||||||
After the acronym has been defined, use the acronym alone
|
|
||||||
unless it makes more sense contextually to use the whole term.
|
|
||||||
Acronyms are usually defined only once per chapter or per
|
|
||||||
document.</para>
|
|
||||||
|
|
||||||
<para>All acronyms should be enclosed in
|
|
||||||
<tag>acronym</tag> tags.</para>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="writing-style-indentation">
|
|
||||||
<title>Indentation</title>
|
|
||||||
|
|
||||||
<para>The first line in each file starts with no indentation,
|
|
||||||
<emphasis>regardless</emphasis> of the indentation level of
|
|
||||||
the file which might contain the current file.</para>
|
|
||||||
|
|
||||||
<para>Opening tags increase the indentation level by two spaces.
|
|
||||||
Closing tags decrease the indentation level by two spaces.
|
|
||||||
Blocks of eight spaces at the start of a line should be
|
|
||||||
replaced with a tab. Do not use spaces in front of tabs, and
|
|
||||||
do not add extraneous whitespace at the end of a line.
|
|
||||||
Content within elements should be indented by two spaces if
|
|
||||||
the content runs over more than one line.</para>
|
|
||||||
|
|
||||||
<para>For example, the source for this section looks like
|
|
||||||
this:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">chapter</tag>
|
|
||||||
<tag class="starttag">title</tag>...<tag class="endtag">title</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">sect1</tag>
|
|
||||||
<tag class="starttag">title</tag>...<tag class="endtag">title</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">sect2</tag>
|
|
||||||
<tag class="starttag">title</tag>Indentation<tag class="endtag">title</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">para</tag>The first line in each file starts with no indentation,
|
|
||||||
<tag class="starttag">emphasis</tag>regardless<tag class="endtag">emphasis</tag> of the indentation level of
|
|
||||||
the file which might contain the current file.<tag class="endtag">para</tag>
|
|
||||||
|
|
||||||
...
|
|
||||||
<tag class="endtag">sect2</tag>
|
|
||||||
<tag class="endtag">sect1</tag>
|
|
||||||
<tag class="endtag">chapter</tag></programlisting>
|
|
||||||
|
|
||||||
<para>Tags containing long attributes follow the same
|
|
||||||
rules. Following the indentation rules in this case helps
|
|
||||||
editors and writers see which content is inside the
|
|
||||||
tags:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">para</tag>See the <tag class="starttag">link
|
|
||||||
linkend="gmirror-troubleshooting"</tag>Troubleshooting<tag class="endtag">link</tag>
|
|
||||||
section if there are problems booting. Powering down and
|
|
||||||
disconnecting the original <tag class="starttag">filename</tag>ada0<tag class="endtag">filename</tag> disk
|
|
||||||
will allow it to be kept as an offline backup.<tag class="endtag">para</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">para</tag>It is also possible to journal the boot disk of a &os;
|
|
||||||
system. Refer to the article <tag class="starttag">link
|
|
||||||
xlink:href="&url.articles.gjournal-desktop;"</tag>Implementing UFS
|
|
||||||
Journaling on a Desktop PC<tag class="endtag">link</tag> for detailed
|
|
||||||
instructions.<tag class="endtag">para</tag></programlisting>
|
|
||||||
|
|
||||||
<para>When an element is too long to fit on the remainder of a
|
|
||||||
line without wrapping, moving the start tag to the next line
|
|
||||||
can make the source easier to read. In this example, the
|
|
||||||
<literal>systemitem</literal> element has been moved to the
|
|
||||||
next line to avoid wrapping and indenting:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">para</tag>With file flags, even
|
|
||||||
<tag class="starttag">systemitem class="username"</tag>root<tag class="endtag">systemitem</tag> can be
|
|
||||||
prevented from removing or altering files.<tag class="endtag">para</tag></programlisting>
|
|
||||||
|
|
||||||
<para>Configurations to help various text editors conform to
|
|
||||||
these guidelines can be found in
|
|
||||||
<xref linkend="editor-config"/>.</para>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="writing-style-tag-style">
|
|
||||||
<title>Tag Style</title>
|
|
||||||
|
|
||||||
<sect3 xml:id="writing-style-tag-style-spacing">
|
|
||||||
<title>Tag Spacing</title>
|
|
||||||
|
|
||||||
<para>Tags that start at the same indent as a previous tag
|
|
||||||
should be separated by a blank line, and those that are not
|
|
||||||
at the same indent as a previous tag should not:</para>
|
|
||||||
|
|
||||||
<informalexample>
|
|
||||||
<programlisting><tag class="starttag">article lang='en'</tag>
|
|
||||||
<tag class="starttag">articleinfo</tag>
|
|
||||||
<tag class="starttag">title</tag>NIS<tag class="endtag">title</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">pubdate</tag>October 1999<tag class="endtag">pubdate</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">abstract</tag>
|
|
||||||
<tag class="starttag">para</tag>...
|
|
||||||
...
|
|
||||||
...<tag class="endtag">para</tag>
|
|
||||||
<tag class="endtag">abstract</tag>
|
|
||||||
<tag class="endtag">articleinfo</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">sect1</tag>
|
|
||||||
<tag class="starttag">title</tag>...<tag class="endtag">title</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">para</tag>...<tag class="endtag">para</tag>
|
|
||||||
<tag class="endtag">sect1</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">sect1</tag>
|
|
||||||
<tag class="starttag">title</tag>...<tag class="endtag">title</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">para</tag>...<tag class="endtag">para</tag>
|
|
||||||
<tag class="endtag">sect1</tag>
|
|
||||||
<tag class="endtag">article</tag></programlisting>
|
|
||||||
</informalexample>
|
|
||||||
</sect3>
|
|
||||||
|
|
||||||
<sect3 xml:id="writing-style-tag-style-separating">
|
|
||||||
<title>Separating Tags</title>
|
|
||||||
|
|
||||||
<para>Tags like <tag>itemizedlist</tag> which will
|
|
||||||
always have further tags inside them, and in fact do not
|
|
||||||
take character data themselves, are always on a line by
|
|
||||||
themselves.</para>
|
|
||||||
|
|
||||||
<para>Tags like <tag>para</tag> and
|
|
||||||
<tag>term</tag> do not need other tags to contain
|
|
||||||
normal character data, and their contents begin immediately
|
|
||||||
after the tag, <emphasis>on the same line</emphasis>.</para>
|
|
||||||
|
|
||||||
<para>The same applies to when these two types of tags
|
|
||||||
close.</para>
|
|
||||||
|
|
||||||
<para>This leads to an obvious problem when mixing these
|
|
||||||
tags.</para>
|
|
||||||
|
|
||||||
<para>When a starting tag which cannot contain character data
|
|
||||||
directly follows a tag of the type that requires other tags
|
|
||||||
within it to use character data, they are on separate lines.
|
|
||||||
The second tag should be properly indented.</para>
|
|
||||||
|
|
||||||
<para>When a tag which can contain character data closes
|
|
||||||
directly after a tag which cannot contain character data
|
|
||||||
closes, they co-exist on the same line.</para>
|
|
||||||
</sect3>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="writing-style-whitespace-changes">
|
|
||||||
<title>Whitespace Changes</title>
|
|
||||||
|
|
||||||
<para><emphasis>Do not commit changes
|
|
||||||
to content at the same time as changes to
|
|
||||||
formatting</emphasis>.</para>
|
|
||||||
|
|
||||||
<para>When content and whitespace changes are kept separate,
|
|
||||||
translation teams can easily see whether a change was content
|
|
||||||
that must be translated or only whitespace.</para>
|
|
||||||
|
|
||||||
<para>For example, if two sentences have been added to a
|
|
||||||
paragraph so that the line lengths now go
|
|
||||||
over 80 columns, first commit the change with the too-long
|
|
||||||
lines. Then fix the line wrapping, and commit this
|
|
||||||
second change. In the commit message for the second change,
|
|
||||||
indicate that this is a whitespace-only change that can be
|
|
||||||
ignored by translators.</para>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="writing-style-nonbreaking-space">
|
|
||||||
<title>Non-Breaking Space</title>
|
|
||||||
|
|
||||||
<para>Avoid line breaks in places where they look ugly or make
|
|
||||||
it difficult to follow a sentence. Line breaks depend on the
|
|
||||||
width of the chosen output medium. In particular, viewing the
|
|
||||||
HTML documentation with a text browser can lead to badly
|
|
||||||
formatted paragraphs like the next one:</para>
|
|
||||||
|
|
||||||
<literallayout class="monospaced">Data capacity ranges from 40 MB to 15
|
|
||||||
GB. Hardware compression …</literallayout>
|
|
||||||
|
|
||||||
<para>The general entity <literal>&nbsp;</literal> prohibits
|
|
||||||
line breaks between parts belonging together. Use
|
|
||||||
non-breaking spaces in the following places:</para>
|
|
||||||
|
|
||||||
<itemizedlist>
|
|
||||||
<listitem>
|
|
||||||
<para>between numbers and units:</para>
|
|
||||||
<programlisting>57600&nbsp;bps</programlisting>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>between program names and version numbers:</para>
|
|
||||||
<programlisting>&os;&nbsp;9.2</programlisting>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>between multiword names (use with caution when
|
|
||||||
applying this to more than 3-4 word names like
|
|
||||||
<quote>The &os; Brazilian Portuguese Documentation
|
|
||||||
Project</quote>):</para>
|
|
||||||
<programlisting><![CDATA[Sun Microsystems]]></programlisting>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
</sect2>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="writing-style-word-list">
|
|
||||||
<title>Word List</title>
|
|
||||||
|
|
||||||
<para>This list of words shows the correct spelling and
|
|
||||||
capitalization when used in &os; documentation. If a word is
|
|
||||||
not on this list, ask about it on the &a.doc;.</para>
|
|
||||||
|
|
||||||
<informaltable frame="none" pgwide="0">
|
|
||||||
<tgroup cols="3">
|
|
||||||
<thead>
|
|
||||||
<row>
|
|
||||||
<entry>Word</entry>
|
|
||||||
<entry>XML Code</entry>
|
|
||||||
<entry>Notes</entry>
|
|
||||||
</row>
|
|
||||||
</thead>
|
|
||||||
|
|
||||||
<tbody>
|
|
||||||
<row>
|
|
||||||
<entry>CD-ROM</entry>
|
|
||||||
|
|
||||||
<entry><tag class="starttag">acronym</tag><literal>CD-ROM</literal><tag class="endtag">acronym</tag></entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>DoS (Denial of Service)</entry>
|
|
||||||
<entry><tag class="starttag">acronym</tag><literal>DoS</literal><tag class="endtag">acronym</tag></entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>email</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>file system</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>IPsec</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Internet</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>manual page</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>mail server</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>name server</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Ports Collection</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>read-only</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Soft Updates</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>stdin</entry>
|
|
||||||
<entry><tag class="starttag">varname</tag>stdin<tag class="endtag">varname</tag></entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>stdout</entry>
|
|
||||||
<entry><tag class="starttag">varname</tag>stdout<tag class="endtag">varname</tag></entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>stderr</entry>
|
|
||||||
<entry><tag class="starttag">varname</tag>stderr<tag class="endtag">varname</tag></entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>Subversion</entry>
|
|
||||||
|
|
||||||
<entry><tag class="starttag">application</tag><literal>Subversion</literal><tag class="endtag">application</tag></entry>
|
|
||||||
<entry>Do not refer to the Subversion application as
|
|
||||||
<literal>SVN</literal> in upper case. To refer to the
|
|
||||||
command, use <tag class="starttag">command</tag><literal>svn</literal><tag class="endtag">command</tag>.</entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>&unix;</entry>
|
|
||||||
<entry><literal>&unix;</literal></entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry>web server</entry>
|
|
||||||
</row>
|
|
||||||
</tbody>
|
|
||||||
</tgroup>
|
|
||||||
</informaltable>
|
|
||||||
</sect1>
|
|
||||||
</chapter>
|
|
|
@ -1,600 +0,0 @@
|
||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
|
||||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
|
||||||
copyright notice, this list of conditions and the following
|
|
||||||
disclaimer as the first lines of this file unmodified.
|
|
||||||
|
|
||||||
2. Redistributions in compiled form (transformed to other DTDs,
|
|
||||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
|
||||||
the above copyright notice, this list of conditions and the
|
|
||||||
following disclaimer in the documentation and/or other materials
|
|
||||||
provided with the distribution.
|
|
||||||
|
|
||||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
|
||||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
||||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
$FreeBSD$
|
|
||||||
-->
|
|
||||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="xhtml-markup">
|
|
||||||
<title><acronym>XHTML</acronym> Markup</title>
|
|
||||||
|
|
||||||
<sect1 xml:id="xhtml-markup-introduction">
|
|
||||||
<title>Introduction</title>
|
|
||||||
|
|
||||||
<para>This chapter describes usage of the <acronym>XHTML</acronym>
|
|
||||||
markup language used for the &os; web site.</para>
|
|
||||||
|
|
||||||
<para><acronym>XHTML</acronym> is the <acronym>XML</acronym>
|
|
||||||
version of the HyperText Markup Language, the markup language of
|
|
||||||
choice on the World Wide Web. More information can be found at
|
|
||||||
<uri xlink:href="http://www.w3.org/">http://www.w3.org/</uri>.</para>
|
|
||||||
|
|
||||||
<para><acronym>XHTML</acronym> is used to mark up pages on the
|
|
||||||
&os; web site. It is usually not used to mark up other
|
|
||||||
documentation, since DocBook offers a far richer set of elements
|
|
||||||
from which to choose. Consequently, <acronym>XHTML</acronym>
|
|
||||||
pages will normally only be encountered when writing for the web
|
|
||||||
site.</para>
|
|
||||||
|
|
||||||
<para><acronym>HTML</acronym> has gone through a number of
|
|
||||||
versions. The <acronym>XML</acronym>-compliant version
|
|
||||||
described here is called <acronym>XHTML</acronym>. The latest
|
|
||||||
widespread version is <acronym>XHTML</acronym> 1.0, available in
|
|
||||||
both <emphasis>strict</emphasis> and
|
|
||||||
<emphasis>transitional</emphasis> variants.</para>
|
|
||||||
|
|
||||||
<para>The <acronym>XHTML</acronym> <acronym>DTDs</acronym> are
|
|
||||||
available from the Ports Collection in
|
|
||||||
<package>textproc/xhtml</package>. They are
|
|
||||||
automatically installed by the <package>textproc/docproj</package> port.</para>
|
|
||||||
|
|
||||||
<note>
|
|
||||||
<para>This is <emphasis>not</emphasis> an exhaustive list of
|
|
||||||
elements, since that would just repeat the documentation for
|
|
||||||
<acronym>XHTML</acronym>. The aim is to list those elements
|
|
||||||
most commonly used. Please post questions about elements or
|
|
||||||
uses not covered here to the &a.doc;.</para>
|
|
||||||
</note>
|
|
||||||
|
|
||||||
<note>
|
|
||||||
<title>Inline Versus Block</title>
|
|
||||||
|
|
||||||
<para>In the remainder of this document, when describing
|
|
||||||
elements, <emphasis>inline</emphasis> means that the element
|
|
||||||
can occur within a block element, and does not cause a line
|
|
||||||
break. A <emphasis>block</emphasis> element, by comparison,
|
|
||||||
will cause a line break (and other processing) when it is
|
|
||||||
encountered.</para>
|
|
||||||
</note>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="xhtml-markup-fpi">
|
|
||||||
<title>Formal Public Identifier (<acronym>FPI</acronym>)</title>
|
|
||||||
|
|
||||||
<para>There are a number of <acronym>XHTML</acronym>
|
|
||||||
<acronym>FPI</acronym>s, depending upon the version, or
|
|
||||||
<emphasis>level</emphasis> of <acronym>XHTML</acronym> to which
|
|
||||||
a document conforms. Most <acronym>XHTML</acronym> documents on
|
|
||||||
the &os; web site comply with the transitional version of
|
|
||||||
<acronym>XHTML</acronym> 1.0.</para>
|
|
||||||
|
|
||||||
<programlisting>PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"</programlisting>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="xhtml-markup-sectional-elements">
|
|
||||||
<title>Sectional Elements</title>
|
|
||||||
|
|
||||||
<para>An <acronym>XHTML</acronym> document is normally split into
|
|
||||||
two sections. The first section, called the
|
|
||||||
<emphasis>head</emphasis>, contains meta-information about the
|
|
||||||
document, such as its title, the name of the author, the parent
|
|
||||||
document, and so on. The second section, the
|
|
||||||
<emphasis>body</emphasis>, contains content that will be
|
|
||||||
displayed to the user.</para>
|
|
||||||
|
|
||||||
<para>These sections are indicated with <tag>head</tag>
|
|
||||||
and <tag>body</tag> elements respectively. These
|
|
||||||
elements are contained within the top-level
|
|
||||||
<tag>html</tag> element.</para>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title>Normal <acronym>XHTML</acronym> Document
|
|
||||||
Structure</title>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">html xmlns="http://www.w3.org/1999/xhtml"</tag>
|
|
||||||
<tag class="starttag">head</tag>
|
|
||||||
<tag class="starttag">title</tag><replaceable>The Document's Title</replaceable><tag class="endtag">title</tag>
|
|
||||||
<tag class="endtag">head</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">body</tag>
|
|
||||||
|
|
||||||
…
|
|
||||||
|
|
||||||
<tag class="endtag">body</tag>
|
|
||||||
<tag class="endtag">html</tag></programlisting>
|
|
||||||
</example>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="xhtml-markup-block-elements">
|
|
||||||
<title>Block Elements</title>
|
|
||||||
|
|
||||||
<sect2 xml:id="xhtml-markup-block-elements-headings">
|
|
||||||
<title>Headings</title>
|
|
||||||
|
|
||||||
<para><acronym>XHTML</acronym> has tags to denote headings in
|
|
||||||
the document at up to six different levels.</para>
|
|
||||||
|
|
||||||
<para>The largest and most prominent heading is
|
|
||||||
<tag>h1</tag>, then <tag>h2</tag>,
|
|
||||||
continuing down to <tag>h6</tag>.</para>
|
|
||||||
|
|
||||||
<para>The element's content is the text of the heading.</para>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title><tag>h1</tag>, <tag>h2</tag>,
|
|
||||||
and Other Header Tags</title>
|
|
||||||
|
|
||||||
<para>Usage:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">h1</tag>First section<tag class="endtag">h1</tag>
|
|
||||||
|
|
||||||
<!-- Document introduction goes here -->
|
|
||||||
|
|
||||||
<tag class="starttag">h2</tag>This is the heading for the first section<tag class="endtag">h2</tag>
|
|
||||||
|
|
||||||
<!-- Content for the first section goes here -->
|
|
||||||
|
|
||||||
<tag class="starttag">h3</tag>This is the heading for the first sub-section<tag class="endtag">h3</tag>
|
|
||||||
|
|
||||||
<!-- Content for the first sub-section goes here -->
|
|
||||||
|
|
||||||
<tag class="starttag">h2</tag>This is the heading for the second section<tag class="endtag">h2</tag>
|
|
||||||
|
|
||||||
<!-- Content for the second section goes here --></programlisting>
|
|
||||||
</example>
|
|
||||||
|
|
||||||
<para>Generally, an <acronym>XHTML</acronym> page should have
|
|
||||||
one first level heading (<tag>h1</tag>). This can
|
|
||||||
contain many second level headings (<tag>h2</tag>),
|
|
||||||
which can in turn contain many third level headings. Do not
|
|
||||||
leave gaps in the numbering.</para>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="xhtml-markup-block-elements-paragraphs">
|
|
||||||
<title>Paragraphs</title>
|
|
||||||
|
|
||||||
<para><acronym>XHTML</acronym> supports a single paragraph
|
|
||||||
element, <tag>p</tag>.</para>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title><tag>p</tag> Example</title>
|
|
||||||
|
|
||||||
<para>Usage:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">p</tag>This is a paragraph. It can contain just about any
|
|
||||||
other element.<tag class="endtag">p</tag></programlisting>
|
|
||||||
</example>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="xhtml-markup-block-elements-block-quotations">
|
|
||||||
<title>Block Quotations</title>
|
|
||||||
|
|
||||||
<para>A block quotation is an extended quotation from another
|
|
||||||
document that will appear in a separate paragraph.</para>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title><tag>blockquote</tag> Example</title>
|
|
||||||
|
|
||||||
<para>Usage:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">p</tag>A small excerpt from the US Constitution:<tag class="endtag">p</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">blockquote</tag>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.<tag class="endtag">blockquote</tag></programlisting>
|
|
||||||
</example>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="xhtml-markup-block-elements-lists">
|
|
||||||
<title>Lists</title>
|
|
||||||
|
|
||||||
<para><acronym>XHTML</acronym> can present the user with three
|
|
||||||
types of lists: ordered, unordered, and definition.</para>
|
|
||||||
|
|
||||||
<para>Entries in an ordered list will be numbered, while entries
|
|
||||||
in an unordered list will be preceded by bullet points.
|
|
||||||
Definition lists have two sections for each entry. The first
|
|
||||||
section is the term being defined, and the second section is
|
|
||||||
the definition.</para>
|
|
||||||
|
|
||||||
<para>Ordered lists are indicated by the <tag>ol</tag>
|
|
||||||
element, unordered lists by the <tag>ul</tag>
|
|
||||||
element, and definition lists by the <tag>dl</tag>
|
|
||||||
element.</para>
|
|
||||||
|
|
||||||
<para>Ordered and unordered lists contain listitems, indicated
|
|
||||||
by the <tag>li</tag> element. A listitem can
|
|
||||||
contain textual content, or it may be further wrapped in one
|
|
||||||
or more <tag>p</tag> elements.</para>
|
|
||||||
|
|
||||||
<para>Definition lists contain definition terms
|
|
||||||
(<tag>dt</tag>) and definition descriptions
|
|
||||||
(<tag>dd</tag>). A definition term can only contain
|
|
||||||
inline elements. A definition description can contain other
|
|
||||||
block elements.</para>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title><tag>ul</tag> and
|
|
||||||
<tag>ol</tag> Example</title>
|
|
||||||
|
|
||||||
<para>Usage:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">p</tag>An unordered list. Listitems will probably be
|
|
||||||
preceded by bullets.<tag class="endtag">p</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">ul</tag>
|
|
||||||
<tag class="starttag">li</tag>First item<tag class="endtag">li</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">li</tag>Second item<tag class="endtag">li</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">li</tag>Third item<tag class="endtag">li</tag>
|
|
||||||
<tag class="endtag">ul</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">p</tag>An ordered list, with list items consisting of multiple
|
|
||||||
paragraphs. Each item (note: not each paragraph) will be
|
|
||||||
numbered.<tag class="endtag">p</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">ol</tag>
|
|
||||||
<tag class="starttag">li</tag><tag class="starttag">p</tag>This is the first item. It only has one paragraph.<tag class="endtag">p</tag><tag class="endtag">li</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">li</tag><tag class="starttag">p</tag>This is the first paragraph of the second item.<tag class="endtag">p</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">p</tag>This is the second paragraph of the second item.<tag class="endtag">p</tag><tag class="endtag">li</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">li</tag><tag class="starttag">p</tag>This is the first and only paragraph of the third
|
|
||||||
item.<tag class="endtag">p</tag><tag class="endtag">li</tag>
|
|
||||||
<tag class="endtag">ol</tag></programlisting>
|
|
||||||
</example>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title>Definition Lists with <tag>dl</tag></title>
|
|
||||||
|
|
||||||
<para>Usage:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">dl</tag>
|
|
||||||
<tag class="starttag">dt</tag>Term 1<tag class="endtag">dt</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">dd</tag><tag class="starttag">p</tag>Paragraph 1 of definition 1.<tag class="endtag">p</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">p</tag>Paragraph 2 of definition 1.<tag class="endtag">p</tag><tag class="endtag">dd</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">dt</tag>Term 2<tag class="endtag">dt</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">dd</tag><tag class="starttag">p</tag>Paragraph 1 of definition 2.<tag class="endtag">p</tag><tag class="endtag">dd</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">dt</tag>Term 3<tag class="endtag">dt</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">dd</tag><tag class="starttag">p</tag>Paragraph 1 of definition 3.<tag class="endtag">p</tag><tag class="endtag">dd</tag>
|
|
||||||
<tag class="endtag">dl</tag></programlisting>
|
|
||||||
</example>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="xhtml-markup-block-elements-preformatted-text">
|
|
||||||
<title>Pre-formatted Text</title>
|
|
||||||
|
|
||||||
<para>Pre-formatted text is shown to the user exactly as it is
|
|
||||||
in the file. Text is shown in a fixed font. Multiple spaces
|
|
||||||
and line breaks are shown exactly as they are in the
|
|
||||||
file.</para>
|
|
||||||
|
|
||||||
<para>Wrap pre-formatted text in the <tag>pre</tag>
|
|
||||||
element.</para>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title><tag>pre</tag> Example</title>
|
|
||||||
|
|
||||||
<para>For example, the <tag>pre</tag> tags could be
|
|
||||||
used to mark up an email message:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">pre</tag> From: nik@FreeBSD.org
|
|
||||||
To: freebsd-doc@FreeBSD.org
|
|
||||||
Subject: New documentation available
|
|
||||||
|
|
||||||
There is a new copy of my primer for contributors to the FreeBSD
|
|
||||||
Documentation Project available at
|
|
||||||
|
|
||||||
&lt;URL:http://people.FreeBSD.org/~nik/primer/index.html&gt;
|
|
||||||
|
|
||||||
Comments appreciated.
|
|
||||||
|
|
||||||
N<tag class="endtag">pre</tag></programlisting>
|
|
||||||
|
|
||||||
<para>Keep in mind that <literal><</literal> and
|
|
||||||
<literal>&</literal> still are recognized as special
|
|
||||||
characters in pre-formatted text. This is why the example
|
|
||||||
shown had to use <literal>&lt;</literal> instead of
|
|
||||||
<literal><</literal>. For consistency,
|
|
||||||
<literal>&gt;</literal> was used in place of
|
|
||||||
<literal>></literal>, too. Watch out for the special
|
|
||||||
characters that may appear in text copied from a plain-text
|
|
||||||
source, like an email message or program code.</para>
|
|
||||||
</example>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="xhtml-markup-block-elements-tables">
|
|
||||||
<title>Tables</title>
|
|
||||||
|
|
||||||
<para>Mark up tabular information using the
|
|
||||||
<tag>table</tag> element. A table consists of one or
|
|
||||||
more table rows (<tag>tr</tag>), each containing one
|
|
||||||
or more cells of table data (<tag>td</tag>). Each
|
|
||||||
cell can contain other block elements, such as paragraphs or
|
|
||||||
lists. It can also contain another table (this nesting can
|
|
||||||
repeat indefinitely). If the cell only contains one paragraph
|
|
||||||
then the <tag>p</tag>element is not needed.</para>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title>Simple Use of <tag>table</tag></title>
|
|
||||||
|
|
||||||
<para>Usage:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">p</tag>This is a simple 2x2 table.<tag class="endtag">p</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">table</tag>
|
|
||||||
<tag class="starttag">tr</tag>
|
|
||||||
<tag class="starttag">td</tag>Top left cell<tag class="endtag">td</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">td</tag>Top right cell<tag class="endtag">td</tag>
|
|
||||||
<tag class="endtag">tr</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">tr</tag>
|
|
||||||
<tag class="starttag">td</tag>Bottom left cell<tag class="endtag">td</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">td</tag>Bottom right cell<tag class="endtag">td</tag>
|
|
||||||
<tag class="endtag">tr</tag>
|
|
||||||
<tag class="endtag">table</tag></programlisting>
|
|
||||||
</example>
|
|
||||||
|
|
||||||
<para>A cell can span multiple rows and columns by adding the
|
|
||||||
<tag class="attribute">rowspan</tag> or
|
|
||||||
<tag class="attribute">colspan</tag> attributes with
|
|
||||||
values for the number of rows or columns to be spanned.</para>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title>Using
|
|
||||||
<tag class="attribute">rowspan</tag></title>
|
|
||||||
|
|
||||||
<para>Usage:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">p</tag>One tall thin cell on the left, two short cells next to
|
|
||||||
it on the right.<tag class="endtag">p</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">table</tag>
|
|
||||||
<tag class="starttag">tr</tag>
|
|
||||||
<tag class="starttag">td rowspan="2"</tag>Long and thin<tag class="endtag">td</tag>
|
|
||||||
<tag class="endtag">tr</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">tr</tag>
|
|
||||||
<tag class="starttag">td</tag>Top cell<tag class="endtag">td</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">td</tag>Bottom cell<tag class="endtag">td</tag>
|
|
||||||
<tag class="endtag">tr</tag>
|
|
||||||
<tag class="endtag">table</tag></programlisting>
|
|
||||||
</example>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title>Using
|
|
||||||
<tag class="attribute">colspan</tag></title>
|
|
||||||
|
|
||||||
<para>Usage:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">p</tag>One long cell on top, two short cells below it.<tag class="endtag">p</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">table</tag>
|
|
||||||
<tag class="starttag">tr</tag>
|
|
||||||
<tag class="starttag">td colspan="2"</tag>Top cell<tag class="endtag">td</tag>
|
|
||||||
<tag class="endtag">tr</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">tr</tag>
|
|
||||||
<tag class="starttag">td</tag>Bottom left cell<tag class="endtag">td</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">td</tag>Bottom right cell<tag class="endtag">td</tag>
|
|
||||||
<tag class="endtag">tr</tag>
|
|
||||||
<tag class="endtag">table</tag></programlisting>
|
|
||||||
</example>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title>Using <tag class="attribute">rowspan</tag> and
|
|
||||||
<tag class="attribute">colspan</tag>
|
|
||||||
Together</title>
|
|
||||||
|
|
||||||
<para>Usage:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">p</tag>On a 3x3 grid, the top left block is a 2x2 set of
|
|
||||||
cells merged into one. The other cells are normal.<tag class="endtag">p</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">table</tag>
|
|
||||||
<tag class="starttag">tr</tag>
|
|
||||||
<tag class="starttag">td colspan="2" rowspan="2"</tag>Top left large cell<tag class="endtag">td</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">td</tag>Top right cell<tag class="endtag">td</tag>
|
|
||||||
<tag class="endtag">tr</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">tr</tag>
|
|
||||||
<!-- Because the large cell on the left merges into
|
|
||||||
this row, the first <td> will occur on its
|
|
||||||
right -->
|
|
||||||
|
|
||||||
<tag class="starttag">td</tag>Middle right cell<tag class="endtag">td</tag>
|
|
||||||
<tag class="endtag">tr</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">tr</tag>
|
|
||||||
<tag class="starttag">td</tag>Bottom left cell<tag class="endtag">td</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">td</tag>Bottom middle cell<tag class="endtag">td</tag>
|
|
||||||
|
|
||||||
<tag class="starttag">td</tag>Bottom right cell<tag class="endtag">td</tag>
|
|
||||||
<tag class="endtag">tr</tag>
|
|
||||||
<tag class="endtag">table</tag></programlisting>
|
|
||||||
</example>
|
|
||||||
</sect2>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 xml:id="xhtml-markup-inline-elements">
|
|
||||||
<title>In-line Elements</title>
|
|
||||||
|
|
||||||
<sect2 xml:id="xhtml-markup-inline-elements-emphasizing-information">
|
|
||||||
<title>Emphasizing Information</title>
|
|
||||||
|
|
||||||
<para>Two levels of emphasis are available in
|
|
||||||
<acronym>XHTML</acronym>, <tag>em</tag> and
|
|
||||||
<tag>strong</tag>. <tag>em</tag> is for a
|
|
||||||
normal level of emphasis and <tag>strong</tag>
|
|
||||||
indicates stronger emphasis.</para>
|
|
||||||
|
|
||||||
<para><tag>em</tag> is typically rendered in italic
|
|
||||||
and <tag>strong</tag> is rendered in bold. This is
|
|
||||||
not always the case, and should not be relied upon. According
|
|
||||||
to best practices, web pages only hold structural and
|
|
||||||
semantical information, and stylesheets are later applied to
|
|
||||||
them. Think of semantics, not formatting, when using these
|
|
||||||
tags.</para>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title><tag>em</tag> and
|
|
||||||
<tag>strong</tag> Example</title>
|
|
||||||
|
|
||||||
<para>Usage:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">p</tag><tag class="starttag">em</tag>This<tag class="endtag">em</tag> has been emphasized, while
|
|
||||||
<tag class="starttag">strong</tag>this<tag class="endtag">strong</tag> has been strongly emphasized.<tag class="endtag">p</tag></programlisting>
|
|
||||||
</example>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="xhtml-markup-inline-elements-fixed-pitch-text">
|
|
||||||
<title>Indicating Fixed-Pitch Text</title>
|
|
||||||
|
|
||||||
<para>Content that should be rendered in a fixed pitch
|
|
||||||
(typewriter) typeface is tagged with <tag>tt</tag>
|
|
||||||
(for <quote>teletype</quote>).</para>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title><tag>tt</tag> Example</title>
|
|
||||||
|
|
||||||
<para>Usage:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">p</tag>Many system settings are stored in
|
|
||||||
<tag class="starttag">tt</tag>/etc<tag class="endtag">tt</tag>.<tag class="endtag">p</tag></programlisting>
|
|
||||||
</example>
|
|
||||||
</sect2>
|
|
||||||
|
|
||||||
<sect2 xml:id="xhtml-markup-inline-elements-links">
|
|
||||||
<title>Links</title>
|
|
||||||
|
|
||||||
<note>
|
|
||||||
<para>Links are also inline elements.</para>
|
|
||||||
</note>
|
|
||||||
|
|
||||||
<sect3 xml:id="xhtml-markup-inline-elements-linking">
|
|
||||||
<title>Linking to Other Documents on the Web</title>
|
|
||||||
|
|
||||||
<para>A link points to the <acronym>URL</acronym> of a
|
|
||||||
document on the web. The link is indicated with
|
|
||||||
<tag>a</tag>, and the
|
|
||||||
<tag class="attribute">href</tag> attribute contains
|
|
||||||
the <acronym>URL</acronym> of the target document. The
|
|
||||||
content of the element becomes the link, indicated to the
|
|
||||||
user by showing it in a different color or with an
|
|
||||||
underline.</para>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title>Using
|
|
||||||
<tag class="starttag">a href="..."</tag></title>
|
|
||||||
|
|
||||||
<para>Usage:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">p</tag>More information is available at the
|
|
||||||
<tag class="starttag">a href="http://www.&os;.org/"</tag>&os; web site<tag class="endtag">a</tag>.<tag class="endtag">p</tag></programlisting>
|
|
||||||
</example>
|
|
||||||
|
|
||||||
<para>This link always takes the user to the top of the linked
|
|
||||||
document.</para>
|
|
||||||
</sect3>
|
|
||||||
|
|
||||||
<sect3 xml:id="xhtml-markup-inline-elements-specific-parts">
|
|
||||||
<title>Linking to Specific Parts of Documents</title>
|
|
||||||
|
|
||||||
<para>To link to a specific point within a document, that
|
|
||||||
document must include an <emphasis>anchor</emphasis> at the
|
|
||||||
desired point. Anchors are included by setting the
|
|
||||||
<tag class="attribute">id</tag> attribute of an
|
|
||||||
element to a name. This example creates an anchor by
|
|
||||||
setting the <tag class="attribute">id</tag>
|
|
||||||
attribute of a <tag class="element">p</tag>
|
|
||||||
element.</para>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title>Creating an Anchor</title>
|
|
||||||
|
|
||||||
<para>Usage:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">p id="samplepara"</tag>This paragraph can be referenced
|
|
||||||
in other links with the name <tag class="starttag">tt</tag>samplepara<tag class="endtag">tt</tag>.<tag class="endtag">p</tag></programlisting>
|
|
||||||
</example>
|
|
||||||
|
|
||||||
<para>Links to anchors are similar to plain links, but include
|
|
||||||
a <literal>#</literal> symbol and the anchor's
|
|
||||||
<acronym>ID</acronym> at the end of the
|
|
||||||
<acronym>URL</acronym>.</para>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title>Linking to a Named Part of a Different
|
|
||||||
Document</title>
|
|
||||||
|
|
||||||
<para>The <literal>samplepara</literal> example is part of a
|
|
||||||
document called <filename>foo.html</filename>. A link to
|
|
||||||
that specific paragraph in the document is constructed in
|
|
||||||
this example.</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">p</tag>More information can be found in the
|
|
||||||
<tag class="starttag">a href="foo.html#samplepara"</tag>sample paragraph<tag class="endtag">a</tag> of
|
|
||||||
<tag class="starttag">tt</tag>foo.html<tag class="endtag">tt</tag>.<tag class="endtag">p</tag></programlisting>
|
|
||||||
</example>
|
|
||||||
|
|
||||||
<para>To link to a named anchor within the same document, omit
|
|
||||||
the document's <acronym>URL</acronym>, and just use the
|
|
||||||
<literal>#</literal> symbol followed by the name of the
|
|
||||||
anchor.</para>
|
|
||||||
|
|
||||||
<example>
|
|
||||||
<title>Linking to a Named Part of the Same Document</title>
|
|
||||||
|
|
||||||
<para>The <literal>samplepara</literal> example
|
|
||||||
resides in this document. To link to it:</para>
|
|
||||||
|
|
||||||
<programlisting><tag class="starttag">p</tag>More information can be found in the
|
|
||||||
<tag class="starttag">a href="#samplepara"</tag>sample paragraph<tag class="endtag">a</tag> of this
|
|
||||||
document.<tag class="endtag">p</tag></programlisting>
|
|
||||||
</example>
|
|
||||||
</sect3>
|
|
||||||
</sect2>
|
|
||||||
</sect1>
|
|
||||||
</chapter>
|
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue