#pragma section-numbers off [[TableOfContents]] = 概要 = ["DocBook"]があまりにひどいのでほかの文書記述用XML形式を探していたときに見つけたもの。 とりあえず日本語とかは問題ないし、最低限の機能は実装されている。 初期設定の色が派手すぎたり、出力するHTMLや["LaTeX"]の一部が変だったりするのはご愛嬌だと思っている。 最近の文書は大概SmartDoc形式で記述している。 http://www.asahi-net.or.jp/~dp8t-asm/java/tools/SmartDoc/index_ja.html = インストール = http://www.smartdoc.jp/download/beta.zip {{{ sudo java -cp setup.zip setup sudo chmod 755 /usr/local/bin/sdoc }}} = マニュアル = 配布物を解凍した中にarchive.jarというjarがあります。これをさらに解凍すると、docフォルダがあります。 この中にリファレンスマニュアルが同梱されていますので、説明を読んでHTMLを作成しておくとよいでしょう。 = nxmlで SmartDocを記述する = psgmlは古く、ショートカット類も使いずらいため [[nxml-mode]] に移行しました。 {{{ (load "nxml-mode-20041004/rng-auto.el") (setq auto-mode-alist (cons '("\\.\\(xml\\|xsl\\|rng\\|sdoc\\|xhtml\\|html\\)\\'" . nxml-mode) auto-mode-alist)) }}} smartdoc.rnc をどっかから持ってきてschemas.xmlに以下を追加 {{{ <uri pattern="*.sdoc" typeId="SDOC"/> <typeId id="SDOC" uri="smartdoc.rnc"/> }}} = PGSMLでSmartDocを記述する = {{{SmartDocMode}}}が同梱されていますが、これがぼくは使いずらいので、["psgml-mode"]で記述できるようにしています。 [http://www.t3.rim.or.jp/~harunaga/freebsd/xemacs.html PSGMLでSmartDoc文書を書く]を参考に改造した。 .emacsのsgml-custom-dtdに以下追加 {{{ ("SmartDoc" "<!DOCTYPE doc PUBLIC \"-//Tomoharu Asami//DTD PureSmartDoc XML V1.0.0//EN\" \"file:////Users/sakito/etc/psgml/PureSmartDoc.dtd\">\n") }}} CATALOG.txtに以下追加 {{{ PUBLIC "-//Tomoharu Asami//DTD PureSmartDoc XML V1.0.0//EN" "PureSmartDoc.dtd" }}} ECAT.txtに以下追加 {{{ PUBLIC "-//Tomoharu Asami//DTD PureSmartDoc XML V1.0.0//EN" cdtd/PureSmartDoc.dtd }}} {{{PureSmartDoc.dtd}}}を改造してしまいます。 {{{ <!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "file:///Users/sakito/etc/psgml/xhtml-lat1.ent"> %HTMLlat1; <!ENTITY % HTMLsymbol PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN" "file:///Users/sakito/etc/psgml/xhtml-symbol.ent"> %HTMLsymbol; <!ENTITY % HTMLspecial PUBLIC "-//W3C//ENTITIES Special for XHTML//EN" "file:///Users/sakito/etc/psgml/xhtml-special.ent"> %HTMLspecial; <!ATTLIST doc xml:lang NMTOKEN #IMPLIED> <!ATTLIST div xml:lang NMTOKEN #IMPLIED> <!ATTLIST div normalizer (none) #IMPLIED> <!ATTLIST span xml:lang NMTOKEN #IMPLIED> <!ATTLIST a href CDATA #IMPLIED> <!ATTLIST native format (html|latex2e|plain) #IMPLIED> <!ATTLIST native src CDATA #IMPLIED> }}} を付加し、titleなどの幾つかの要素を属性に変更します。 以下の関数を定義しておくと便利かもしれません。 {{{ (setq sdoc-command-line "sdoc") (defun sdoc () (interactive) (let ( (sdocbuf "*SmartDoc*")) (call-process sdoc-command-line nil sdocbuf nil (buffer-file-name)) (display-buffer sdocbuf) )) ;; ぼくはあまりC-cC-c(sgml-show-context)利用しないので以下に設定している。 (define-key xml-mode-map "\C-c\C-c" 'sdoc) }}} = 複数のSdocファイルをまとめてあつかう = {{{ <p src="hogehoge.sdoc" /> }}} を記述する事で、外部のファイルを読み込む事が可能です。 以下のような方法もあります。 {{{ <?xml version='1.0' encoding="iso-2022-jp"?> <!DOCTYPE doc [ <!ENTITY sdocpart1 SYSTEM "/Users/sakito/doc/emacs21/part1.sdoc"> <!ENTITY sdocpart2 SYSTEM "/Users/sakito/doc/emacs21/part2.sdoc"> <!ENTITY sdocpart3 SYSTEM "/Users/sakito/doc/emacs21/part3.sdoc"> ]> <doc xml:lang="ja"> <head> <title>Emacs21</title> <author>sakito</author> <date></date> </head> <body> &sdocpart1; &sdocpart2; &sdocpart3; </body> </doc> }}} = 関連 = [http://pocketclub.com/program/index_p2_c1.html SmartDocTask] [http://sourceforge.jp/projects/sdoctask/files/ SmartDocTask SourceForge.jp: Project File List] ["texi2sdoc"] ---- ---- CategoryDocumentation