Re: latex2htmlでのパターンマッチングを用いた定義

名前: 竹の
日時: 2003-09-09 20:26:20
IPアドレス: 202.243.120.*

>>21644 > みなさんのお知恵をお借りしたいと思い投稿させて頂きます. 実は、ここは latex2html の話題はあまり出ないようです。まだ latex2html の細かい話が続くようでしたら、メールで直接連絡して頂いても構いません。 > その2 > \newcommand{\Word}[1][]{\def\next{#1}% > \ifx\next\@empty\def\next{\WordB}% > \else\def\next{\WordA{#1}}\fi \next} 前にも言ったように、この \newcommand の中に書かれている \ifx とか \next とかを latex2html は解釈してくれません。latex2html が解釈す るマクロはあくまで "LaTeX" のものだけですから、これでも latex2html は多分うまく行かないでしょう。 よって、LaTeX ファイル中にこのマクロを書くのであれば、latex2html に関しては無効になるようにするか、または > そこで,sty ファイルに対応する perl ファイルを作成するために, とすることが必要でしょう。最初の方法ならば、例えばマクロ部分を \latexhtml{% \def\Word{\@ifnextchar[{\WordA}{\WordB}}% ] \def\WordB#1{\WordA[#1]{#1}} \def\WordA[#1]#2{\htmlref{#2}{word:#1}} }{} とでもして、.latex2html-init に sub do_cmd_Word { local($_) = @_; local($text); local($opt, $dummy) = &get_next_optional_argument; $text = &missing_braces unless ((s/$next_pair_pr_rx/$text=$2;''/eo) ||(s/$next_pair_rx/$text=$2;''/eo)); $opt=$text if ( $opt eq "" ); $_ = "<#0#>word:$opt<#0#>\n$_"; &process_ref($cross_ref_mark,$cross_ref_mark,$text); } とでも書きます (上はやや dirty hack な所がありますが)。 # ただ、あまり綺麗ではないし、面倒なので、通常 latex2html にかけ # ることも考えるときは、細かいことをしすぎない方が楽です 後者なら上の定義を style ファイルと同名 (拡張子は .perl) とすれば 良かったと思います。 ちなみに、 > できたのですが,これをどのようにして \htmlref の引数として実行 > させればよいのかわからずにいます. do_cmd_htmlref では process_ref を使用しているので、上のようにし てそれと同じことをやってやればいいだろうと思います。

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)