wiki Wiki | contuct me Contuct me |

Menu

Exacteye.com Documents

Nagata Mitsuhiro [FAMILY Given]

改訂履歴
改訂 1.062007-03-05
章の附番方法の指定について 説明を補足しました。久しぶりに作成していたら、忘れていました。
改訂 1.052007-03-04
デザインを変えてみました。
改訂 1.042007-02-12
オンラインショップ『匠の店』をオープンしました。 こちらは、鹿児島の特産品を主に販売しているサイトです。
改訂 1.032006-08-07
DocBook V4.5CR3リファレンスを追加しました。 こちらはぼちぼちやっていきます。 1つのbookを複数のファイルに分割するには を追加しました。
改訂 1.022006-07-30
DocBook文書からPDFを出力するを追加しました。
改訂 1.012006-07-27
DocBook XSL のHTML,FOのパラメータリファレンスを掲載しました。
改訂 1.002006-07-23
初版

概要

Exacteye とは「正確な目」を意味します。自分の目標とするところです。

自宅に設置しているパソコンで公開Webサイトを作成する過程のドキュメントを公開している ところは結構あります。(実際参考にさせて貰っていますし。。。)今回、公開することに したのは「自分なりに纏めたメモを体系的に、かついろいろな形式で出力したい」という 目標があって、なんとか実現できそうですので、その過程やTipsも含めて紹介していきたいと 思います。

このサイトはDocBook V4.5CR3 で記述されています。出力はHTML形式で行っています。 サイトの管理自体はSubversionでバージョン管理を行っています。


目次

DocBookでWebサイト作成
I. 必要なツールとその入手先の紹介
II. インストールと設定
II.1. Eclipse でプロジェクトの作成
II.2. 必要なライブラリのプロジェクトへの追加
II.3. 作成されたプロジェクトのディレクトリ構造
III. DocBook文書から単一のHTMLを作成する
III.1. DocBook文書の作成
III.2. XSLTファイルの作成
III.3. CSSファイルの作成
III.4. Antのビルドファイルの作成
III.5. 単一のHTMLの出力の確認
IV. DocBook文書を複数のHTMLに分割して出力する
IV.1. 前準備
IV.2. XSLファイルの作成
IV.3. DocBook文書の修正
IV.4. HTMLの出力の確認
V. DocBook文書からPDFを出力する
V.1. Apache FOPとは?
V.2. Apache FOPの入手とインストール
V.3. Apache FOPの動作確認
V.4. 日本語フォントを使えるようにする
V.5. PDFを出力する
VI. DocBook Tips
VI.1. 1つのbookを複数のファイルに分割するには
I. DocBook V4.5CR3リファレンス
keycap — キーボードのキーに刻印されている文字を表します。
keycode — キーボードのキーを表す(主に数字の)内部的な識別子
keycombo — キーの入力の組み合わせの表現に使います。
itemizedlist — 黒丸で箇条書きを行う際に使用します。
orderedlist — 番号箇条書きを記述する際に使用します。
用語集
VII. 参考文献
自宅サーバをDebian GNU/Linuxで構築
I. Debian GNU/Linuxを選択した理由
II. 機器構成について
III. Debianで日本語を扱うためには
III.1. Debianで日本語を表示するには
III.2. Debian で日本語を入力するには
III.3. 半角/全角キーで日本語のON/OFFをおこなうには?
IV. セキュリティについて
IV.1. sudoの導入
V. サーバの時刻合わせ
V.1. ntpのインストール
VI. Apache2の導入
VI.1. Apache2のインストール
VI.2. Apache2の設定ファイル
VI.3. Apache2のデフォルトのサイト定義
VI.4. SSLのセットアップ
VII. DynamicDNSサービスを導入する
VII.1. DynamicDNSとは?
VII.2. DynamicDNS業者に登録する
VII.3. DiCEの入手とインストール
VII.4. DiCEの設定
VII.5. DiCEをOSの起動時に起動させるには?
VIII. 関連URLの紹介

DocBookでWebサイト作成

概要

DocBook を使ってWebサイトを構築する。とういのは大げさですが、How To 文書を 定型書式にまとめる方法を提示できたらと思います。この文書も How To文書になります。

この章ではWindowsでDocBook文書を作成するための準備やHTMLやPDFなどのフォーマット へ出力するための方法などを紹介します。


第I章 必要なツールとその入手先の紹介

DocBook文書を作成し、HTML文書に出力する為に必要なものを列記します。

OS

Java が動く環境であれば、WindowsでもLinuxでも問題なく動作します。 Windowsでの例が少ないので、WindowsXpで説明していきます。

Java の実行環境

このチュートリアルでは Java の実行環境を必要とします。 JDK1.5.0 のダウンロードページ から最新の Java の実行環境を入手してください。

XMLエディタ

DocBook文書はXML/SGML形式です。ここで説明するのはXML形式のみになります。 テキストエディタがあれば記述は可能ですが、 記述した文書の妥当性を検証する必要があります。XMLエディタだと入力時にコード補完 も行ってくれるので入力が結構楽です。

ここでは自分が慣れているので Eclipse で説明します。 Eclipse 自体は Eclipse.org から入手できます。 自分はWeb開発のツールが一揃いある All-In-One Eclipse をインストールしました。

DocBook DTD

DocBookの文書構造を定義しています。最新は 5.0 ですが、 ここでは 4.5CR3 を使用します。 DocBookは始めたばかりなので、日本語文献の多い 4.x としました。仕様凍結されたバージョンが使いやすそうでしたので。 DocBook XML 4.5 にReadmeなどがあり、DTD自体は docbook-xml-4.5CR3.zip をダウンロードします。

DocBook XSLT

XSLT はXML形式からHTML等の形式に変換する際に使用します。DocBook XMLからの変換に 使用するXSLTはNorman Walsh氏の作成した DocBook XSLT が有名ですので、それを使用します。使い方はBob Stayton氏の DocBook XSL: The Complete Guide に詳しく掲載されています。

ビルドツール Ant

DocBook文書からHTMLなどの形式に出力する際のビルドツールとして Ant を使用します。 Apache Ant のサイトからダウンロードできますが、 Eclipseには標準で Ant のライブラリが付属していますのでそれを使用することにします。

XSLTエンジン Apache Xalan

Apache のXMLプロジェクトの中にあるJava のXpath/XSLT プロセッサです。 Xalan-Java Version 2.7.0 から入手できます。

こうやってリストアップすると結構ありますね。

第II章 インストールと設定

ここでは入手したツールのインストールなどの説明を行いますが、Java,Eclipseのインストールは EclipseWiki 等が詳しいので参照してください。 文字コードはUTF-8で記述することにします。

II.1. Eclipse でプロジェクトの作成

JavaとEclipseのインストールが終わったら、Eclipseでプロジェクトを作成します。 メニューから ファイル+新規+プロジェクト (Alt-Shift-N-R) を作成します。 名前はdocbook-sample とし、 D:/project/docbook-sample に作成します。

II.2. 必要なライブラリのプロジェクトへの追加

  1. ダウンロードした、DocBook DTD docbook-xml-4.5CR3.zip を解凍し、作成したプロジェクトにコピーします。

  2. DocBook XSL docbook-xsl-1.70.1.zip も解凍し、プロジェクトに 追加します。

  3. Xalan は入手したファイル xalan-j_2_7_0-bin.zip を適当な場所に解凍します。その中に xalan.jarserializer.jar があるので、 プロジェクトの /lib ディレクトリにコピーします。

II.3. 作成されたプロジェクトのディレクトリ構造

図 II.1. DocBook用のプロジェクトのディレクトリ

DocBook用のプロジェクトのディレクトリ

