最近,MySQLのCHM版をなんとか作ろうと四苦八苦しています。なんとなく不具合の原因が分かってきました。
一番の問題は,MSの提供しているCHMファイル作成のコンポーネントが,日本語の文書 = Shift-JIS という決め打ちをしている点です。
CHMファイルを作成する HTML Help Workshop というソフトは,CHMファイルをコンパイルするためのコンフィグファイルを作成するエディターのようなもので,実際に位置からhtmlファイルを HTML Help Workshop 上で作成したり,編集したりすることができます。
こいつが曲者で,例えば,記述されている内容が日本語の utf8 で記述されたhtmlファイルを日本語として設定すると,無理やりソースのhtmlファイルをshift-jisに書き換えてしまうのです。この変換機能がまったく役に立たず,ACSII文字以外の文字は,16bit毎に切り刻まれて,化け化けになるわ,無意味な半角英数が出現するわで,ソースファイルそのものが役に立たなくなってしまいます。
ということで,UTF-8のソースファイルは使えないので,ファイルを一旦shift-jisに変換してしまうというのが現実的な方法のようです。
もしくは,文字コードの指定をUTF-8にできればいいのですが,それをどう指定すればいいのかが分からない。
よしんば,これをUTF-8に指定できたとして,その他のファイルとの連携にどこまで制限が掛かってくるのかが分からない。例えば,左に表示されるコンテンツテーブルは,htmlファイル形式で記述するので,なんらかの影響が発生しそう。ファイルをShift-JISに統一するのが無難のようです。
コンテンツテーブルは,
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">
<!-- Sitemap 1.0 -->
</HEAD><BODY>
<OBJECT type="text/site properties">
<param name="Window Styles" value="0x800225">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="1. 一般情報">
<param name="Local" value="D:\dev.mysql.com\manual.ja.html">
</OBJECT>
<UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="1.1. このマニュアルについて">
<param name="Local" value="D:\dev.mysql.com\manual.ja.html">
</OBJECT>
<UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="1.1.1. このマニュアルの表記規則">
<param name="Local" value="D:\dev.mysql.com\manual.ja.html">
</OBJECT>
</UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="1.2. MySQL データベース管理システムの概要">
<param name="Local" value="D:\dev.mysql.com\manual.ja.html">
</OBJECT>
</UL>
<body>
<html>
という書式で書き,Table of Contents.hhc というファイル名にすればいいのだが,テキストエディターで編集したものを HTML Help Workshop に読み込ませると,インデント情報が反映されないのは困ったものだ。このファイル以外に設定情報があるとも思えず,原因が分からない。
さらに,MySQLのリファレンスマニュアルの目次部分
<dl>
<dt><span class="preface"><a href="#preface">Preface</a></span></dt>
<dt><span class="chapter"><a href="#introduction">1. 一般情報</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="#manual-info">1.1. このマニュアルについて</a></span></dt>
<dd><dl><dt><span class="section"><a href="#manual-conventions">1.1.1. このマニュアルの表記規則</a></span></dt></dl></dd>
<dt><span class="section"><a href="#what-is">1.2. MySQL データベース管理システムの概要</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="#history">1.2.1. MySQL の歴史</a></span></dt>
<dt><span class="section"><a href="#features">1.2.2. MySQL の主な機能</a></span></dt>
<dt><span class="section"><a href="#stability">1.2.3. MySQL の安定性</a></span></dt>
<dt><span class="section"><a href="#table-size">1.2.4. MySQL テーブルの最大サイズ</a></span></dt>
<dt><span class="section"><a href="#year-2000-compliance">1.2.5. 西暦 2000 年対応</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="#what-is-mysql-ab">1.3. MySQL AB の概要</a></span></dt>
を文字列置換をつかって形式を合わせたものを使うと,アンカーへのリンク(#)がばっさりと切り捨てられてしまうので,コンテンツテーブルのリンク機能が全然使えなくなってしまうという問題が発生した。
MySQLのマニュアルは膨大な情報量なので,手作業でメンテする部分は極力減らしたいところ。
さて,どうしたものか。
0 件のコメント:
コメントを投稿