ぱくちょう

よみがえれ白鳥

Wz editor 4.0 用(Wz editor 5.0でも動作します) TeX入力用プラグインマクロ pHackTeX 【p白鳥(ぱくちょう)】のページです。

● Download(44KB) [ 2003/5/7  バグ修正他、マニュアルのソースと色分けファイル(約50words, tex.tkw)同梱]

● マニュアル(pdf版2002.12.19)

● マニュアル(dvi版2002.12.19)

LaTeX の入力補助、タイプセット、dviout、BibTeX の起動、さらに Wz の中から dvipdfm を呼び出して、 dvi から作成した pdf ファイルを Acrobat Reader で表示します。

dviファイルからpdfファイルをつくるためには、dvipdfmが必要です。 これも 角藤先生のWebsite から入手できます。 dvipdfmは、pLaTeXの標準インストールになっています。

【p白鳥 is NOT 白鳥 yet】
フリーソフト「p白鳥」は、LaTeXの入力支援とpLaTeXの外部コマンド起動を行うためのWz editor 4.0(以下Wz4、最新版4.00E)のプラグインマクロです。もとになった白鳥(HackTeX)は、広瀬雄二さんが作られたEmacs用の野鳥(YaTeX)を竹中浩さんが Windows 上で動くWz editor に移植されたものですが、Wz4ではマクロが大幅に変更されてしまい、長い間(Wz4が出たのが1998年12月ですから、3年近く)移植されませんでした。その間、Windows上のTeX環境もWinTeXからpLaTeXに変わり、私(水谷)はpLaTeXが起動できるようにもとの白鳥を少し手直してWz1.01で使っていました。今回、3連休を利用してWz4への移植作業に手をつけてみました。竹中さんのソースコードは素晴らしいもので、そのまま使えるところは使っています(パクっています)が、文法が変わったために出るエラーを丹念に潰すのが大変でした。時間的・能力的に全部の機能を移植した完全版にはほど遠い縮小版ですが、さしあたり自分で使うにはなんとか我慢できるレベルにはなったと思います。これをどうにかしてくれる方が出てくることを期待して、開発版を公開しています。

「p白鳥(ぱくちょう)」という名は、白鳥のごく一部(part)しか移植できなかった小さい(petit)白鳥であり、野鳥としては機能が足りない仮の(pseudo)姿であること、pLaTeXに対応していること、Wz4の Plug-in マクロであり、pdfファイルの作成、表示を呼び出せること、竹中さんのコードをいっぱい使わせてもらったことからつけました。pがとれて真の白鳥が蘇るのを祈っています。とはいえ、白鳥(HackTeX)の意味って、Hacker's Assorted Completion Kit for TeX らしいからここは水谷のようなアマチュアじゃなくって、本物の Hacker に餌をもらわないとね。

【インストール】

必要なファイルは、phacktex.txc だけです。
phacktex.txc を Wz4 の Macro ホルダーにコピーし、Wz4 のメニューから

	ツール==>マクロ==>TX-Cの設定==>新規登録

とし、phacktex をプラグインとして使える状態にしてください。
その後、一旦すべてのWz4を閉じてから、*.tex(*.sty)ファイルを
読み込めば使えます。

アンインストールするには phacktex を「TX-Cの設定」で削除してください。
その他の痕跡として、辞書をWzフォルダーの _wzhistu.dat というファイルに
保存しています。完全にアンインストールしたい場合には _wzhistu.dat 内の
phacktex_initialized, phacktex_singlecmd, phacktex_environ, 
phacktex_fontsize, phacktex_section 
という5つのエントリーを消去してください。残っていても悪さはしないと思い
ます。他にユーザヒストリー機能を使っていないようでしたら、 _wzhistu.dat 
ごと消してしまえば簡単でしょう。
Permanent 変数を使っていますので、マクロのホルダーに phacktex.cfg という
ファイルができます。phacktex をアンイン
ストールするときは削除してください。(白鳥あとを濁さず)

この他にはインストール、アンインストールによって設定を変えることはありません。

*** 注意 ***
p白鳥のバージョンアップは基本的にマクロの変更と同じ手順でできます。

新しいphacktex.txc を Wz4 の Macro ホルダーにコピーし、Wz4 で phacktex.txc 
を開いてください。その状態でメニューから

	ツール==>マクロ==>コンパイル

とし、 コンパイルが成功すると新しい phacktex がインストールされます。
その時、警告がでると思いますが、一旦すべてのWz4を閉じてから、
*.tex(*.sty)ファイルを読み込めば使えるようになります。