現在までの説明までのeclipseのリソース一覧です。

  • /docbook-4.5CR3

    解凍したDocBook DTD V4.5CR3があります。

  • /docbook-xsl-1.70.1

    解凍したDocBook XSLがあります。

  • /lib

    xalan.jar,serializer.jarがあります。

第III章 DocBook文書から単一のHTMLを作成する

Hello World のDocBook文書を作成します。 作成するのはDocBook文書の helloworld.xml ,XSLTファイルの hello-html.xml ,HTMLのスタイルシートの hello-html.css ,Antのビルドファイル build.xml です。

まず、プロジェクトに /helloworld というフォルダを 作成し、その下に /helloworld/contents フォルダを 作成します。DocBook文書はここに置くようにします。

III.1. DocBook文書の作成

Eclipseを使ってDocBook文書を作成します。

  • Eclipseで ファイル+新規 (Ctrl-N) を選択し、XMLを選択します。

    図 III.1. XMLファイルの新規作成

    XMLファイルの新規作成

  • プロジェクトにDocBook DTDをコピーしているのでそれを参照できるように Create XML file from a DTD file を選択します。

    図 III.2. XMLファイルの作成方法の選択

    XMLファイルの作成方法の選択

  • 作成するXMLのファイル名を指定します。 /helloworld/contents フォルダを選択し、ファイル名を helloworld.xml と入力します。

    図 III.3. ファイル名の指定

    ファイル名の指定

  • DTDを選択します。プロジェクト内のDocBook DTD を選択します。

    図 III.4. DTDの指定

    DTDの指定

  • ルート要素の指定を行います。今回はbookをルートとします。 Public IDには -//OASIS//DTD DocBook XML V4.5//EN を指定します。

    図 III.5. ルートエレメントの指定

    ルートエレメントの指定

  • 以下のようなXMLファイルが作成されます。

    						
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 
    "../../docbook-xml-4.5CR3/docbookx.dtd" >
    <book>
    </book>
              
    					

  • 以下のようなDocBook文書を作成します。内容については後述します。

    						
    helloworld.xml
    						
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 
    "../../docbook-xml-4.5CR3/docbookx.dtd" >
    <book lang="ja">
      <title>Hello World</title>
      <chapter>
        <title>最初のDocBook文書の作成</title>
        <para>ハローワールドのサンプル</para>
      </chapter>
    </book>
                
    					

III.2. XSLTファイルの作成

DocBook文書から単一のHTMLファイルへ変換するスタイルシートの作成を行います。

			
hello-html.xsl
			
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version='1.0'>
  <xsl:import href="../docbook-xsl-1.70.1/html/docbook.xsl"/>
  <xsl:output method="html" encoding="UTF-8" indent="yes" />

  <xsl:param name="admon.graphics" select="1"/>
  <xsl:param name="section.autolabel" select="1"/>
  <xsl:param name="html.stylesheet">css/hello-html.css</xsl:param>
</xsl:stylesheet>
      
		

XSLタグの説明を以下に記述します。

表 III.1. docbook-xslタグの説明

タグ説明
xsl:import

単一のHTML変換用のスタイルシート /docbook-xsl-1.70.1/html/docbook.xsl を読み込んで変数などの変更を行います。

[注意]注意

直接そのファイルに変更を行うことはしないようにします。

xsl:output

methodhtml を指定してHTMLファイルを出力させます。 xhtmlを出力させたい場合は xml とします。 encoding で出力するときの文字コードを指定します。 ここでは UTF-8 を指定しています。 indentyes と指定することにより、 字下げをして出力されます。


画像ファイルをどこに?とか、画像の種類の指定方法は /docbook-xsl-1.70.1/html/param.xsl を見るとデフォルト値の記述があります。いくつかピックアップして説明していきます。

表 III.2. DocBook-XSLで使用しているパラメータの設定

パラメータ名説明
admon.graphics

注釈や、警告などの表示にアイコン画像を使用するか否かを指定します。 デフォルトはアイコン画像を指定しないようになっています。

admon.graphics.path

画像の参照先のフォルダを指定します。デフォルトは images/ ですのでそのままで良いでしょう。

admon.graphics

アイコン画像を使用するか/使用しないかを設定します。 アイコン画像を指定する際は上図のように select="1" と指定します。

callout.graphics.extension

画像ファイルの拡張子を指定します。デフォルトは .png になっています。

section.autolabel

章に番号を付けるかどうかを指定します。 capter.autolabelも同様です。

select="1" の場合/ または select="arabic" と指定した場合

数字で附番されます。 (1, 2, 3 ...).デフォルトはこの指定方法になっています。

select="A" の場合/ または select="upperalpha" と指定した場合

大文字のアルファベットで附番されます。例 (A, B, C ...).

select="a" の場合/ または select="loweralpha" とした場合

小文字のアルファベットで附番されます。例 (a, b, c ...).

select="I" の場合/ または、 select="upperroman" とした場合

大文字のローマ数字で附番されます。例(I, II, III ...).

select="i" の場合/ または、 select="lowerroman" とした場合

小文字のローマ数字で附番されます。例 (i, ii, iii ...).

html.stylesheet

出力ファイルが参照するCSSのファイルを指定します。


III.3. CSSファイルの作成

生成されるHTMLが参照するスタイルシートです。 /helloworld/contents/css に保存します。

			
hello-html.css
			
h1.title {
  padding: 5px 5px 5px 10px;
  border-left: 10px solid blue;
  border-bottom: 2px solid blue;
}

h2.title {
  padding: 3px 3px 3px 5px;
  border-left: 5px solid blue;
  border-bottom: 2px solid blue;
}

h3.title {
  padding: 3px 3px 3px 5px;
  border-left: 5px solid blue;
  border-bottom: 1px solid blue;
}

h4.title {
  padding: 3px 3px 3px 5px;
  border-left: 5px solid blue;
  border-bottom: 1px solid blue;
}

div.book {
  margin: 30px 30px 30px 30px;
}

div.caution {
  background: #FFCCCC;
}
div.important {
  background: #FFCCCC;
}
div.note {
  background: #CCCCFF;
}
div.tip {
  background: #CCCCFF;
}
div.warning {
  background: #FFCCCC;
}

pre.programlisting {
  border-width: 1ex;
  border-color: blue;
  border-style: solid;
  color: white;
  background-color: blue;
}

pre.screen {
  border-width: 1ex;
  border-color: black;
  border-style: solid;
  color: white;
  background-color: black;
}

body {
  font-family: gill, helvetica, sans-serif;
  font-size: 12pt;  
}

      
		

III.4. Antのビルドファイルの作成

Antで実行する際の設定ファイルを作成します。 最初にプロパティの設定ファイル build.properties を作成します。

			
build.properties
			
docbook.home=../docbook-xml-4.5CR3  
docbook.dtd=${docbook.home}/docbookx.dtd
docbook.public.id=-//OASIS//DTD DocBook XML V4.5//EN  
lib.dir=../lib
xsl.dir=../docbook-xsl-1.70.1
src.dir=${basedir}/contents 
html.dest.dir=${basedir}/html
source=helloworld.xml 
html.stylesheet=${basedir}/hello-html.xsl
      
		

次にビルドファイル build.xml を作成します。 ファイルの内容については Apache Ant 1.6.5 Manual 等を参考にしてください。

			
build.xml
			
