日本語のindexterm

普段はスタイルシートばかり作っていて、DITAでオーサリングするという機会はほとんどありませんでした。たまたまDITAでオーサリングするお仕事があり、普段はスキーマに沿ってテストデータを作るくらいにしかつかわないoXygen XML Authorでオーサリングしました。

一通りいいかな?というところまで出来たのですが、索引がないのがイマイチに思えます。せっかく作ったので索引も入れてやろうと、bookmapには、

    <backmatter>
        <booklists>
            <indexlist/>
        </booklists>
    </backmatter>

とindexlistを入れました。あとはtoipicごとにindextermを入れてやれば良い訳ですが、ご存知のとおりに日本語のindextermにはindex-sort-asで読みを入れてやらねばなりません。これが結構大変な作業で、数十ページの文書で入れ終わるのに2時間もかかってしまいました。

    <indexterm>一般比較演算子<index-sort-as>いっぱんひかくえんざんし</index-sort-as></indexterm>
    <indexterm>関数<index-sort-as>かんすう</index-sort-as></indexterm>

普通こいうのはインデクサーという方のお仕事なのだそうですが、やはり一番苦痛なのはindex-sort-asを入れなければならない点です。特に用語が頻出でindextermで何回も同じindex-sort-asを入れているとイヤになってきます。

あとで考えたのですが、こういうのはconkeyrefを使えば効果的ですね。例えばmapで

     <keydef keys="INDEXTERM" href="indexterm.xml"/>

としておいて、indexterm.xml

     <indexterm id="一般比較演算子">一般比較演算子<index-sort-as>いっぱんひかくえんざんし</index-sort-as></indexterm>
     <indexterm id="関数">関数<index-sort-as>かんすう</index-sort-as></indexterm>

としておきます。

あとはtopicの側では

     <indexterm conkeyref="INDEXTERM/一般比較演算子"/>
     <indexterm conkeyref="INDEXTERM/関数"/>

とオーサリングすればオシマイです。これでDITA-OTがちゃんとconkeyrefを展開してくれます。せっかくですので後々のメンテナンスのためにこのように直しておきました。

一般的に多言語展開するときは英語がベースで、そこから各国語に展開するそうです。ですので、日本語が英語から展開されるのか、それともさすがに日本語は別途作るのかにもよりますが、このような頻出のindextermの工夫はやっておくと便利かもしれません。