tex4htとxymtex、xy-pic、画像出力(指定)、他雑多な事。

名前: 霜月幾日
日時: 2002-09-25 14:16:03
IPアドレス: 133.24.24.*

前回投稿した時は、中途半端な説明をしてしまいましたので改めて。(結構昔) 雑多な事も含めて非常に長くなってしまいました、、、、。 xymtexパッケージをもちいた*.texファイルを tex4htを用いて*.htmlファイルに変換する時は xymtex(epicなどもまた)のコマンドで記述された部分(構造式の記述など)は、 tex4htには理解されないので %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%、 下記の記述の*.texファイル(仮にsample.tex)は $>ht --cleanup jlatex sample.tex 等で処理してください。 htlatexを使用する場合は、 \usepackage[jp,3,section+]{tex4ht}の行をコメントアウトするか削除してから $>htlatex --cleanup sample.tex "jp" 等で処理してください。(オプション等は好みでつけてください。) ("tex capacity exceeded"のエラーが出たときは、更に下の記述を参照してください) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -------------------------------------------------------------- \documentclass{book} \usepackage{xymtex} %全xymtex packageの読み込み \usepackage{txfonts,type1cm}%実際は要らない行 \usepackage[jp,3,section+]{tex4ht} \changeunitlength{0.08pt} \begin{document} \tableofcontents \chapter{xymtest} \section{xymtest} tex4htにおけるxymtexの取り扱い \Picture+[Alt]{filename} \decaheterovb[f{f\fivefusev[d{d\sixfusev[df]{}{}{b}}]% {1==N}{1==H}{b}}]{8a==N}{9B==H;2SA==Et;2SB==H;8B==COOMe;% 3GA==H;% 3B==\dimethylenei[a]{}{1==(yl);2W==OMe;1W==MeOCO}} \EndPicture か \[% \decaheterovb[f{f\fivefusev[d{d\sixfusev[df]{}{}{b}}]% {1==N}{1==H}{b}}]{8a==N}{9B==H;2SA==Et;2SB==H;8B==COOMe;% 3GA==H;% 3B==\dimethylenei[a]{}{1==(yl);2W==OMe;1W==MeOCO}} \] か \(% \decaheterovb[f{f\fivefusev[d{d\sixfusev[df]{}{}{b}}]% {1==N}{1==H}{b}}]{8a==N}{9B==H;2SA==Et;2SB==H;8B==COOMe;% 3GA==H;% 3B==\dimethylenei[a]{}{1==(yl);2W==OMe;1W==MeOCO}} \) の3つの方法がある。 \end{document} ------------------------------------------------- 追加で、xy-picのテスト(xy-picの取得はCTANか、面倒な人はここから拾ってきてください) (ついでに、ここからTeX用の秀丸マクロ(YaTeX-like)とかが手に入ります。) ------------------------------------------------- \documentclass{book} \usepackage[all,arc,dvips]{xy} \usepackage{txfonts,type1cm}%実際は要らない行 \usepackage[jp,3,section+]{tex4ht} \begin{document} \tableofcontents \chapter{xy-pic、\Xy-picというlogoはうまくいかない} \section{ついでにxy-picのtest} まずは、display環境で \NextPictureFile{daen.gif} \[\begin{xy} /r12mm/: {\ar@{.>} 0;(1,0)} ,{\ar@{.>} 0;(0,1)} ,(0,0)*@{*}="c",*+!RU{c} ,(1.2,0.8)*@{o}="p",*+!LD{p} ,"p";"c"**@{--} ,{\ellipse(1.1,0.6){}} ,{\ellipse(,0.8){}} ,{\ellipse<6mm,4mm>{=}} ,{\ellipse<,5mm>{--}} \end{xy}\] 上のPictureを再利用すると \Picture[daen]{\PictureFile} タダのxy環境では、 \begin{xy} /r12mm/: (0,0)*@{*}="c",*++++!R{c} ,(1.2,.8)*+[F]@{+}="p" ,*++!LD{p},"p";"c"**@{--} ,{\ellipse<>{}} ,{\ellipse(0.8){}} .0;(-1,1):: ,{\ar@{.>} 0;(1,0)} ,{\ar@{.>} 0;(0,1)} ,"p";"c",{\ellipse(.8){--}} ,{\ellipse<3mm>{=}} \end{xy} でも、こういうとき(下)はdisplay環境。 \[ \xymatrix{ A & *+[F]{\sum_{i=n}^{m} {i~2}} \\ & {\bullet} & D \ar[ul] }\] \end{document} ------------------------------------------------- というように、 \Picture+[]{} xymtexの命令 \EndPicture で囲むか、\[..xymtexの命令..\]、\(..xymtexの命令..\)といった環境で囲むことで、 問題がクリアできます。(画像として生成するよう判断される) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 注:上記での\Picture+[Alt]{filename attribution}においては Alt属性にはwebブラウザ上でマウスを画像の上に持ってきたとき等に表示されるテキストを 記述できます。([ ]括弧ごと省略も可能です。) filename attributionには,そのファイルの属性を書きます。 いささか不足した説明をすると、webブラウザ等を用いて、この画像の保存を選択したときに 画像ファイルの名称として暫定的に候補として表示される名称です。(端的にfilenameです) (filename attributionは省略可能ですが、{ }括弧は必要です。) Altとfilename attributionは共に日本語はうまく処理されません。 (ASCII文字コードの使用を勧めます) プラス記号(+)をアスタリスク(*)に変えると内容(画像)が縦組みボックスに組まれますが、 違いをハッキリと享受できる程でもありません。また、 \Picture[TUG logo]{http://www.tug.org/logo.gif ID="tuglogo"} といった様な記述をすることもできて、この場合生成されるHTMLコードは <IMG SRC="http://www.tug.org/logo.gif" Alt="TUG logo" ID="tuglogo"> です。 \NextPictureFile{filename}に記述してあるファイルネームは、その直後の画像として 処理される記述を画像にしたときのファイルの名称で、\PictureFileとして記憶され、 \Picture[Alt]{\PictureFile}として再利用できます。 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% また、\Picture+[]{}〜\EndPictureで囲まれている部分が画像となった場合に、 非常に大きい画像になるとわかっているときは ---------------------------------------- \documentclass{book} \usepackage{xymtex} %全xymtex packageの読み込み \usepackage{txfonts,type1cm}%実際は要らない行 \usepackage[jp,xhtml,3,section+]{tex4ht} \changeunitlength{0.08pt} \begin{document} \tableofcontents \chapter{xymtest} \section{xymtest} 画像が大きくなるときの例は \Picture+[takojanai]{structure} \begin{center} \cyclohexanev[% {a\sixfusev[{b\sixfusev[{c\sixfusev[{c\sixfusev[% {d\sixfusev[{d\sixfusev[{d\sixfusev[% {e\sixfusev[{e\sixfusev[{e\sixfusev[{e\sixfusev[% {f\sixfusev[{f\sixfusev[]{}{}{C}}]{}{}{C}}% ]{}{}{B}}]{}{}{B}}]{}{}{B}}]{}{}{B}}% ]{}{}{A}}]{}{}{A}}]{}{}{A}}]{}{}{F}}% ]{}{}{F}}]{}{}{E}}]{}{}{D}}% {c\sixfusev[{d\sixfusev[{e\sixfusev[{e\sixfusev[% {f\sixfusev[{f\sixfusev[{f\sixfusev[% {a\sixfusev[{a\sixfusev[{a\sixfusev[{a\sixfusev[% {b\sixfusev[{b\sixfusev[]{}{}{E}}]{}{}{E}}% ]{}{}{D}}]{}{}{D}}]{}{}{D}}]{}{}{D}}% ]{}{}{C}}]{}{}{C}}]{}{}{C}}]{}{}{B}}% ]{}{}{B}}]{}{}{A}}]{}{}{F}}% {e\sixfusev[{f\sixfusev[{a\sixfusev[{a\sixfusev[% {b\sixfusev[{b\sixfusev[{b\sixfusev[% {c\sixfusev[{c\sixfusev[{c\sixfusev[{c\sixfusev[% {d\sixfusev[{d\sixfusev[]{}{}{A}}]{}{}{A}}% ]{}{}{F}}]{}{}{F}}]{}{}{F}}]{}{}{F}}% ]{}{}{E}}]{}{}{E}}]{}{}{E}}]{}{}{D}}% ]{}{}{D}}]{}{}{C}}]{}{}{B}}% ]{} \end{center} \EndPicture か \[% \cyclohexanev[% {a\sixfusev[{b\sixfusev[{c\sixfusev[{c\sixfusev[% {d\sixfusev[{d\sixfusev[{d\sixfusev[% {e\sixfusev[{e\sixfusev[{e\sixfusev[{e\sixfusev[% {f\sixfusev[{f\sixfusev[]{}{}{C}}]{}{}{C}}% ]{}{}{B}}]{}{}{B}}]{}{}{B}}]{}{}{B}}% ]{}{}{A}}]{}{}{A}}]{}{}{A}}]{}{}{F}}% ]{}{}{F}}]{}{}{E}}]{}{}{D}}% {c\sixfusev[{d\sixfusev[{e\sixfusev[{e\sixfusev[% {f\sixfusev[{f\sixfusev[{f\sixfusev[% {a\sixfusev[{a\sixfusev[{a\sixfusev[{a\sixfusev[% {b\sixfusev[{b\sixfusev[]{}{}{E}}]{}{}{E}}% ]{}{}{D}}]{}{}{D}}]{}{}{D}}]{}{}{D}}% ]{}{}{C}}]{}{}{C}}]{}{}{C}}]{}{}{B}}% ]{}{}{B}}]{}{}{A}}]{}{}{F}}% {e\sixfusev[{f\sixfusev[{a\sixfusev[{a\sixfusev[% {b\sixfusev[{b\sixfusev[{b\sixfusev[% {c\sixfusev[{c\sixfusev[{c\sixfusev[{c\sixfusev[% {d\sixfusev[{d\sixfusev[]{}{}{A}}]{}{}{A}}% ]{}{}{F}}]{}{}{F}}]{}{}{F}}]{}{}{F}}% ]{}{}{E}}]{}{}{E}}]{}{}{E}}]{}{}{D}}% ]{}{}{D}}]{}{}{C}}]{}{}{B}}% ]{}% \] のdisplay環境を使用する。 \end{document} ---------------------------------------- といったように、画像とすべき部分を\Picture+[]{}〜\EndPicture内部で 更にcenter環境で囲まないと、生成される画像が適切でないものになります。 (更にその画像を、画面中央に持ってくるには\Picture+[]{}〜\EndPictureをcenter環境で囲む) (center環境が在るときと無いときで比べてみると良いでしょう)あるいは、 \[ \]のdisplay環境にしてしまう。(但し、Alt属性がかなり変なものになります)この場合 \( \)で囲む方法はうまくいきません(<--単に基準点が何処かという問題の様な気がしますが) 通常は "\[ \]か、\( \)で囲むほうを使用して、生成された*.html、画像ファイル(名称)を編集する" の方法のほうが、従来のTeXの記述のままtex4htに掛ける事が出来るので幾分楽でしょうか。 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 上記での、tex4htパッケージのオプションはそれぞれ jp :日本語対応オプション。どのオプションよりも先に記述しておく。 xhtml :tex4htで処理して出力されるファイルをXHTML対応にするオプション。 "jpオプション以外"のどのオプションよりも先に記述しておく必要があります。 (もしかしたら現在のtex4htでは違うかもしれません。なにぶん私の知識が古い) また、htmlというオプションもあります(HTML ver.4.01以降対応。デフォルト)。 htmlオプションの場合は、更に3.2というHTML ver.3.2対応にするためのオプションも 追加で使用可能になります。 1、2、3、4 :複数の文書をハイパーテキスト形式の階層構造に分割するための簡易オプション。 1、2、3、4でその階層構造の深さを簡易的に指定する。明示的な詳細設定も別の コマンドで可能。 (\TocAt{unit}、\CutAt{unit}等。unitに目的の単位を記述。通常は、section、 bibliography等だが、section*のような*付のためのlikesection等の単位もある) sections+ :tex4htにおいては目次中の項目には参照しているセクションへのハイパージャンプ が作成されるが、このオプションで、それとは逆のタイトルから目次へ後戻りする 補足のリンクが生成される。 他、順送りに全てのページを渡るためのnextというオプションもあります。 これらの、リンクが正確に反映した*.htmlファイルの生成には、今のところ、 book,report,article等の欧文用クラスファイルを使用しなければなりませんし、 chapter_titleやsection_titleを記述しておく必要があります。 (\chapter{}では無く、\chapter{こんな章でんねん}とかする。章番号にはlinkが張られない。) (日本語も処理されますので安心してください) jarticle等のクラスファイルだと、相互リンクの生成などに失敗しますし、 本来のtex4htの*.tex-->*.html変換の"確かさ"からは遠くなります。 (LaTeX2HTMLでは無視される\marginpar迄処理します) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% これらの、特定範囲の画像出力の指定は、存外応用範囲が広かったりします。 色々な画像の描けるxy-picのxy環境に関しては、上記のようなことをしなくても tex4htがxy環境の部分を判断して、画像にしてくれます。(\begin{xy}〜\end{xy}) これは、そのようなことを記述してあるxy.4htファイルが存在するためです。 (ならば、xymtex用の*.4htファイルを作成すればよいのですが、、、。) (微妙に、colortbl、goはサポートしているのにxymtexには対応していないんですね、、、。) 但し、xy-picの\xymmatrix{..xy-picの命令..}の場合は、xymtexの場合と同様に扱わない とうまくいきません。(\[ \]や\( \)、\Picture+[]{}〜\EndPictureで囲む。) 上記で示した様なxymtex(或いはxy-pic)パッケージのような 大規模なパッケージを用いた*.texファイルを(仮に、foo.texとすると) $>ht jlatex foo.tex の様にtexRUNfileとしてjlatex等(別にjlatexに固有の問題ではない)を指定すると、 現行の角藤版W32TeX web2c737のデフォルトの設定では、ほぼ確実に "tex capacity exceeded" のエラーが返される(xy-picパッケージ使用の場合は確実に)と思います。 これを避けるために、$TEXMF/web2c/texmf.cnf ($TEXMF=c:/usr/local/share/texmf等)に以下の記述を私は追加しています。 (角藤先生ありがとうございました。) ----------------------------------------------------------- % Setting for latex and jlatex to be used inconjuction with TeX4ht. extra_mem_top.latex = 100000 extra_mem_top.jlatex = 100000 extra_mem_bot.latex = 100000 extra_mem_bot.jlatex = 100000 hash_extra.latex = 30000 hash_extra.jlatex = 30000 pool_size.latex = 250000 pool_size.jlatex = 250000 ----------------------------------------------------------- もしもの場合に備えてtexmf.cnfのバックアップは取っておいた方が無難です。 (上記の設定の数値は、多分に私の"勘"で決定されています) また、tex4htは \(..数式..\)、\[..数式..\]、eqation環境はどちらの内容も しっかりピクチャとして表現されますが、plain TeXの $..数式..$、$$..数式..$$環境での記述では、簡単な部分の数式は テキスト表示され、それ以外はピクチャという中途半端な処理をされます。 具体的には、\mathcal{}や{\cal }、\S、\timesでこの問題が生じます。 対処方は、$で囲む方法を廃止するか、対応する*.htfファイルを編集して、 "この文字は画像にする"という様にする。具体的には(\timesを画像出力に指定するには) $TEXMF/tex4ht/ht-fonts/iso8859/1/cm/cmsy.htfの中の '\215' '' times 2 と言う行を '\215' '1' times 2 と修正する。二番目のentryはclass numberと呼ばれる数字を指定するところです。 この部分が奇数だと画像を生成します。何も書いてないと0と判断されます。 tex4htのweb siteでは特別な理由が無い限りは0(記述なし)か1を選択しろとなっています。 この方法を推し進めると、一般にハイパーテキストフォントの存在しない文字 (Babel german optionでyfontsを併用したときの一連の文字群やschwell-fontsなど) については、それぞれに対応する、二番目のentryのclass numberが1に指定してある *.htfファイルを作成すれば良いとなります。これは、それぞれのfontsの対応を、 箇条書きした*.htfファイルを作成するだけなので作成は簡単だと思います。 (但し、通常の言語のカーニングやリガチャの処理は惨憺たる有様になりそうですが、、。) 麻雀pie-fonts等はこの方法で対応できるハズです。 また、\usepackege[dvips]{graphicx}を用いて、取り込んだ画像(*.epsファイル)は \includegraphics[width=\linewidth]{picture_file_name.eps} とした場合、tex4htにかけると、生成された*.htmlファイル内では 存外小さい画像になりますので、大きさは、 \includegraphics[width=\linewidth]{picture_file_name.eps} ではなく \includegraphics[width=20cm]{picture_file_name.eps} 等の大きさを明示的に指定にしたほうが良いかもしれません。 数式等の画像は、dvips(k)によるdvi-->ps変換時の解像度等の影響を、 もろに受けるので注意が必要です。 数式中に余りに小さい添え字などがあった場合、解像度しだいでは 掠れてhtml変換時には見難くなると思われます。 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 補足として、Cascading Style Sheetをいじる例を示しておきます。 tex4htで生成された結果を見てそのデザインが気に入らなければ、CSSで編集します。 もともとtex4htはCSSを駆使してTeXのレイアウト情報になるべく近いものを生成しようと するものなので、tex4htを使う際にはCSSをいじるのは"必然"となります。 基本は、\begin{document}の後に\Css{}というcommandで指定します。例として、次のものでは pageのnavigation用の画像を用意し、それを使用するとし、その間隔をCSSで指定しています。 (用意した画像は、"right.gif"、"left.gif"、"up.gif"という名の画像ファイルとします) (通常、tex4htでは、"next","previous"等がページ上部等の文字列にlinkが張られる) --------------------------------------------------------- %% Configuration for crosslinks % crosslink labels \Configure{crosslinks} {} {} {\Picture[next]{right.gif class="arrow"}} {\Picture[previous]{left.gif class="arrow"}} {} {} {} {\Picture[up]{up.gif class="arrow"}} % CSS for crosslink \Css{.arrow{ margin: 0px 30px 0px; border: 0px; }} --------------------------------------------------------- \Configure{}はtex4htの各種設定を変更するときに使用するコマンド。 \HCode{}というコマンドもあり、このコマンドの括弧内に記述したことはそのまま *.htmlファイルに適用される。HTMLタグなどを記述しておけばよい。 他、手作業でlinkを作成する\Linkというコマンドがあり。 yahoo となります。 ¥Linkコマンド中の"~"、"_"、"%"はそれぞれ、\string~、\string_、\%で記述しておきます。 また、タイトルを青色にしたければ、\Css{H2{color:blue}}という風にします。 (\hyperrefパッケージを利用した方が楽かもしれません。) 上記の\Css{CSS-code}といった方法のほかに、実際にCSSファイルへ書き出すには、 次のような環境を(texソース中で)使用出来て、 \CssFile[list-of-files] コンテンツ \EndCssFile 環境の中にCSSのコードを記述する以外に、他のファイル(list-of-files)から読み込めます。 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 最後に、角藤版W32TeX web2c737のtex4ht(オリジナルの配布も)は、デフォルトでは *.htmlファイルの生成過程で(最終的に不要となる)多量の中間ファイルが出来ます。 中間ファイル等は保存しておく必要は無いと言うのであるならば、 $>ht --cleanup jlatex foo.tex の様にcleanupオプションをつけて処理することをすすめます。 また、ht.exe(あるいはそれに類似のもの)使用時のtexRUNfileは一般にlatex、jlatexが 使用されますが、平常時はomega等を使用している方もいると思います。 その場合は、 $>ht [option] omega filename.tex "param1" とすれば、omegaによりタイプセットされたのがtex4htに掛けられます。 omega等を用いてtex4htに掛けた場合は、この場合はこの場合の問題もありますが、、、。 当たり前ですが、マシンのスペックにもよりますがtex4htは画像に変換すべき数式などが 増えれば増える程に、その変換に要する時間が増えていきます。一度変換し終わり、その後、 数式など以外の本文のちょっとしたミスを訂正した後などは画像を生成したくないことが多く なると思います。("画像を生成しない"とするオプションがあったような、、。) (数式の数が三桁に届こうか、と言った所から如実に違いがわかります) ↑変換に丸一日かかる事まであるんです、、、。 TeX4htの情報源として、印刷物としては -------------------------------------- LaTeX Webコンパニオン =TeXとHTML/XMLの統合= Michel Goossens,Sebastian Rahtz(共著) 鷺谷好輝(訳) 株式会社ASCII(発行) ISBN:4-7561-3973-6 を参照してください。(日本語のtex4htの解説としては唯一かもしれません。) 初めては、この書籍を参考にするといいでしょう。 (英語の苦手な方には、とても必要なものかと思います) -------------------------------------------- MS-Windows環境のみですが、Steve Mayerさんが、作成されたGUIなコンヴァートサポータが ここにあります。 (MS-Windowsしか使用したことが無く、マウス操作で全てがやりたい人にはとっつきやすいかもしれません。) LaTeX、TeX4ht、LaTeX2HTML、HeVeA、TtH、DVI、PDFなどが操作できるGUIなソフト(Program)です----------------------------------------------

この書き込みへの返事:

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