[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:11130] Re: [JF:08415] Re: [linux-users:56668] Re: sgml2latex of sgml-tools(wasRe:sgml2html でエラー)



佐野@浜松です。

# 宛先は JF-ml ですが、以前 sgml-tools の latex 出力に関して
# 中野さんと今井さんが linux-users ML でやりとりしていたメールの
# 内容を踏まえているので、今井さんにも Cc: してます。
# また、Debian パッケージの開発にも関連しているので (というか
# それがメインだったりもするんだけど、まあ利用者としては主に JF の
# 人を想定しているので To: が JF-ml だったりするわけです) debian-devel@JP 
# にも Cc: してます。

In article <19990817235154K.bak@xxxxxxxxxxxxx>,
  at Wed, 18 Aug 1999 00:01:25 +0900,
   on [JF:08415] Re: [linux-users:56668]
      Re: sgml2latex of sgml-tools(wasRe:sgml2html でエラー),
 Kunihiko IMAI <bak@xxxxxxxxxxxxx> さん writes:

> >  できました :-) sgml の \trans の部分に少々問題が
> > 残っているようですが、チェックの際の通読などには
> > txt よりもはるかに良いですね。
> 
> おめでとうございます :-]

 \trans の部分に問題が出るのは /usr/lib/sgml-tools/dist/sgmltool/latex2e/mapping
に <trans> と <tdate> の置換処理が無いせいだと思います。

@@ -110,6 +110,12 @@
 
 <date>         +       "\\date{"
 </date>                        "}"               +
+
+<trans>                +       "\\trans{"
+</trans>                       "}"               +
+
+<tdate>                +       "\\tdate{"
+</tdate>                       "}"               +
 
 <newline>              "\\\\ "           
 </newline>

こんな感じで置換処理を追加すれば良いと思います。

あ、それと tdate の部分で linuxdoc-sgml.sty (これは Debian だと
 /usr/share/texmf/tex/latex/misc/linuxdoc-sgml.sty) の中で

\gdef\title#1{\gdef\@title{#1}}
\gdef\@date{}
\gdef\date#1{\gdef\@date{#1}}
\gdef\@author{}
\gdef\author#1{\gdef\@author{#1}}
\gdef\@tdate{}
\gdef\date#1{\gdef\@tdate{#1}}
\gdef\@trans{}
\gdef\trans#1{\gdef\@trans{#1}}
\gdef\@abstract{}
\gdef\abstract#1{\gdef\@abstract{#1}}

こうなっている部分があったら、"\gdef\date#1{\gdef\@tdate{#1}" の部分を
ちゃんと tdate を定義させるために、下のように書き換えてください。

\gdef\title#1{\gdef\@title{#1}}
\gdef\@date{}
\gdef\date#1{\gdef\@date{#1}}
\gdef\@author{}
\gdef\author#1{\gdef\@author{#1}}
\gdef\@tdate{}
\gdef\tdate#1{\gdef\@tdate{#1}}
\gdef\@trans{}
\gdef\trans#1{\gdef\@trans{#1}}
\gdef\@abstract{}
\gdef\abstract#1{\gdef\@abstract{#1}}

どうも JF にあるパッチの

diff -crN sgml-tools-1.0.9/lib/linuxdoc-sgml.sty sgml-tools-1.0.9j/lib/linuxdoc-
sgml.sty
*** sgml-tools-1.0.9/lib/linuxdoc-sgml.sty      Fri May 15 05:06:13 1998
--- sgml-tools-1.0.9j/lib/linuxdoc-sgml.sty     Tue Nov 17 13:45:04 1998
***************
*** 62,67 ****
--- 62,71 ----
  \gdef\date#1{\gdef\@date{#1}}
  \gdef\@author{}
  \gdef\author#1{\gdef\@author{#1}}
+ \gdef\@tdate{}
+ \gdef\date#1{\gdef\@tdate{#1}}
+ \gdef\@trans{}
+ \gdef\trans#1{\gdef\@trans{#1}}
  \gdef\@abstract{}
  \gdef\abstract#1{\gdef\@abstract{#1}}
  
この部分から typo だったのではないか、という気がします。

ようやく、Debian potato 用 sgml-tools の NMU ready package が
できあがりました。 sgml-tools パッケージを前もってインストールして
いなくてもパッケージのソースから build できるようにするために、
いろいろ苦労してしまいました。

# sed の使い方をまだまだマスターしていないことが実感できてしまった、、、
# shell script の中で sed を使って perl のスクリプトを編集するという
# めんどうなことをしてます。見てみたいかたは doc/Makedoc.sh をどうぞ。

あとで、http://www.debian.org/~sano/ 以下から

       33    32099 Dec 13 00:51 sgml-tools_1.0.9-1.3.1.diff.gz
        1      646 Dec 13 00:53 sgml-tools_1.0.9-1.3.1.dsc
        2     1427 Dec 13 00:53 sgml-tools_1.0.9-1.3.1_i386.changes
      329   333722 Dec 13 00:53 sgml-tools_1.0.9-1.3.1_i386.deb
     1187  1208960 Dec 11 10:02 sgml-tools_1.0.9.orig.tar.gz

として download できるようにしておくつもりです。

 md5sum は

    810ce7b8aaf1e815678dfb5614364da2  ../sgml-tools_1.0.9-1.3.1.diff.gz
    b5d1f287ce1f126b71f68219c041fb96  ../sgml-tools_1.0.9-1.3.1.dsc
    29671bee5a256bfd66fdd9fdc60fe36c  ../sgml-tools_1.0.9-1.3.1_i386.changes
    76a8f3e4531ba1ea253e5d0421c29809  ../sgml-tools_1.0.9-1.3.1_i386.deb
    41187c94c4c112253543c50a834c223c  ../sgml-tools_1.0.9.orig.tar.gz