<project name="helloworld.docbook" basedir="." default="all">
  
  <property file="build.properties" />
        
  <target name="clean">
    <delete dir="${html.dest.dir}"/>
    <mkdir dir="${html.dest.dir}"/>
  </target>  
  
  <target name="all">
    <antcall target="clean"/>
    <antcall target="html"/>
  </target>

  <target name="html">
    
    <copydir dest="${html.dest.dir}/images" 
             src="${xsl.dir}/images"/>
    
    <copydir dest="${html.dest.dir}/css" 
             src="${src.dir}/css"/>
    
    <xmlvalidate warn="false">
      <xmlcatalog>
        <dtd publicId="${docbook.public.id}"
             location="${docbook.dtd}" />
      </xmlcatalog>
      <fileset dir="${src.dir}">
        <include name="${source}" />
      </fileset>
    </xmlvalidate>
    
    <xslt basedir="${src.dir}" 
          destdir="${html.dest.dir}" 
          style="${html.stylesheet}"
          extension=".html"
          includes="${source}">
      <classpath>
        <pathelement location="${lib.dir}/xalan.jar" />
      </classpath>
      <xmlcatalog>
        <dtd publicId="${docbook.public.id}" 
             location="${docbook.dtd}" />
      </xmlcatalog>
    </xslt>
  </target>
</project>
      
		

III.5. 単一のHTMLの出力の確認

Ant でビルドを実行すると、単一のHTMLファイルが /html 以下に作成されているはずです。 こちら で確認できます。

第IV章 DocBook文書を複数のHTMLに分割して出力する

概要

作成したDocBook文書を複数のHTMLに分割して出力する方法を 紹介します。文書の量が多くなると、便利ですね。

DocBook XSLの中にあるdocbook-xsl-1.70.1/html/chunk.xsl というファイルをインポートして使用します。

IV.1. 前準備

項II.1. 「 Eclipse でプロジェクトの作成 」で作成したプロジェクトに /helloworld-chunkという名前で フォルダを作成し、 章 III. DocBook文書から単一のHTMLを作成するで作成したファイルをコピーします。

以下のような構成になっていると思います。

図 IV.1. 作成されたリソース一覧

作成されたリソース一覧

IV.2. XSLファイルの作成

例 IV.1. 分割HTML出力用のXSLファイル

        	
hello-html.xsl
<?xml version="1.0"?>
<xsl:stylesheet 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     version='1.0'>
  <xsl:import href="../docbook-xsl-1.70.1/html/chunk.xsl"/> 1

  <xsl:output method="html" encoding="UTF-8" indent="yes" 
       doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" 2
       doctype-system="http://www.w3.org/TR/html4/loose.dtd"   
    />

  <xsl:param name="chapter.autolabel" select="1"/>
  <xsl:param name="section.autolabel" select="1"/>
  <xsl:param name="admon.graphics" select="1"/>
  <xsl:param name="html.stylesheet">
    css/hello-html.css
  </xsl:param>
    
</xsl:stylesheet>
        
1

インポートするXSLファイルを変更します。 /html/chunk.xslにして下さい。

2

HTML文書のDOCTYPE宣言を入れるにはここに 記述するといいはずだが、chunk.xslで定義すると 二重に出力されてしまう。


IV.3. DocBook文書の修正

章 III. DocBook文書から単一のHTMLを作成するで作成したDocBook文書は章が一つの構成 だったので、もう一つ増やしてみます。

例 IV.2. 分割HTML出力用のDocBook文書

  				
helloworld.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 
"../../docbook-xml-4.5CR3/docbookx.dtd" >
<book lang="ja">
  <title>Hello World</title>
  <chapter>
    <title>最初のDocBook文書の作成</title>
    <para>ハローワールドのサンプル</para>
  </chapter>
  <chapter>  1
  	<title>次の章</title>
  	<para>ハローワールドのサンプル2</para>
  </chapter>
</book>
  			
1

ここから下が追加した部分です。


IV.4. HTMLの出力の確認

Antでビルドすることで複数のHTMLが /htmlに出力されたはずです。 Eclipseのリソース一覧で確認します。

図 IV.2. 複数のHTMLの出力の確認

複数のHTMLの出力の確認

出力はこちらで確認できます。

第V章 DocBook文書からPDFを出力する

概要

DocBook文書をPDFへ出力する方法を紹介します。作った文書を印刷するときに 便利です。このサイトでも作成したDocBook文書をPDFで閲覧できるようにしています。

この章は結構ボリュームの大きいものになってしまいました。

このサイトで作成しているDocBook文書はXML形式ですので、一旦 XSL-FO 形式に変換し、XSL FO形式からPDFを出力するといった手順で出力します。

  1. DocBook文書から FO へ変換します。

    DocBook XSLを使って変換します。

  2. FO からPDF文書へ変換します。

    Apache FOPを使って変換します。

Apache FOPはまだ導入していないので、インストールと設定をここで行います。

V.1. Apache FOPとは?

FOPは Apache.org が作成した XSL-FO によって駆動する世界最初のプリントフォーマッターです。 フォーマッティングオブジェクトツリーを読み込みそれをPDF文書に変換するJavaのクラスライブラリです。

FOPはApache XMLプロジェクトの一部で,FOPのホームページは http://xml.apache.org/fop にあります。

図 V.1. FOPの変換イメージ

FOPの変換イメージ

V.2. Apache FOPの入手とインストール

  1. Apache FOPのダウンロードページ からFOPのアーカイブを入手します。ファイル名は fop-0.20.5-bin.zip になります。

  2. 入手したファイルをプロジェクトに解凍します。解凍したフォルダをこれからは FOP_HOME と呼びます。

インストール自体はこれで完了です。

V.3. Apache FOPの動作確認