エラーが出た場合、

	ツール==>マクロ==>TX-Cの設定

でプラグインの状態をチェックしてください。コンパイルに成功しても
一度エラーになると状態が「エラー」となっていることがあります。
その場合は状態ボタンを押して、OKを選び、Wz4を閉じてファイルを読み
直します。

【できること】

・ コマンド起動(platex, jbibitex, mendex, dviout, dvipdfm, Acrobat Reader, ispell)
・ begin 型補完
・ end 補完
・ large 型補完
・ section 型補完
・ maketitle 型補完
・ アクセント補完
・ 環境名などの変更(^T+c)
・ 対応するラベル、ファイルへのジャンプ(^T+g)
・ 親ファイルへのジャンプ(^T+^)
・ (),{},[],$$ 入力(範囲選択にも対応)
・ 選択範囲のコメント化とコメントアウト
・ コマンド、環境、対応するカッコの削除(^T+k または^T+K)
・ 履歴(ヒストリ)機能
・ 学習機能
・ %#!コマンドの実行(%FNをファイル名に置換)
・ logbuffer 
・ 領域タイプセット
・ ソーススペシャル(^T+G)
・ イメージ補完
・ 勝手にincludeonly


*** 注意 ***
Key_Prefixにはデフォルトで"^T"を割り当てていますが、これは
YaTeXの標準の"^C"は、Windowsではコピーに使われるためです。

Prefix Key、外部アプリケーションは ^T+T+O で開く設定ダイアログから
変更してください。Prefix Key の変更後は、一旦すべてのWz4を閉じてから、
*.tex(*.sty)ファイルを読み込めば更新されます。


【想定しているTeX環境】

Windows9X上で開発しています。
Windows2000、XPでも動作確認しています。 また、Wz4だけでなくWz5でも問題なく動作します。(2006.10.11)

DOS窓のコマンドラインで pLaTeX、jBibTeX などが使えること。 dviファイルにdviout*が関連づけされていること。 dvipdfm が使えると、Wz上からpdfファイルを作製できます。 pdfファイルにAcrobatReaderなどが関連づけされていれば、 作製したpdfファイルを見ることもできます。 最近はTeX文書をpdf化するためにコンソールに移動するのが 面倒になってきたので、Typesetメニューに組み込みました。

*) dviout は、下のURLより入手できます。
http://akagi.ms.u-tokyo.ac.jp/dviout.html

section型補完が何か判らない時は、 野鳥 YaTeXのマニュアルが参考になるでしょう。 (p白鳥では、マニュアルとおりの動作はいたしませんが。)

『白鳥』は野鳥プロジェクトの Wz 版です。 野鳥の本家、“野鳥の会”はこちらです。
yatex.gif

『白鳥』の説明やヘルプも含めたオリジナルもこちらからダウンロードしてください。

メモ1:
科研費マクロを使う場合、src.texの最初の行に
%#! %NOPFN
と書いて下さい。「おまえには親ファイルはない」という意味です。
これで\begin{document}がなくても親ファイルを探しに行くのを止めます。 (2003.10.8)

ispellの設定
角籐先生のページに書かれているように、コマンドプロンプトのプロパティ→レイアウトでバッファのサイズとウインドウのサイズを同じにすればよいようです。 これはスタートメニューにあるコマンドプロンプトのショートカットのプロパティで変えます。

【\include での path 指定】
\include で指定するファイルは親と同じ同じディレクトリに入れておくのがわかりやすくてよいのですが、マクロを作る側としては、ディレクトリが違っていてもちゃんと動作するようにしたつもりです。ただ、platexの動作でわからないところがあって、困っています。
例えば、

oya1.tex----jan/oya2.tex   … (a)
          |-jan/kiroku.tex … (b)
          |-feb/kiroku.tex … (c)
          |-mar/kiroku.tex … (d)

というディレクトリ構造で、oya1.tex が (b), (c) を include するとき、

\include{./jan/kiroku}
\include{./feb/kiroku}

と書けばよい。
(.tex の拡張子をつけるとplatexではincludeonlyしてくれないようだ。)
ところが、(a) の oya2.tex から、(b), (c) を include する場合、

\include{./kiroku}
\include{../feb/kiroku}

と書くと、(c) のコンパイルで
../feb/kiroku.aux が書き込めないと文句が出ます。


この問題については、fj.comp.texhax で質問したところ、
角籐先生から教えていただきました。
texmf.cnf 内でデフォルトでは、

openout_any = p

になっているところを

openout_any = a

とすると、どこのファイルにも書き込めるようようになります。
(デフォルト設定はセキュリティなどを考慮して決められていると思います。)