です。

 <trans> と <tdate> を追加する部分は、 linuxdoc dtd とは別に linuxdoctr dtd を
追加するという方法で盛り込むことにしました。なので翻訳版の sgml は文書冒頭の

  <!DOCTYPE LINUXDOC SYSTEM>

を

  <!DOCTYPE LINUXDOCTR SYSTEM>

としないと <trans> と <tdate> が変換されません。

逆に、オリジナルの文書で <trans> と <tdateL が無いものは、そのまま

  <!DOCTYPE LINUXDOC SYSTEM>

としておけば良いです。今までは <trans> と <tdate> が無いぞ、という
エラーメッセージが出ていましたが、この方法なら、それは出なくなります。

 sgml2txt, sgml2html, sgml2latex の 3 つで、オプション -c nippon を
付ければ日本語文書を変換可能であることを確認しました。

また SGMLTools.pm に手を加えて、 -l ja が指定された場合は常に
 -c nippon になるようにしたので、-l ja を指定した場合は -c nippon を
省略可能です。

それから、sgml2html では内部で NKF を読んでいて、最初の .html だけ
 JIS encoding に変更していました (ただし split された *-1.html 以降
は euc-jp のままになっていた) が、nkf -j を nkf -e に変更した上で
コメントアウトし、目次のページを含めてすべて euc-jp として出力される
ようにしました。これは以前、目次のページだけ JIS (ISO-2022-JP) で
次ページ以降が euc-JP であることから、途中で目次に戻ると文字化けする
ブラウザがあるらしいと聞いたことによります。


それから sgml2latex の出力は jlatex 用になります。もし platex 用に
したい場合は  /usr/lib/sgml-tools/dist/fmt_latex2e.pl の

      open OUTFILE, ">$filename.tex";
      while (<$infile>)
        {
          if (/^\\documentclass/) 
            {
              s/\\documentclass\[.*\]/\\documentclass\[$replace\]/;
              s/{article}/{j-article}/ if ($global->{charset} eq "nippon");
              $_ = $_ . "\\makeindex\n" if ($latex2e->{makeindex});
            }  

この部分で {article} を {j-article} に置換しているので、ここと


  #
  # Run LaTeX in nonstop mode so it won't prompt & hang on errors.
  # Suppress the output of LaTeX on all but the last pass, after
  # references have been resolved.  This avoids large numbers of
  # spurious warnings.
  #
  my ($latexcommand) = "latex '\\nonstopmode\\input{$filename.tex}'";
  if ($global->{charset} eq "nippon")
    {
      $latexcommand = "jlatex '\\nonstopmode\\input{$filename.tex}'";
    }

ここの部分 ("latex ..." を "jlatex ..." に置換している) を
それぞれお好みにあわせて編集してください。

一応、こじまさんの ext-root-mini-howto と JF Project 編の sgmlnote.sgml、
それに smgl-tools に附属の guide.sgml (j が付いてない英語版のもの)、
それから DocType を LINUXDOC から LINUXDOCTR に置換した状態で
 Unix-Internet-Fundamentals-HOWTO.sgml と Coffee.sgml をちゃんと
変換できることを確認しています

 Serial-HOWTO もやってみたのですが、text と html は問題無いものの、
 latex への変換で文中に % があったり (url の中など) # があったりする部分で
 jlatex のエラーが出ていました。このへんは文書を作成する時にエスケープの
方法を考えておかないといけないのかもしれません。とりあえず変換後の .tex を
編集して、ひっかかりそうな文字の前に "\" を置きまくったら jlatex もなんとか
通って xdvi-ja.small でちゃんと表示されるようになったみたいですが。

> jlinuxdoc の jguide.sgml も sgml-tools でコンパイルするとおかしな
> 動作をしたような覚えがあります.

気のせいではありません。jLinuxDoc-SGML では linuxdoc DTD にいろいろと
定義を追加していて、 <hrule>, <faq>, <keyword>, <poster>, <pdate>, 
<question>, <answer>, <comment> などが使えましたが、sgml-tools 1.09j では
これらの定義はすべてサポートされなくなりました。従って、これらの
使えなくなったタグを含んでいる jguide.sgml を sgml-tools 1.09j で
変換すると、jLinuxDoc-SGML での変換結果とかなり違った結果になるはずです。

どちらかといえば、これはツールの更新に合わせて jguide.sgml を更新するべき
なのでしょう。一応、できるところから、ということで「SGML Tips for JF」
 sgmlnote.sgml という文書を作成してあったりします。

# いずれは DocBook DTD への移行に関するガイドとして、新しい文書を
# 作成しなければならないだろうと思っています。

> > # うーん、もうひとがんばりすると、完全日本語化も
> > # できちゃいそうな気配... (とか言ってみるテスト)
> 
> うーん,本家プログラムは新バージョンが出ているので,微妙なところでは
> ありますね.
> どうせなら移植はこの新バージョンのほうで,というのもありかもしれません.

私も、原作者が開発を放棄している sgml-tools (v1) に労力を注いでもあまり
意味は無いのではないかという気がしています。どうせ fork するなら昔の
 jLinuxdoc-SGML でもいいわけですが、LDP の翻訳に便利なように、と考えると
現状は sgml-tools ですが、むしろ JF では LDP に先行して DocBook への
移行を進めていって、LDP で実施する際に方法を提案できるようにしていくべき
ではないかと考えています。DocBook DTD の変換をちゃんとできるようになれば、
原文を翻訳前に DocBook DTD へ変換してしまってそれを原著者にフィードバック
していく、ということを検討してもいいかもしれません。

以上。


-- 
     # (わたしのおうちは浜松市、「夜のお菓子」で有名さ。)
    <xlj06203@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)