インストール後のFOPの動作確認を行います。

  1. コマンドプロンプトを開いて、 FOP_HOME に移動します。

    					
    Microsoft Windows XP [Version 5.1.2600]
    (C) Copyright 1985-2001 Microsoft Corp.
    > cd /D D:\project\docbook\fop-0.20.5
    D:\project\docbook\fop-0.20.5>
              
    				
  2. FOP_HOME/examples/fo にサンプルがあります。 その中の/basic/readme.foファイルをPDFに変換してみます。

    					
    D:\project\docbook\fop-0.20.5>fop examples\fo\basic\readme.fo readme.pdf
    [INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser
    [INFO] FOP 0.20.5
    [INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser
    [INFO] building formatting object tree
    [INFO] setting up fonts
    [INFO] [1]
    [INFO] [2]
    [INFO] [3]
    [INFO] [4]
    [INFO] [5]
    [INFO] [6]
    [INFO] [7]
    [INFO] [8]
    [INFO] [9]
    [INFO] [10]
    [INFO] Parsing of document complete, stopping renderer
              
    				
  3. FOP_HOME 直下にreadme.pdfが出来ているはずです。 こちら で確認できます。

V.4. 日本語フォントを使えるようにする

Apache FOPはデフォルトの状態では日本語フォントが含まれていないため、日本語を含む XSL-FO からPDF文書を作成した場合に、文字化けが発生します。 ここでは、日本語フォントを使えるようにするための設定を行います。

Apache FOPでデフォルトで用意してあるフォントは14種類です。 Helvetica (normal, bold, italic, bold italic), Times (normal, bold, italic, bold italic), Courier (normal, bold, italic, bold italic), Symbol and ZapfDingbats.

設定は以下の手順で行います。

  1. フォント・メトリクス・ファイルの作成

    日本語TrueTypeフォントからフォント情報を取り出して、XMLフォーマットの フォント・メトリクス・ファイルを作成します。

  2. userconfig.xml の修正

    XSL-FO で使用するフォント名とフォント・メトリクス・ファイル との関連付けを userconfig.xml に記述します。

詳細は FOP:Fonts を参照してください。

V.4.1. フォント・メトリクス・ファイルの作成

Apache FOPで使用できるフォントは Type1フォント TrueTypeフォント の2種類です。最初にWindowsXpで標準で用意されている「MSゴシック」と「MS明朝体」 のフォント・メトリックス・ファイルを作成します。

WindowsXpのインストール済みのフォントは C:/Windows/Fonts フォルダに 格納されています。「MSゴシック体」フォントは msgothic.ttc という名前で保管されていて、フォント名は「MSゴシック &MSPゴシック&MS UIGothic」、 「MS Gothic &MS PGothic & MS UIGothic」の2つのフォント名が表示されています。 「MS明朝体」も同様で、フォントのファイル名は msmincho.ttc でフォント名は「MS明朝 &MSP明朝」、「MS Mincho &MS PMincho」の2つのフォント名が あります。

1つのフォントファイルに対して2つのフォント名が定義されているようですが、いったいどちらの 名前でフォント・メトリックス・ファイルを作成すればいいのでしょう?

V.4.1.1. フォントファイルに含まれるフォント名の調査

調査するにはApache FOPに含まれる org.apache.fop.fonts.apps.TTFReader クラスを実行して調べます。Antで実行して調査しますので、 プロジェクト直下にビルド設定ファイルとして build-fop.xml ファイルを作成します。

例 V.1. TTFReaderを使ってフォント名を調査する

							
build-fop.xml
<project name="fop.docbook" basedir="." default="all">
  <!--
  =====================================================================
  ==
  == Apache FOP フォント定義 ビルドファイル
  ==
  == 目的:日本語フォントはデフォルトで登録されていないので、
  ==      フォント定義ファイルの作成などの処理を行う。
  ==
  == copyright (c) exacteye.com allright reserved.
  ==
  =====================================================================
  -->
  <property environment="env"/> 1
  <property name="font.path" value="${env.SystemRoot}/fonts"/> 2
  <property name="lib.dir" value="${basedir}/lib"/>
  <property name="fop.home" value="${basedir}/fop-0.20.5"/> 3
  <property name="fop.conf.dir" value="${fop.home}/conf"/>
  
  <path id="fop.class.path">
    <pathelement location="${fop.home}/build/fop.jar"/>
    <pathelement location="${fop.home}/lib/xercesImpl-2.2.1.jar"/>
    <pathelement location="${lib.dir}/xalan.jar"/> 4
    <!--
    このjar ファイルのバージョンが古かったのでFileNotExceptionが
    発生していた。
    <pathelement location="${fop.home}/lib/xalan-2.4.1.jar"/>
    -->
  </path>

  <target name="all">
    <antcall target="getMinchoFontName"/>
    <antcall target="getGothicFontName"/>
  </target>  
  <!--
  =====================================================================
  ==
  == わざとエラーを出しTTCファイルに含まれるフォント名を判別する
  == 調査用
  ==
  =====================================================================
  -->
  <!-- MS明朝体 --> 5
  <target name="getMinchoFontName">
    <echo message="-------------------------------------------------"/>
    <echo message="msmicho.ttcに含まれるフォント名の確認"/>
    <echo message="-------------------------------------------------"/>
    <java 
      classname="org.apache.fop.fonts.apps.TTFReader"
      args="${font.path}/msmincho.ttc test.xml" 
      >
      <classpath refid="fop.class.path"/>      
    </java>    
  </target>

  <!-- MSゴシック体 -->
  <target name="getGothicFontName">
    <echo message="-------------------------------------------------"/>
    <echo message="msgothic.ttcに含まれるフォント名の確認"/>
    <echo message="-------------------------------------------------"/>
    <java 
      classname="org.apache.fop.fonts.apps.TTFReader"
      args="${font.path}/msgothic.ttc test.xml" 
      >
      <classpath refid="fop.class.path"/>      
    </java>    
  </target>


</project>						
				
1

システムの環境変数を env という変数名で定義します。

2

フォントのインストールフォルダを定義します。

3

Apache FOPのインストールフォルダを定義します。

4

クラスパスの定義ですが、FOPの /lib フォルダにある xalan-2.4.1.jar を使用するとエラーが発生しますので 最新のxalan.jarをクラスパスに入れておきます。

5

このターゲットを実行すると msmincho.ttc に含まれる フォント名を表示します。通常は -ttcname [フォント名] というオプションを入れてフォント・メトリックス・ファイルを作成します。


getGothicFontNameターゲットを実行すると、 msgothic.ttc に含まれているフォント名が分かります。 MS Gothic,MS PGothic,MS UI Gothicがこの場合含まれているようです。

					
Buildfile: D:\project\docbook\build-fop.xml
getGothicFontName:
     [echo] -------------------------------------------------
     [echo] msgothic.ttcに含まれるフォント名の確認
     [echo] -------------------------------------------------
     [java] The args attribute is deprecated. Please use nested arg elements.
     [java] TTF Reader v1.1.1
     [java] Reading C:\WINDOWS/fonts/msgothic.ttc...
     [java] This is a TrueType collection file with 3 fonts
     [java] Containing the following fonts:
     [java] MS Gothic
     [java] MS PGothic
     [java] MS UI Gothic
     [java] java.lang.IllegalArgumentException: For TrueType collection you must 
specify which font to select (-ttcname)
     [java] at org.apache.fop.fonts.TTFFile.readFont(TTFFile.java:416)
     [java] at org.apache.fop.fonts.apps.TTFReader.loadTTF(TTFReader.java:222)
     [java] at org.apache.fop.fonts.apps.TTFReader.main(TTFReader.java:184)
     ....
BUILD SUCCESSFUL
Total time: 2 seconds       
        
				

同様に getMinchoFontName ターゲットも実行してMS明朝体のフォント名 を確認します。MS Mincho, MS PMincho が含まれていました。

V.4.1.2. Antビルドファイルの修正

フォント名が分かったので先ほど作成した build-fop.xml ファイルを修正してフォント・メトリックス・ファイルを作成できるように修正します。

例 V.2. フォント・メトリックス・ファイルの作成

							
build-fop2.xml
  <!-- MS ゴシック体 -->
  <target name="confMSGothic">
    <java
      classname="org.apache.fop.fonts.apps.TTFReader">
      <arg line="-ttcname &quot;MS Gothic&quot; 1
${font.path}/msgothic.ttc ${fop.conf.dir}/msgothic.xml"/>
      <classpath refid="fop.class.path"/>
    </java>
  </target>
						
1

-ttcname [フォント名] [フォントファイル名] [フォント・メトリックス・ファイルの保存先] で指定してください。


[注意]注意

フォント名に半角空白文字が含まれている場合は前後に&quot; を入れてください。

Antビルドを実行すると、以下のような出力が得られるはずです。 以下は confMSGothic ターゲットを実行した結果です。

FOP_HOME/conf/ フォルダに mspgothic.xml というファイルが出来ていると思います。 こちら で確認できます。

					
Buildfile: D:\project\docbook\build-fop.xml
confMSGothic:
     [java] TTF Reader v1.1.1
     [java] Reading C:\WINDOWS/fonts/msgothic.ttc...
     [java] This is a TrueType collection file with 3 fonts
     [java] Containing the following fonts:
     [java] * MS Gothic
     [java] MS PGothic
     [java] MS UI Gothic
     [java] Number of glyphs in font: 20458
     [java] Postscript format 3
     [java] Creating xml font file...
     [java] Creating CID encoded metrics
     [java] Writing xml font file D:\project\docbook/fop-0.20.5/conf/msgothic.xml...
     [java] This font contains no embedding license restrictions
BUILD SUCCESSFUL
Total time: 3 seconds
      		
				

実行して出来たフォント・メトリックス・ファイルの一覧です。

V.4.2. userconfig.xmlの修正

フォント・メトリックス・ファイルは作成できたので、今度は XSL-FO に記述するフォント名と 実際のフォント・メトリックス・ファイルの関係を定義する必要があります。 Apache FOPでは FOP_HOME/conf/userconfig.xml に記述します。

[注意]注意

記述する際の注意

  • フォント名は自由につけてかまわない。

  • 一つのフォント・メトリックス・ファイルに対して複数のフォント名を指定できる。

  • フォント名に「MS明朝体」などの日本語名を指定する場合には、UTF-8の 文字コードで保存します。

以下のように記述します。

				
userconfig.xml
				
    <!-- 
    ===========================================================================
    ==
    == 日本語フォントの定義の追加
    ==
    ===========================================================================
     -->
    <!-- MS明朝体 -->
    <font
      metrics-file="D:\project\docbook\fop-0.20.5\conf\msmincho.xml"
      kerning="yes" embed-file="C:\WINDOWS\Fonts\msmincho.ttc">
      <font-triplet name="Mincho" style="normal" weight="normal" />
      <font-triplet name="Mincho" style="normal" weight="bold" />
      <font-triplet name="Mincho" style="italic" weight="normal" />
      <font-triplet name="Mincho" style="italic" weight="bold" />
      <font-triplet name="MS-Mincho" style="normal"
        weight="normal" />
      <font-triplet name="MS-Mincho" style="normal" weight="bold" />
      <font-triplet name="MS-Mincho" style="italic"
        weight="normal" />
      <font-triplet name="MS-Mincho" style="italic" weight="bold" />
      <font-triplet name="MSMincho" style="normal"
        weight="normal" />
      <font-triplet name="MSMincho" style="normal" weight="bold" />
      <font-triplet name="MSMincho" style="italic"
        weight="normal" />
      <font-triplet name="MSMincho" style="italic" weight="bold" />
      <font-triplet name="MS明朝" style="normal" weight="normal" />
      <font-triplet name="MS明朝" style="normal" weight="bold" />
      <font-triplet name="MS明朝" style="italic" weight="normal" />
      <font-triplet name="MS明朝" style="italic" weight="bold" />
    </font>
    
    <!-- MSP明朝体 -->
    <font
      metrics-file="D:\project\docbook\fop-0.20.5\conf\mspmincho.xml"
      kerning="yes" embed-file="C:\WINDOWS\Fonts\msmincho.ttc">
      <font-triplet name="PMincho" style="normal" weight="normal" />
      <font-triplet name="PMincho" style="normal" weight="bold" />
      <font-triplet name="PMincho" style="italic" weight="normal" />
      <font-triplet name="PMincho" style="italic" weight="bold" />
      <font-triplet name="MS-PMincho" style="normal"
        weight="normal" />
      <font-triplet name="MS-PMincho" style="normal"
        weight="bold" />
      <font-triplet name="MS-PMincho" style="italic"
        weight="normal" />
      <font-triplet name="MS-PMincho" style="italic"
        weight="bold" />
      <font-triplet name="MSPMincho" style="normal"
        weight="normal" />
      <font-triplet name="MSPMincho" style="normal" weight="bold" />
      <font-triplet name="MSPMincho" style="italic"
        weight="normal" />
      <font-triplet name="MSPMincho" style="italic" weight="bold" />
      <font-triplet name="MSP明朝" style="normal" weight="normal" />
      <font-triplet name="MSP明朝" style="normal" weight="bold" />
      <font-triplet name="MSP明朝" style="italic" weight="normal" />
      <font-triplet name="MSP明朝" style="italic" weight="bold" />
    </font>
    
    <!-- MSゴシック体 -->
    <font
      metrics-file="D:\project\docbook\fop-0.20.5\conf\msgothic.xml"
      kerning="yes" embed-file="C:\WINDOWS\Fonts\msgothic.ttc">
      <font-triplet name="Gothic" style="normal" weight="normal" />
      <font-triplet name="Gothic" style="normal" weight="bold" />
      <font-triplet name="Gothic" style="italic" weight="normal" />
      <font-triplet name="Gothic" style="italic" weight="bold" />
      <font-triplet name="MS-Gothic" style="normal"
        weight="normal" />
      <font-triplet name="MS-Gothic" style="normal" weight="bold" />
      <font-triplet name="MS-Gothic" style="italic"
        weight="normal" />
      <font-triplet name="MS-Gothic" style="italic" weight="bold" />
      <font-triplet name="MSGothic" style="normal"
        weight="normal" />
      <font-triplet name="MSGothic" style="normal" weight="bold" />
      <font-triplet name="MSGothic" style="italic"
        weight="normal" />
      <font-triplet name="MSGothic" style="italic" weight="bold" />
      <font-triplet name="MSゴシック" style="normal" weight="normal" />
      <font-triplet name="MSゴシック" style="normal" weight="bold" />
      <font-triplet name="MSゴシック" style="italic" weight="normal" />
      <font-triplet name="MSゴシック" style="italic" weight="bold" />
    </font>
    
    <!-- MSPゴシック体 -->
    <font
      metrics-file="D:\project\docbook\fop-0.20.5\conf\mspgothic.xml"
      kerning="yes" embed-file="C:\WINDOWS\Fonts\msgothic.ttc">
      <font-triplet name="PGothic" style="normal" weight="normal" />
      <font-triplet name="PGothic" style="normal" weight="bold" />
      <font-triplet name="PGothic" style="italic" weight="normal" />
      <font-triplet name="PGothic" style="italic" weight="bold" />
      <font-triplet name="MS-PGothic" style="normal"
        weight="normal" />
      <font-triplet name="MS-PGothic" style="normal"
        weight="bold" />
      <font-triplet name="MS-PGothic" style="italic"
        weight="normal" />
      <font-triplet name="MS-PGothic" style="italic"
        weight="bold" />
      <font-triplet name="MSPGothic" style="normal"
        weight="normal" />
      <font-triplet name="MSPGothic" style="normal" weight="bold" />
      <font-triplet name="MSPGothic" style="italic"
        weight="normal" />
      <font-triplet name="MSPGothic" style="italic" weight="bold" />
      <font-triplet name="MSPゴシック" style="normal" weight="normal" />
      <font-triplet name="MSPゴシック" style="normal" weight="bold" />
      <font-triplet name="MSPゴシック" style="italic" weight="normal" />
      <font-triplet name="MSPゴシック" style="italic" weight="bold" />
    </font>
    
    <!-- MSUIゴシック体 -->
    <font
      metrics-file="D:\project\docbook\fop-0.20.5\conf\msuigothic.xml"
      kerning="yes" embed-file="C:\WINDOWS\Fonts\msgothic.ttc">
      <font-triplet name="UIGothic" style="normal"
        weight="normal" />
      <font-triplet name="UIGothic" style="normal" weight="bold" />
      <font-triplet name="UIGothic" style="italic"
        weight="normal" />
      <font-triplet name="UIGothic" style="italic" weight="bold" />
      <font-triplet name="UI Gothic" style="normal"
        weight="normal" />
      <font-triplet name="UI Gothic" style="normal" weight="bold" />
      <font-triplet name="UI Gothic" style="italic"
        weight="normal" />
      <font-triplet name="UI Gothic" style="italic" weight="bold" />
      <font-triplet name="MS-UIGothic" style="normal"
        weight="normal" />
      <font-triplet name="MS-UIGothic" style="normal"
        weight="bold" />
      <font-triplet name="MS-UIGothic" style="italic"
        weight="normal" />
      <font-triplet name="MS-UIGothic" style="italic"
        weight="bold" />
      <font-triplet name="MSUIGothic" style="normal"
        weight="normal" />
      <font-triplet name="MSUIGothic" style="normal"
        weight="bold" />
      <font-triplet name="MSUIGothic" style="italic"
        weight="normal" />
      <font-triplet name="MSUIGothic" style="italic"
        weight="bold" />
      <font-triplet name="MSUIゴシック" style="normal"
        weight="normal" />
      <font-triplet name="MSUIゴシック" style="normal" weight="bold" />
      <font-triplet name="MSUIゴシック" style="italic"
        weight="normal" />
      <font-triplet name="MSUIゴシック" style="italic" weight="bold" />
    </font>
    		
			

V.4.3. 動作確認を行う。

実際に日本語フォントでPDF文書が作成できるか確認します。 hello.jp.fo というファイルを作成します。

				
hello.jp.fo
				
<?xml version="1.0" encoding="utf-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

  <fo:layout-master-set>
    <fo:simple-page-master master-name="simple">
      <fo:region-body margin-top="3cm"/>
      <fo:region-before extent="3cm"/>
      <fo:region-after extent="1.5cm"/>
    </fo:simple-page-master>
  </fo:layout-master-set>

  <fo:page-sequence master-reference="simple">
    <fo:flow flow-name="xsl-region-body">
      <fo:block font-size="18pt" text-align="center" font-family="Mincho">
        ハロー (明朝体)
      </fo:block>
      <fo:block font-size="18pt" text-align="center" font-family="PMincho">
        ハロー (P明朝体)
      </fo:block>
      <fo:block font-size="18pt" text-align="center" font-family="Gothic">
        ハロー (MSゴシック)
      </fo:block>
      <fo:block font-size="18pt" text-align="center" font-family="PGothic">
        ハロー (MSPゴシック)
      </fo:block>
      <fo:block font-size="18pt" text-align="center" font-family="UI Gothic">
        ハロー (MSUIゴシック)
      </fo:block>
    </fo:flow>
  </fo:page-sequence>

</fo:root>
				
			

作成したら FOP_HOME/examples/fo/basic に保存します。

FOP コマンドで実際に実行してみます。

				
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

>cd /D D:\project\docbook\fop-0.20.5

>fop examples\fo\basic\hello.jp.fo hello.pdf -c conf\userconfig.xml
[INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser
[INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser
[INFO] FOP 0.20.5
[INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser
[INFO] building formatting object tree
[INFO] setting up fonts
[INFO] [1]
[INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser
[INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser
[INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser
[INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser
[INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser
[INFO] Parsing of document complete, stopping renderer

D:\project\docbook\fop-0.20.5>
			
			
[注意]注意

実行時にオプションで -c conf\userconfig.xml を指定してください。

hello.pdf のように日本語がきちんと表示されているのを確認します。

V.5. PDFを出力する

DocBook文書からPDFを実際に出力してみます。 大まかな流れとしては以下のようになると思います。

  1. DocBook文書をDocBook-XSLを使用してFOへ変換します。

    必要なもの:FO変換用のDocBook-XSLの定義ファイル

  2. FOをApache FOPを使用してPDFへ変換します。

V.5.1. FO出力用のXSLの作成

以下のようなXSLファイルを作成します。

例 V.3. FO出力用のXSLファイルのサンプル

    				
docbook-pdf.xsl
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version='1.0'>
  <xsl:import href="../docbook-xsl-1.70.1/fo/docbook.xsl" /> 1
  <xsl:param name="chunker.output.encoding" select="'UTF-8'" />  
  <xsl:param name="fop.extensions" select="1" /> 2
  <xsl:param name="paper.type" select="'A4'" /> 3
  <xsl:param name="draft.mode" select="'no'" /> 4
  <xsl:param name="section.autolabel" select="1" /> 5
  <xsl:param name="section.label.includes.component.label" select="1" /> 6
  <xsl:param name="hyphenate">false</xsl:param> 7
  <xsl:param name="chapter.autolabel" select="'I'"/> 8
  <xsl:param name="callout.graphics.extension" select="'.gif'"/> 9
  <xsl:param name="title.font.family" select="'MSGothic'" /> 10
  <xsl:param name="body.font.family" select="'MSMincho'" /> 11
  <xsl:param name="sans.font.family" select="'MSGothic'" /> 12
  <xsl:param name="monospace.font.family" select="'MSMincho'" /> 13
</xsl:stylesheet>    				
    			
1

インポートするxslファイルを指定します。

2

FOP を使用する場合(0.20.5またはそれ以前のバージョン)は1にする。 デフォルトは0

3

出力する用紙サイズの設定をします。

4

ドラフトモードで作成するかどうかのパラメータ。

5

節の自動附番を行うかどうかのフラグ。デフォルトは0

6

番号のつけ方で1を設定することで、以下のように附番される。 デフォルトは0

    						
Chapter 3. Using a mouse
1.  Basic mouse actions    sect1
1.1  Left button           sect2
1.2  Right button          sect2
1.2.1 Context menus        sect3
2.  Selecting              sect1
2.1  Click and drag
2.2  Double click				
    						
    					
7

trueに設定した場合は言葉がハイフンで結ばれる。 日本語の場合はfalseにしないとエラーが発生する。

    						
[ERROR] Couldn't find hyphenation pattern ja
[ERROR] Error building hyphenation tree for language ja
								
    					
8

章の番号の付け方の定義

  • 1 または arabic

    (Default)数字で附番される。 (1, 2, 3 ...).

  • A または upperalpha

    大文字のアルファベットで附番される。例 (A, B, C ...).

  • a または loweralpha

    小文字のアルファベットで附番される。例 (a, b, c ...).

  • I または upperroman

    大文字のローマ数字で附番される。例(I, II, III ...).

  • i または lowerroman

    小文字のローマ数字で附番される。例 (i, ii, iii ...).

9

calloutで使用する画像の形式。デフォルトは png だが,FOPの場合はエラーが発生するので、gifにした。

10

このフォント名は FOP のユーザー・コンフィグレーション・ファイルで定義したフォント名を指定します。 フォント名指定を誤ると、FOP がフォントを見つけられず、作成される PDF では、該当箇所が "#" と表示されてしまいます。


V.5.2. build.xmlファイルの作成

PDF生成用のbuild.xmlファイルと プロパティファイルbuild.propertiesを作成します。

				
build.properties
				
docbook.home=../docbook-xml-4.5CR3
fop.home=../fop-0.20.5
	
docbook.dtd=${docbook.home}/docbookx.dtd
docbook.public.id=-//OASIS//DTD DocBook XML V4.5//EN
	
lib.dir=../lib
xsl.dir=../docbook-xsl-1.70.1
src.dir=${basedir}/contents
	
dest.dir=${basedir}/pdf
source=helloworld.xml
				
			

例 V.4. PDF出力用のbuild.xmlファイルサンプル

    					
build.xml
<project name="helloworld-pdf.sample" basedir="." default="all">
  <property file="build.properties" />
  <taskdef name="fop" 1
           classname="org.apache.fop.tools.anttasks.Fop">
    <classpath>
      <pathelement location="${fop.home}/build/fop.jar"/>
      <pathelement location="${fop.home}/lib/avalon-framework-cvs-20020806.jar"/>
      <pathelement location="${fop.home}/lib/batik.jar"/>
    </classpath>
  </taskdef>
        
  <target name="clean">
    <delete dir="${dest.dir}"/>
    <mkdir dir="${dest.dir}"/>
  </target>  
  
  <target name="all">
    <antcall target="clean"/>
    <antcall target="pdf"/>
  </target>

  <target name="pdf">
    
    <copydir dest="${dest.dir}/images" 
             src="${xsl.dir}/images"/>
        
    <xmlvalidate warn="false">
      <xmlcatalog>
        <dtd publicId="${docbook.public.id}"
             location="${docbook.dtd}" />
      </xmlcatalog>
      <fileset dir="${src.dir}">
        <include name="${source}" />
      </fileset>
    </xmlvalidate>
    <xslt basedir="${src.dir}" 2
          destdir="${dest.dir}" 
          style="${basedir}/docbook-pdf.xsl" 
          extension=".fo" 
          includes="helloworld.xml">
      <classpath>
        <pathelement location="${lib.dir}/xalan.jar" />
      </classpath>
      <xmlcatalog>
        <dtd publicId="${docbook.public.id}" location="${docbook.dtd}" />
      </xmlcatalog>
    </xslt>
    <fop format="application/pdf" 3
         basedir="${dest.dir}"
         outdir="${dest.dir}"
         messagelevel="debug"
         userconfig="${fop.home}/conf/userconfig.xml">
      <fileset dir="${dest.dir}">
        <include name="*.fo"/>
      </fileset>
    </fop>
  </target>
</project>
    				
1

Apache FOPにはAnt用のタスク定義が行えるクラスが付属しているので 定義します。

2

DocBook-XSLスタイルシートを使用してDocBook文書から FOへ変換する処理を記述しています。

3

Apache FOPを使用してFOファイルからPDFへ変換する処理を記述しています。


変換対象のDocBook文書は項IV.3. 「DocBook文書の修正」で作成した文書を使います。

Ant実行後にhelloworld.pdf が作成されます。

第VI章 DocBook Tips

VI.1. 1つのbookを複数のファイルに分割するには

ここでご紹介している文章のように1つのbookにドキュメントを記述していくと、 1,000行を越えたあたりから、自分はだんだん可読性が悪くなります。 なんとか分割出来ないものかと調べていましたら、book自体も複数のファイルに 分割できるんですね。

例としてdocbook.xmlというファイルを章毎に分けてみることにします。

章毎に、docbook-pre.xml,docbook-set.xml...とdocbookを作成します。 ルートは「章」になるので、chapterです。docbook-pre.xmlの中身を見てみましょう。

  		
<?xml version="1.0" encoding="UTF-8"?>
 
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 
"../../docbook-xml-4.5CR3/docbookx.dtd">

<chapter id="docbook_pre">
	<title>必要なツールとその入手先の紹介</title>
...
</chapter>
  		
  	

次にchapterの上の要素であるbookのファイルdocbook.xmlの中を見て見ます。 ごらんのようにENTITYで宣言することで、参照をすることが出来るようになります。

  		
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 
"../../docbook-xml-4.5CR3/docbookx.dtd"[
<!ENTITY docbook_pre       SYSTEM "docbook-pre.xml">	
<!ENTITY docbook_set       SYSTEM "docbook-set.xml">
<!ENTITY docbook_html      SYSTEM "docbook-html.xml">
<!ENTITY docbook_chunk     SYSTEM "docbook-chunk.xml">
<!ENTITY docbook_pdf       SYSTEM "docbook-pdf.xml">
<!ENTITY docbook_reference SYSTEM "docbook-reference.xml">
<!ENTITY docbook_glossary  SYSTEM "docbook-glossary.xml">
]>
<book id="docbook">
	&docbook_pre;
	&docbook_set;
	&docbook_html;
	&docbook_chunk;
	&docbook_pdf;
	&docbook_reference;
	&docbook_glossary;
</book>
  		
  	
[注意]注意

文章を記述する際にはDOCTYPE宣言は記述しておかないと、入力補完等の機能が使えなくなるので 入れておくと便利ですが、AntでHTML等に出力する際はコメントアウトしておいてください。

DocBook V4.5CR3リファレンス

概要

DocBookで使用するタグの詳しい説明は DocBook: The Definitive Guide にあります。


目次

keycap — キーボードのキーに刻印されている文字を表します。
keycode — キーボードのキーを表す(主に数字の)内部的な識別子
keycombo — キーの入力の組み合わせの表現に使います。
itemizedlist — 黒丸で箇条書きを行う際に使用します。
orderedlist — 番号箇条書きを記述する際に使用します。

名前

keycap — キーボードのキーに刻印されている文字を表します。

概要

キーボード上に刻印されている文字を表し、キーの入力説明等に使用します。

<keycap>Ctrl</keycap>
			

出力サンプル

Ctrl


名前

keycode — キーボードのキーを表す(主に数字の)内部的な識別子

概要

キーボードのキーを16進表記で表す場合などに使用します。

<keycode>0x3B</keycode>
			

出力サンプル

0x3B


名前

keycombo — キーの入力の組み合わせの表現に使います。

概要

<keycombo>
  <keycap>Ctrl</keycap>
  <keycap>C</keycap>
</keycombo>
			

出力サンプル

Ctrl-C


名前

itemizedlist — 黒丸で箇条書きを行う際に使用します。

概要

<itemizedlist>
  <listitem>
    <para>項目1</para>
  </listitem>
  <listitem>
    <para>項目2</para>
  </listitem>
  <listitem>
    <para>項目3</para>
  </listitem>
</itemizedlist>
			

出力サンプル

  • 項目1

  • 項目2

  • 項目3


名前

orderedlist — 番号箇条書きを記述する際に使用します。

概要

<orderedlist>
  <listitem>
    <para>項目1</para>
  </listitem>
  <listitem>
    <para>項目2</para>
  </listitem>
  <listitem>
    <para>項目3</para>
  </listitem>
</orderedlist>
			

出力サンプル

  1. 項目1

  2. 項目2

  3. 項目3

用語集

F

FO(Formating Object)

FOはフォーマッティングオブジェクトの略称で、 XMLの要素型でレイアウトや書式を指定するためのものです。

T

TrueTypeフォント

1989年にApple社が開発し、同社のMac OS 7.0(当時はSystem 7.0)から搭載しているフォントシステム。 また、同システムで用いられるフォント形式。 Microsoft社に技術供与され、Windows 95からはシステム標準のフォントシステムとして広く用いられている。 TrueTypeはOSの機能として実装されたアウトラインフォントシステムであるため、 拡大・縮小してもジャギー(ギザギザ)が生じず、解像度によらない精細な出力を画面と印刷の両方で同じように得られる。

Type1フォント

Adobe Systems社のページ記述言語「PostScript」で利用するフォント格納形式の一つ。 アルファベットなどの1バイト文字を収録するためのフォント形式で、 事実上の標準形式として多くの欧文フォントに採用されている。

三次ベジェ曲線で表現されたアウトラインフォントとなっており、 低解像度で字形が歪むのを補正するヒンティング機能を備える。

X

XSL(Extensible Stylesheet Language)

Microsoft社、Inso社、ArborText社の3社を中心に提案された、 XML文書の見栄え(スタイルシート)を記述する言語。 XMLの見栄えを記述する言語としてはXSLのほかに、 HTMLの見栄えを記述するのに使われているCSSも使うことができる。

XSL-FO

XSL-FOとは、 W3C で制定された XMLを奇麗にレイアウトして印刷するための仕様として策定した XSL 仕様の略称です。 XSL Version 1.0 仕様は、2001年10月15日にW3C勧告となりました。

参照 W3C(World Wide Web Consortium), XSL(Extensible Stylesheet Language).

W

W3C(World Wide Web Consortium)

WWWで利用される技術の標準化をすすめる団体。 WWW技術に関わりの深い企業、大学・研究所、個人などが集まって、1994年10月に発足した。

W3Cの設立にはマサチューセッツ工科大学(MIT)や、 WWWが開発された欧州合同素粒子原子核研究機構(CERN)などが大きな役割を果たしている。

現在では、マサチューセッツ工科大学計算機科学研究所(MIT/LCS)、 フランス国立情報処理自動化研究所(INRIA)、 日本の慶應義塾大学SFC研究所(Keio-SFC)がホスト機関としてW3Cを共同運営している。

第VII章 参考文献

この文書を作成するに当たって参考にした文書を列記します。

自宅サーバをDebian GNU/Linuxで構築

概要

作成した文書を公開するにはサーバ環境の構築が必要です。この章で自宅のパソコンで サーバー構築をする際の情報を掲載していきます。


第I章 Debian GNU/Linuxを選択した理由

自宅でサーバ環境を構築する時に考えることがいくつかあります。妻子持ちなので 条件を挙げていくとだんだん億劫になってきました。

  • 24時間稼動させたい。

    仕事でもパソコンを使っているので自宅にある文書を閲覧したいので これは実現したいですね。

  • 騒音がしないこと。

  • お金が掛からないこと。

    OS、パソコン、消費電力も含めて考えないといけません。

結果として、パソコンはキューブタイプの静音性の高いものを一台組み上げました。 OSは最初からWindowsは考えていなくて、Linuxにしました。Vine Linuxにしようとも 思いましたが、今回は勉強もしたかったのでDebian GNU/Linuxにしました。

Debian GNU/Linux は Debian Project が作成したLinux のディストリビューションのひとつで、安定版(stable)はよくテスト されていて本当に安定しているので気に入っています。

以前はVine Linuxを使っていましたが、Debianを使い出したら戻れなくなってしまいました。 結構、コマンドを覚えないといけないので面倒なはずなのですが。。。

第II章 機器構成について

コンテンツの作成は慣れているWindowsXpが入っているノートパソコンで行っています。 公開用のサーバとして購入したパソコンを充てています。 大変シンプルな構成ですね。

どこまで構築できるかは分かりませんが、WWWサーバ,Mailサーバ, Svnサーバとしての機能は持たせたいと思います。

図 II.1. 我が家のネットワーク構成図

我が家のネットワーク構成図

第III章 Debianで日本語を扱うためには

概要

X Window Systemで日本語を表示させたり,入力させたりする方法のメモを掲載しています。 Debian のインストール時に『デスクトップ環境』にチェックを入れておけばこんな苦労はいりませんでした。

III.1. Debianで日本語を表示するには

Debianをインストールする時に、『デスクトップ環境』を選んでいない場合は日本語での 表示は出来ていないと思います。日本語表示をする方法を記述します。

III.1.1. システムレベルの設定

システムとして日本語のロケールが作成されているか確認します。

				
# dpkg-reconfigure locales
  			
			

して「ja_JP.EUC-JP」をつくる。 この時どのロケールをシステム標準にするか聞かれますが、 特別な理由がない限り「なし (None)」を選びます。 システム標準のロケールを日本語 (ja_JP.EUC-JP など) にした場合、 デフォルトで日本語を表示できないコンソールでの表示が化ける事になります。 ちなみにここで選んだロケールの設定は /etc/environment に書き込まれます。 設定内容を確認します。

				
$ cat /etc/locale.gen | grep ^ja_JP
ja_JP.EUC-JP EUC-JP
  			
			

III.1.2. ユーザレベルの設定

ユーザ毎の設定を行います。language-env パッケージに含まれる set-language-env コマンドを使えば日本語に必要な設定をしてくれます。

				
$ set-language-env
  			
			

質問に答えていくだけで、設定ファイルを適当に作ってくれます。 この後、 startx で X を走らせると、日本語の表示や入力がほとんど動いています。 ただし man にも書いてあるとおり root での使用は止めましょう。

標準ではターミナルエミュレータが自動起動するように設定されます。 自動起動させたくないなら、 ~/.xsession の先頭に

				
TERMINAL_EMULATOR=NONE
  			
			

を追記しましょう。

III.1.3. 日本語フォントの導入

X Window で日本語を表示するには日本語フォントが必要です。TrueTypeフォントとXビットマップフォント の導入を行います。

III.1.3.1. フォント管理パッケージのインストール

debian は TrueType フォントを defoma と x-ttcidfont.conf で管理しています。 インストールされていなければインストールします。

					
# apt-get install defoma x-ttcidfont-conf
					
				

/etc/X11/XF86Config-4 への設定を行います。以下の記述を追加します。

					
Section "Files"
    FontPath
        "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection
					
				

xtt モジュール読み込むのも忘れずに。 freetype と記述のある 部分を書き換えます。

					
Section "Module"
#       Load "freetype"
        Load "xtt"
EndSection
					
				

III.1.3.2. TrueTypeフォントのインストール

apt-get コマンドでパッケージのインストールを行うと、 /usr/local/share/fonts 以下にコピーされ、 ヒントファイルも自動で作成されました。以下は表示上の都合の為改行していますが、 一行で入力しています。

					
# apt-get install ttf-kochi-gothic ttf-kochi-mincho
ttf-kochi-gothic-naga10 ttf-sazanami-gothic ttf-sazanami-mincho
					
				

III.1.3.3. Xビットマップフォントのインストール

TrueTypeフォントのインストールと同様でした。

					
# apt-get install xfonts-a12k12 xfonts-ayu xfonts-efont-unicode
xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname
xfonts-kappa20 xfonts-marumoji xfonts-mona xfonts-mplus xfonts-shinonome
					
				

III.2. Debian で日本語を入力するには

今まで、kinput2 + canna で日本語入力を行っていました。変換効率があまり良くないので 他のかな漢字変換を物色しました。uim+ anthy を使うことにします。 日本語入力環境改善プロジェクト の記事を読んだら良さそうでしたので使ってみます。

III.2.1. 多言語入力ライブラリ uim について

UIMはUniversal Imput Method の略称です。 日本語だけでなく、韓国語や中国語、さらにその他の言語にも対応することが可能です。 kinput2への置き換えが可能です。

オフィシャルサイトは http://uim.freedesktop.org/ です。使えるかな漢字変換システムは以下です。

  • かな漢字変換エンジン Anthy

    http://anthy.sourceforge.jp/

    連文節変換方式の変換エンジン。Microsoft IME(MS-IME)やATOKなどに慣れている方向け。

  • 予測入力システム PRIME

    http://www.taiyaki.org/prime/

    携帯電話のような、予測入力方式の変換エンジン。

  • SKK

    Shift キーを押して明示的に文節を指定することで高精度の変換を行うエンジン。

III.2.2. uim + anthy のインストール

uim anthy をインストールします。

uim-applet-gnomeもインストールしておくと、 uim-im-switcher(uimで動的に変換エンジンを切り替える機能)が日本語表示になります。

				
# aptitude install anthy uim uim-anthy uim-applet-gnome
				
			

~/.xsession の設定を行います。

				
if type uim-xim &> /dev/null ; then
  uim-xim &
fi
XMODIFIERS=@im=uim ; export XMODIFIERS
GTK_IM_MODULE=uim; export GTK_IM_MODULE
UIM_IM_ENGINE=anthy ; export UIM_IM_ENGINE
uim-xim &
uim-toolbar-gtk &
uim-toolbar-gtk-systray &     
				
			

kterm などで上記の設定で動かない場合には .Xresources ファイルを編集します。

				
#define XIM uim 
				
			

kinput2 が設定されていたらコメントアウトします。

				
!#define XIM kinput2
!Kinput2*conversionStartKeys: Shift<Key>space
				
			

III.3. 半角/全角キーで日本語のON/OFFをおこなうには?

Windowsパソコンでは日本語入力の切替はAlt+半角/漢字 キーまたは、半角/漢字キーのみで行います。が、Linuxというよりkinput2 + canna の環境ではCtrl + o, Shift + Space等で切り替えるようになっています。 102キーボードを前提にしてそうな感じはしますが、自分が使用しているのは106の日本語キーボード なので、半角/漢字キーで切替ができるとうれしいです。

まず、最初にキーコードの調査を行い、キーの割付を変えることで実現していこうと思います。

III.3.1. キーコードの調査を行う。

xevコマンドを使用して、半角/漢字キーのキーコード を調べます。

				
$ xev