oya2.tex (a) で
…
\includeonly{./kiroku}
…
\begin{document}
…
\include{kiroku}
…
では、(b) の kiroku.tex を読み込んでくれない

\includeonly{kiroku}
\include{kiroku}

あるいは

\includeonly{./kiroku}
\include{./kiroku}

と相対path指定まで含めて同じに書かなければならないようです。
(パターンマッチで動いているだけで、中身がpathを含めて同一のファイル
かを判断していない)。
p白鳥の「勝手にincludeonly」機能では、ファイルの同一性はpathを含めて判断しますが、
\includeonly には \include の中身をそのままコピーすることにしております。

【 コマンド、環境、対応するカッコの削除】
^T+k ではコマンド、環境、カッコだけが削除され、 ^T+K (大文字)とするとその中身まで削除します。(12/30) 削除したあと画面が移動するのがうっとうしいですね。 なんとかしなくちゃ。
ついでに(というか、水谷にとっては便利なので) figureとminipage環境の時に、自動で[htbp]とか[100mm}が 入りますが、もし不要でしたら

509	if ( env=="figure") txInsertf(text,"[htbp]");
510	if ( env=="minipage") txInsertf(text,"{100mm}");
を消すかコメントアウトしてください。 もっといろいろ付け加えたい人は、上の部分に追加して下さい。

【pdf作成に関する注意】
pdfファイルをAcrobat Readerで表示している状態で、dvipdfmで 表示しているのと同じファイル名のpdfファイルは作れません。 そういえばDistillerでもそうなっていますね。 dvipdfmを起動する前に、更新しようとしているpdfファイルを閉じておく必要があります。 これを解決するにはAcrobat ReaderをDDE制御。全部の文書を閉める[CloseAllDocs()]を dvipdfmの前に呼び出すことにして、一応解決。 本当は更新する文書だけを閉じるのがスマートなんですけどねえ、、、(10/12)

【Wz4標準ファイラーに関する注意==>高速ファイルオープンの問題】
Wz4の標準ファイラーから起動すると、do_command の後でファイラー画面がアクティブになってしまう 不具合ですが、Wz4の掲示板(ユーザ広場3)の記事を参考にして、Wz4のメニューから

表示 ==> オプション ==> ファイルを開く動作
を高速から標準に戻したら不具合は出なくなりました。(10/17)

それでも、ちょっと使った感じでは、Wz4の標準ファイラーは使い勝手が悪いですね。 私はWz1のファイラーを復活させました。こちらはほぼVzクローンで全てキーボードで操作できるし、 mspellを起動したりできるのです。 Wz4のスペルチェック機能は、\つき単語の除外オプションがないので使いづらいです。 これはユーザからの要望に載っていましたのでそのうち改善されることを期待します。(10/13)

「ちょっと使った」だけでは見つからなかったのですが、Wz4のファイラーから“F”キーを押すとメニュー が表示されて、コピー“C”、移動“M”、削除“D”がキーボード操作でできました。 これで不満は解消です。 ファイル名をコピーする機能(編集メニュー)が便利なので乗り換えようと思います。
それから、Wz4本体のアウトライン機能もよいですね。 拡張子TEXの設定で見出しに\section, \subsection, \subsubsection, \begin{figure}を指定しておくと アウトラインウインドウからジャンプできて非常に編集し易くなります。(2002/1/30)

ご意見、ご要望などありましたら、水谷までお知らせ下さい。
E-mail: W.Mizutani@aist.go.jp


pLaTeX を HackTex on Wz 1.01 で使う

Windows で LaTeX 文書を書くのにとっても便利な 『白鳥』HackTex ですが、竹中浩さんの作られた ver.0.38 は、 pLaTeX (角藤版)に対応していませんので、応急手当として 以下のような修正を行いました。

(1) コンソールは常に開くことにして、LOG ファイルの表示をオプションにしました。
エラーメッセージなどはコンソールに表示されます。 LOG ファイルは UNIX 形式なので WZ で開くときに確認ダイアログが出ます。 これをスキップできればよいのですが、、、

(2) sync_exec を bibtex で使うと、pLaTeX が起動しなくなるなどの不具合がありました。
bibtex, makeindex は、exec 関数で呼び出すことにしました。

(3) QuickView の不具合。sync_execの待ち方を修正。

(4) dviout を起動するとき、dvi ファイルのディレクトリが変わると対応できない。
path つきでファイル名を渡すように改造。

以上、修正したファイルをここに置いておきます。 これをダウンロード、解凍して \wz\usr に放り込めば動くはずです。

Download

【ONE POINT】
Windows ユーザは、^C(コントロール-C)は copy として使っていますので、デフォルトのプリフィックス・キーのままでは白鳥を入れたとたんcopyが効かなくなった、と戸惑うかもしれません。最初に^C+T+Oで白鳥メニューを開いて、好みのキーに変更しましょう。

もちろん、autoexec.txc は編集しておく必要があります。 HackTex の作者、竹中浩さんによる説明を引用しておきます。


  [3.2] autoexec.txc の編集

    Wz1.0 で白鳥を使う場合には wz\ にある autoexec.txc を編集します。

    ちなみに autoexec.txc を中途半端に編集した状態で保存すると、たぶん
    Wz でファイルを開く際にエラーが出ますので注意しましょう。とりあえず、
    このドキュメントと autoexec.txc は開いた状態で作業を始め、終わったら
    autoexec.txc を保存して、でも閉じないで、まず適当なファイルを開いて
    みてエラーが出ないかどうか確認すると良いです。

    まず、

	void __txopen(tx *text)
	{
	     :
	     :
	}

    という部分を探し、

	void __txopen(tx *text)
	{
	     :
	     :
	   load_hacktex(&text);
	}

    と、「load_hacktex(&text);」を書き加えます。

	さらに上記の __txopen(tx *text) より前の部分に、

	extern "hacktex" {
	  void load_hacktex(tx **);
	}

    の 3 行を適当に挿入してください。「適当にって言われても本当にどこ
    でもいいのかあ?」と思ったあなた。いい質問です。そういう人はファイル
    の一番先頭に挿入しておくのが無難でしょう。


Wz ver.3.0 でも動いた!
私はWzの新しいバージョンを使っていないのですが、fj.comp.texhax でお知らせしたところ、早稲田大学の Kiyono さんからWz ver.3.0 でも動いたという嬉しい情報を頂きました。オリジナルの白鳥をインストールした上で,再度この pLaTeX 対応版のマクロを上書き(?)の形でインストールしたらうまくいっているようです。原因はよくわかりませんが、Kiyono さんはhackloadというマクロをインストールしておかないと,初期設定等が保存されないようだと推察されています。

Wz ver.2からは autoexec.txc を編集するのではなく、メニューから白鳥を設定します。詳しくはオリジナルの説明書をお読みください。

また、私が手を入れた白鳥は、ver.1.01でも動くように関数を書き換えた部分があります。ver.2 以上でお使いの方は、元に戻した方がよいかもしれません。書き換えた部分は、この下に説明しておきます。

インプレスのWinTeXをご使用の方へ

『白鳥』HackTex 0.38 を Wz 1.01 で使うには、そのままでは 不具合がありましたので、応急手当として以下の修正を行います。

(1) hacktex.c の中で、callPost 関数が使えない。二カ所。

//callPost("hacktex.mathimage");// この行をコメントアウト
getch();//もともとコメントになっていたが復活させておく
do_image(math_sign_dic);//動作は未確認
…
//callPost("hacktex.greekimage"); // 
getch();
do_image(greek_sign_dic);

(2) hcktxprc.c で、<windows.h> が使えない。"wintx.h" に置き換える。

//#include <windows.h>
#include "wintx.h" // W.M.

(3) 同じく hcktxprc.c で、wait() を sleep() に置き換える。二カ所。

else sleep(100);// sleep is used instead of wait() 

面倒だと思う人は、これをダウンロードして解凍して \wz\usr に放り込めば動くはずです。

Download

瀕死の『白鳥』に愛の手を
『白鳥』の作者、竹中さんがしばらくは作業できないと言うことで、WZ の最新版への移植などされていません。私は WZ1.01 を使っていますが、2000年問題でファイラーの日付がおかしい他は特に問題はなく Windows98SE でも使えています。mule+YaTeX への移行も考えましたが、やはり設定がたいへんで敷居は高いです。WZ1+『白鳥』ならば、圧縮すればフロッピー一枚に収まる軽さ、しかもコピーするだけですぐ動く。今回、最新の pTeX を使えるように手直ししましたが、WZ の最新版を使っているかたで、移植しようと言う声が出てくると嬉しいです。WZ の新しいバージョンを持っている方は、Village Center からWZ1.01が入手できるでしょうか。できれば、古い版の WZ(1.01) がフリーウエアになってくれることを希望します。そうなれば、TeX 入力用エディタとして広く使われるようになることでしょう。

Wataru Mizutani, 2001.11.10
E-mail: W.Mizutani@aist.go.jp
[Return]