祝鳥

秀丸エディタ上にLaTeXの統合環境を実現するマクロです.

インストール

動作環境

秀丸エディタ 64bit version 9.19以上で動きます.TeX環境はTeX Liveを基本的に想定しています.

インストール

秀丸エディタのインストールを済ましておきます. 64bit版をインストールしてください. また,TeX環境(TeX Liveがおすすめ)が当然必要です. 現在主流となっているPDFベースの編集を行う場合にはSumatraPDFをインストールしておきます.

秀丸に不慣れな人

まずはマクロフォルダを設定します.秀丸を起動後,まずはその他(O) → 動作環境(E) → 環境と進み,「マクロフォルダ用のフォルダ」にあるフォルダを確認してください.これがマクロを格納するためのフォルダ「マクロフォルダ」です.もし空欄だった場合は,「C:\Users<ユーザ名>\Documents\Hidemaru\macros」などのような適当な値を入れておくとよいでしょう.

ダウンロードした祝鳥を解凍し,上で確認したマクロフォルダの中にコピーします.マクロフォルダ以下にfortex.macというファイルが存在するようにします.秀丸のメニューからその他(O)→キー割り当て(K)→読み込み(R)を選び,参照を選んでマクロフォルダ以下のfortexフォルダ内にあるfortex.keyを選んだ後「OK」を押してください.マクロが秀丸に登録されます.

この操作は,現在のキー割り当てを無視してfortex.keyに登録されているキー割り当てを設定するものです.従って,既にキー割り当て等がされていた場合,そのキー割り当て等を破壊します.例えばデフォルトではAlt + Enterに単語補完が割り当てられていますが,これは上書きされます.それが嫌な人は,fortex.keyを用いず自分で設定してください.

登録されたら祝鳥のインストールを行います.秀丸を開き拡張子が.texとなるファイルを作成し,「Control + t」を押してください.初回起動の場合簡易インストーラが起動します.基本的には「はい」を押し続ければ問題なく終了されるはずです.

秀丸の設定になれている人

ファイルをダウンロードし,ディレクトリ構造を保ったまま展開します.マクロを適当に割り当てます.このヘルプでは,次のような割り当てを想定しています.

登録が完了したらいったんfortex.macを起動してください.初回起動時には簡単なインストールウィザードが開きます.指示に従っていけばインストールがされるはずです.

アンインストール

fortex.mac → タイプセット → 設定 → 初期化等 → アンインストールからアンインストールを行ってください.この後,登録等を削除し,ファイルを全て削除してください.

アップグレード

ファイルを全て上書きした後,fortex.macを起動してください.アップグレードが必要と判断した場合,アップグレード用のマクロを自動実行します.fortex.mac → タイプセット → 設定 → 初期化等 → アップグレードで意図的にアップグレードさせることも可能です.

使い方

使ってみよう

ともかく使ってみましょう.たとえば次のようなソースを入力してみます.なお「秀丸に不慣れな人」のインストール方法に従ったか,推奨するキー設定を全てしていることを仮定します.

\documentclass[11pt,a4paper]{jsarticle}
\usepackage{amsmath}
\pagestyle{empty}
\begin{document}
\section{最初の祝鳥}
初めての祝鳥です.
\begin{flushright}
右寄せ
\end{flushright}
\end{document}

秀丸を開き,適当な名前(たとえばsample.tex)で保存します.保存したら,まずはControl + spaceを押してみましょう.祝鳥の補完マクロが起動し,「」が挿入されてリストボックスによる補完が始まります.そのままdocと打つと,目的の\documentclassがリストボックス内に現れます.

補完ボックス

Enterを押してみましょう.\documentclass[]{}が挿入され,クラスファイルの補完が始まります.更にjsくらいまで打てば,jsarticleが現れるでしょうから,ここでEnterを押しましょう.オプションの補完に移ります.

オプションの補完

11くらいまで打ち「11pt」をリストボックスに出したらば,またEnterを押します.11ptまで挿入され,次のオプションが補完できる状態になります.

オプションの補完続き

さらにa4くらいまで打ったらEnterで確定させましょう.するとさらに次のオプション待ち状態になります.

オプションの補完さらに続き

これ以上のオプションの入力はありませんので,そのまままたEnterを押します.自動挿入されたカンマが消え,\documentclassの補完が終了します.

補完の完了

これで一行目が入力し終わりました.二行目も同じ要領で\usepackage[]{amsmath}まで入力します.デフォルトではamsmathにオプションが設定されていないので,[]は自動で削除されます.やはり同様に\pagestyleを入れます.

\begin{document}の補完にもやはりControl + spaceにより始まる補完マクロが使えますが,\beginを挿入するためのbegin型補完もあります.Control + tと押した後,Controlキーから手を離してbとdを続けて押すと,\begin{document}と\end{document}が挿入され,間にカーソルが移動します.

begin補完

\sectionのような引数をとる命令の入力には\section型補完を使うこともできます.Control + tと押した後,やはりControlキーから手を離してs sと二度sを押すと,ダイアログが現れます.

section型補完

ここに「最初の祝鳥」と入れEnterを押すと,\section{最初の祝鳥}が挿入されます.flushright環境の挿入も同様にbegin型補完が良いでしょう.今度はControl + tの後,b rとします.

入力が終わったらコンパイルし結果を表示してみましょう.Control + tの後t pとすると,コンパイルが開始され,(入力にミスがなければ)結果が表示されます.

なお,上で何度となく入力したContorl + tが祝鳥の起動キーになります.単体で押すとメニューが表示されます.

祝鳥メニュー

祝鳥の機能がもっとあることがわかると思います.各々の機能の使い方は該当項目を参考にしてください.

begin型補完の部分に(B)とありますが,これはメニュー表示時にbを押すことで選択が可能であることを意味します.(Windowsの標準動作です.)これを使って,上ではControl + t, bによりbegin型補完を起動しました.その後のdはbegin型補完の定めるショートカットです.

入力中の文字補完

リストボックスによる補完を行います.現在の状況に応じた候補が表示されます.たとえば

などです.Visual Studioのインテリセンスのような機能です.秀丸にある単語補完機能に似ていますが,利用方法はわりと違い,次の通りとなります.

種々の補完

特定の形をしたコマンドの入力を行うための機能です.細かい使い方は機能に応じて異なりますが,大きくは次のような使い方になります.

\begin型補完

\begin{***}と\end{***}で囲まれる環境の補完を行います.以下のキーを押すと対応する環境の挿入が行われます.

\beginや\endにカーソルをおいて補完を開始した場合は,そこにある環境名の書き換えを行います.

\section型補完

\section{***}のように一つの引数を必要とするコマンドの入力を行います.キーとコマンド名の対応は以下の通りです.

\large型補完

{\large ***}のようなコマンドの補完を行います.キーでの入力はありません.表示された補完ダイアログに従い入力を行ってください.

アクセント補完

アクセント用コマンドの入力を行います.メニューから選んでください.ショートカットキーでの入力も可能で,上から1,2,3,…となっています.ダイアログでの入力はありません.

ギリシャ文字補完

ギリシャ文字の入力を行います.ダイアログでの入力はありません.?を押すとヘルプが見られます.

イメージ補完

「イメージ」に基づいた入力を行うことができます.たとえば->は右矢印のイメージなので,\rightarrowが挿入されます.実際にどの入力がどのように変換されるかは,起動後?を押すことで出てくるヘルプを参照してください.ダイアログでの入力はありません.

タイプセット

タイプセット(コンパイル)を行います.大体次のようなメニューになっているはずです.(環境により少し変わる可能性があります.)

親ファイルはデフォルトでは自動で推定されます.メニューや細かい動作はカスタマイズ可能です.

%#記法

ソース中に%#から始まる行を入れることで,祝鳥のタイプセットシステムへの指示を与えることができます.

%#!

%#! <コマンドライン>とすることで実行するコマンドラインを直接指定します.複数のコマンドラインを実行する場合には「;」で区切って並べます.次のような機能が利用可能です.

%#main

メインファイルを指定します. 解釈が実際に行われるかどうかは親ファイルでの設定に依存します.

その他の補助機能

その他次のような機能があります.

対応するものへの移動

以下の対応に従い移動します:\begin{???}⇔\end{???},\label⇔\ref等,\bibitem⇔\cite等,\input,\include⇒ファイルを開く,\usepackage⇒スタイルファイルを開く,\bibliography⇒文献データベースファイルを開く,\bibliographystyle⇒文献スタイルファイル,\documentclass⇒クラスファイルを開く.

コメント操作

%で始まるコメントの操作を行います.メニューに従ってください.

BibTeXデータベース検索

\bibliographyで読み込まれている文献データベースからの検索を行いソースファイルに\cite命令を埋め込みます.データベース内のエントリーキーを覚えていなくてもBibTeXを使うことができます.利用法は次の通りです.

  1. マクロを実行し,現れた検索ダイアログに条件を入力する.(タイトルと著者から検索がされます.)空文字で検索をすると,全て表示する
  2. 現れた一覧から,挿入したい文献を選択する.十分に候補が絞り込めていない場合は,検索 (F) を押し更に検索する.

なお,履歴や各種オプションは秀丸とは別に管理されてますが,曖昧検索の設定のみ秀丸と情報を共有します.

原稿の入力が終わり,他の人にソースファイルを送らないとならない場合は,\bibliographyまたは\bibliographystyle上でマクロを実行してください.生成されたthebibliography環境が挿入され,\bibliography及び\bibliographystyleをすべてコメントアウトされ,.bibファイル無しでのコンパイルが可能となります.

マニュアルを開く

祝鳥のマニュアル(この文書)およびTeXシステムに付随するマニュアルを開きます.後者を使う時にはさらに読みたいマニュアルに関連すること(使い方を知りたいパッケージの名前など)を入力してください.texdocを使いマニュアルを探します.

お手伝いさん

その他細かな機能を提供します.

INIファイル編集

お手伝いさんの中にある機能の一つです. 祝鳥の設定ファイルを開きます.祝鳥の設定のほとんどはこのINIファイルを編集することで行います. なお,この中にはシステムにより生成,利用されるだけのファイルもあります. そのようなファイルを編集するとうまく動かない可能性があるので注意してください.

辞書ファイル編集

お手伝いさんの中にある機能の一つです. 祝鳥が各種の補完の際に使う辞書ファイルの編集などを行います.次のファイルは特別な意味を持ちます.

また,入力中の補完で使われることもあります.

タイプセットの設定

タイプセットメニューの「タイプセットの設定」からタイプセットに関する設定の変更が行えます.なお,このメニュー自身をカスタマイズすることもできます.***をご覧ください.

以下の項目は環境により若干異なることがあります.

TeXToPDF

LaTeXソースファイルをPDFに変換するための設定です.

TeXソースの処理

LaTeXソースファイルをどのように処理するかの設定を行います.

プログラム

実際に実行するプログラムを指定します.自分で指定するか,祝鳥に推定させます.自分で指定する場合は「platex」のようにプログラム名を入力してください.

推定するといっても,実際にはドキュメントクラスとオプションに結びつけられたプログラムを起動しているだけです.この対応は「推定ルールの編集」を選ぶことで行えます.推定ルールはINI形式で記述されています.[Format]セクションに記述をしてください.たとえば次のように設定すると,\documentclass{jsarticle}とするとplatexが,\documentclass[uplatex]{jsarticle}とするとuplatexが選ばれます.

[Format]
jsarticle=platex
jsarticle/uplatex=uplatex
複数コンパイルの指定

LaTeXは相互参照の解決などのために複数回のコンパイルが必要だったり,途中でBibTeXをかけたりする必要がありますが,それを祝鳥が自動的に行うかの設定を行います.推測を有効にする場合には,最大コンパイル回数を指定してください.0以下の数字は無限大を意味しますが,推奨しません.

ソースとの同期

ソースとプレビュー画面の間で相互に参照を行う方法を指定します.ここではTeXソースのコンパイルのみの指定で,実際に行うにはプレビュー側の設定も必要です.PDFを利用する場合はSyncTeXを,DVIベースで作業をする場合はsourcespecialsを使うことになるでしょう.

オプション

さらに追加でプログラムに渡すオプションを指定します.

BibTeXの設定

BibTeX用に動かすプログラムの設定が行えます.実際に起動するプログラムおよびそれに渡すオプションを指定できます.

Makeindexの設定

Makeindex用に動かすプログラムの設定が行えます.BibTeXの設定とほぼ同様です.

DVI→PDF

DVIからPDFへの変換に関する設定を行います.上のTeXソースの処理に従いタイプセットを行った結果DVIが生成された場合にこの設定に従いPDFへの変換が行われます. プログラム名の設定とオプションの指定を行います.

pdflatex

pdflatexによりPDFへの変換を行うための設定です.中身はTeXToPDF内のTeXソースの処理と同じです.(特にコンパイル用のプログラムが変更できるので,ここをpdflatexから変えると名前がpdflatexであるにも関わらず別のプログラムによるコンパイルが行われるということになります.)

Latexmk

Latexmkとは,複数回のコンパイルやBibTeXによるコンパイルなどを推定しつつコンパイルを行うプログラムです.祝鳥はこれを呼び出す機能を持っています.その設定を行います.TeXソースの処理DVI→PDFTeXToPDFと同じです.

出力形式

最終的な出力ファイルの形式を指定します.「TeXソース処理の設定に従う」を選ぶと,「TeXソースの処理」において指定されたプログラムに応じてDVIかPDFであるかを判断します.「PDF(必要ならばDVIを経由する)」を選ぶと,「TeXソースの処理」において指定されたプログラムがDVIを出力すると判断した場合にはさらにDVI→PDFで指定されたプログラムを使いPDFの生成を試みます.その他の設定は設定名にある通りです.「TeXソースの処理」において指定されたプログラムが期待するファイルを出力しなかった場合は失敗します.

プレビュー

Latexmkのプレビュー機能を使うかを指定します.デフォルトの設定ではここをオフとし,祝鳥のプレビュー機能を使うようにしています.

実行結果出力

Latexmkの実行結果の出力先を指定します.なお,Latexmkによるファイルの監視を行う場合の出力先はこの設定とは独立に必ず別コンソールに出力されるようになっています.ただしエラーについてはアウトプット枠に出力されます.

SumatraPDF

PDFプレビューアであるSumatraPDFの設定です.

SumatraPDFのパス

プログラム本体へのパスを設定します.多くの場合は祝鳥の初期設定時に設定が行われます.

起動方法

起動時にどうするかです.

ウィンドウサイズ

起動時のSumatraPDFのウィンドウサイズです.何もしない場合はSumatraPDFに任せます(普通に起動したときと同様).最大化したり,固定したサイズにしたりすることもできます.

SyncTeX

ソースファイルとPDFプレビューアの同期を可能にするSyncTeXを使うかです.これを使うためにはソースとの同期の設定でSyncTeXを選んでおく必要があります.「使う(プレビュー時にジャンプ)」は祝鳥からプレビューを行った場合に現在ソース位置に対応するPDF内の位置にジャンプします.単に「使う」を選ぶと,対応するソース位置へのジャンプへの準備を行います.実際のジャンプはお手伝いさん内の「今の行に対応する場所に移動」を使うことで行うことができます.

一時フォルダに保存してそちらを開く

出力されたファイルを別フォルダに移動し,SumatraPDFではそちらを開きます.これは次のような悩みに対処するためです:pdflatexを使い編集していて,現在10ページ目を編集中とします.ここで5ページ目に挿入したいものができたとし,編集を行ったがコンパイルが通らなかったとします.この場合pdflatexはエラーが起こった場所である5ページ目までのPDFファイルを出力しますが,このとき開いていたPDFのページも5ページに戻り,エラーを直した後に10ページのPDFファイルが生成されてもSumatraPDFで開かれているぺージが10ページに戻ることはありません.この機能を有効にするとエラーが起こらなかった時のみ表示されるファイルが更新されるので,このような場合でも10ページが開かれたままになります.

DVIOUT

DVIプレビューアであるdvioutの設定です.SumatraPDFと共通する設定も多くあります.

dvioutのパス

プログラム本体へのパスを設定します.多くの場合は祝鳥の初期設定時に設定が行われます.

起動方法

起動時にどうするかです.

ウィンドウサイズ

起動時のdvioutのウィンドウサイズです.

sourcespecials

プレビュー時にsourcespecialsを使い現在のソースの位置に対応する場所にジャンプするか設定します.ソースとの同期の設定でsourcespecialsが機能するようにしておく必要があります.なおここの設定によらずお手伝いさん内の「今の行に対応する場所に移動」からジャンプすることは可能です.

dviout本体のsrcの設定

sourcespecialsを使うにはdvioutにそれ用の設定をしておく必要があります.祝鳥のインストール時にも行われますが,うまくいかない場合はここから再登録することができます.逆に設定を削除することもできます.

Adobe

Acrobat Readerなどを操作できます.パスはやはり祝鳥の初期設定時に設定されることが多いかと思います.操作タイプはとりあえずDDEにしておけば大丈夫です.実はOLEは長いこと作者の手元に環境がなく,動くかチェックできていないため,動かないかもしれません.

その他の設定

親ファイル

タイプセット時にどのファイルを親ファイルと見なすかを決定します.以下を優先順位付きで設定することができ,最初に見つかったものに対してタイプセットを行います.

ログファイル

お手伝いさんの「ログファイルを開く」を選んだときに出てくる内容を指定します.

コマンド実行中の環境変数

祝鳥からタイプセットなどを行うときにのみ有効な環境変数を指定します.例えばPATHにC:\mytex\binというパスを加えたければ次のように指定します.

PATH=C:\mytex\bin;%PATH%

中間ファイルと認識されるファイルを設定

お手伝いさんにある中間ファイル削除を選んだときに削除されるファイルを指定します.ワイルドカードで指定します.または,%#記法でも使える置換文字列を使います.

コンパイル用ダイアログの設定

コンパイル時に表示されるウィンドウのサイズと位置を設定します.位置は左上の座標を,(x座標);(y座標)とて,サイズは(幅):(高さ)として設定します.四則演算(+,-,*,/,*はかけ算)とmax/min関数からなる数式が利用可能で,さらに変数として以下が利用可能です.

初期化など

初期化やアップグレード,アンインストールを行います.

タイプセットメニューの設定

タイプセットを選んだときに出てくるメニューはカスタマイズが可能です.この設定は,typset.iniに直接書き込みます.INIファイル編集からファイルを開いてください.次の手順で行います.

  1. 祝鳥に含まれているパッケージコマンドとして登録する
  2. コマンドを組み合わせてメニュー項目を作る.

例えばデフォルトの「PDFに変換して表示」というメニューは,TeXからPDFへの変換を担当するTeXToPDFコマンドと,SumatraPDFによるプレビューを行うSumatraPDFコマンドの組み合わせでできています.そしてそれらのコマンドはそれぞれtextopdfパッケージとsumatraパッケージを呼び出すように設定されています.

パッケージ

祝鳥の「パッケージ」とは,タイプセットなどに関する一連の動作をまとめたものです.祝鳥には次のパッケージが入っています.

コマンド

パッケージを使うには,一度それを「コマンド」として登録して名前をつける必要があります.この登録はtypset.iniの「command<数字>」セクションに書き込むことで行います.例えばデフォルトでは以下のように書かれているかと思います(環境によって異なることがあります).

[command1]
name=TeXToPDF
package=textopdf
[command2]
name=pdflatex
package=textodvi
[command3]
name=Latexmk
package=latexmk
[command4]
name=SumatraPDF
package=sumatra
[command5]
name=DVIOUT
package=dviout
[command6]
name=Adobe
package=adobe

六つのコマンドが登録されていることがわかるかと思います.例えば一つ目のコマンドはtextopdfパッケージをTeXToPDFという名前のコマンドに登録しています.番号は1から始まり,連番である必要があります.上の例では行われていませんが,複数のコマンドに同じパッケージを登録することもできます.

コマンドの登録が行われると,タイプセットの設定にコマンドの設定が登場します.この設定メニュー自身もパッケージの機能です.設定はコマンドごとに保存されます.従って,複数のコマンドが同じパッケージを指していたとしても設定は独立に保存されます.

メニュー

コマンドをあわせてメニューを構築します.typset.iniの「menu<数字>」セクションに設定します.デフォルトでは次のようになっています.

[menu1]
title=タイプセット
shortcut=T
action=$(C:TeXToPDF);
[menu2]
title=PDFに変換して表示
shortcut=P
action=$(C:TeXToPDF); $(C:SumatraPDF);
[menu3]
title=pdflatexでPDFに変換して表示
action=$(C:pdflatex); $(C:SumatraPDF);
[menu4]
title=BibTeX
action=$(C:TeXToDVI:todo=bibtex);
[menu5]
title=Makeindex
action=$(C:TeXToDVI:todo=makeindex);
[menu6]
title=Latexmkでファイルを監視
action=$(C:Latexmk); $(C:Latexmk:todo=watch;error=output,mark); $(C:SumatraPDF);

titleキーにメニュー名を,ショートカットキーを設定したい場合はshortcutキーに指定します.実際の動作はactionキーに指定します.上にあるように,$(C:<コマンド名>)を並べることでメニューの動作を決めます.区切りは;です.実はここは通常のコマンドを与えることも可能で,さらに%#記法で使える置換文字列も利用可能です.もっというと,ここのaction部分の解釈と,%#!で与えられた文字列は全く同じように解釈されます.従って$(M:<メニュー名>)のように他のメニューを実行することもできます.

いろいろな設定

その他の設定も特定のINIファイルに記述します.INIファイル編集から開いてください.

メインメニュー

祝鳥を起動すると現れるメニューの設定を行います.設定ファイルはset.iniです.次がサンプルです.

[Menu]
Menu1=begin型(&B)
Macro1=%c\fortex\sub\btex.mac
Menu2=お手伝いさん(&U)
Menu2_1=中間ファイル削除(&D)
Macro13_1=%c\fortex\sub\clean.mac

全ての設定はMenuセクションに書かれます.キーは,順番にMenu1,Menu2,..となります.メニューが選ばれると,設定されたマクロが実行されます.Menu1が選ばれた時に実行されるマクロはMacro1に指定します.次の文字は自動的に置換が行われます.

メニューは階層構造をもつことができます.上の例のように,Menu2以下に更にメニューを持たせたい場合は,Macro2を設定せず,Menu2_1,Menu2_2およびMacro2_1,Macro2_2と順番に設定して行きます.三段以上の階層を持つ場合も同様です.

補完

Ctrl + spaceにより起動する補完マクロの設定です.htex.iniに記述します. まずは簡単な例として,\usepackageの補完設定を作ってみます.\usepackageは\usepackage[option]{パッケージ名}という書式なので,それをformatで指定します.補完をきかせたい場所を,補完させたい順番に$1,$2で置き換えていきます.今の場合はオプションより先にパッケージ名を入力する方が良いでしょう.(オプションはパッケージに依存するため.)

[\usepackage]
format=[$2]{$1}$0

$0は補完位置を表すのではなく,補完が終了した後にカーソルが移動する先を表します.これで良いのですが,[$2]はオプションなので,それを明示するために,この部分を次のように書き換えます.

[\usepackage]
format=$2<[$]>{$1}$0

$2の後に<[$]>という書式で$2がオプションであり,その前に[,その後に]を入れることを意味します.フォーマット指定が書けたら,次は補完候補の設定を記述します.

[\usepackage]
format=$2<[$]>{$1}$0
$1=amsmath,tikz,graphicx,geometry,xcolor

キー$1$1の箇所での補完候補を指定します.このようにカンマ区切りで入力を入れておくほか,辞書を用意しておいてその辞書名を書く方法もあります.

[\usepackage]
format=$2<[$]>{$1}$0
$1=pack.dic

設定された値が辞書ファイルかカンマ区切りリストかは自動で判断されます.オプションに対する設定は$2で行うことができますが,次のようにしてパッケージに応じた設定をすることができます.

[\usepackage]
format=$2<[$]>{$1}$0
$1=amsmath,tikz,graphicx,geometry,xcolor
/amsmath$2=@multiargs,leqno,reqno,fleqn
/xcolor$2=@multiargs,dvipsname,svgname,x11names

@から始まるものは,補完時の設定を意味します.今の場合オプションはカンマ区切りの複数引数なので,@multiargsを指定しています.他にもこのような特別設定があります(後述).

このような他の引数に依存した設定は三番目以降の引数でも同様です.たとえば,

[\testcs]
format={$1}{$2}{$3}
/hoge/fuga$3=x,y,z
/hoge$3=a,b,c

という指定では,\test{hoge}{fuga}{}で第三引数を補完するとx,y,zが,第二引数がそれ以外の場合,たとえば\test{hoge}{hoge}{}で第三引数を補完するとa,b,cが候補に現れるようになります.

各指定をもう少し詳しく見ていきます.

formatキー

引数のフォーマットを指定します.改行は\n,\は\としておく必要があります.補完を出したい場所は$1,...,$9です.$10は使えません.\beginの設定はこうなっています.

[\begin]
format={$1}$0*\n$0\n\\end{$1}

二つ目以降の$1は一つ目のコピーとなります.$0*は補完マクロの挙動を制御します.祝鳥は$0*をフォーマット内に見つけると,ここで現在のフォーマットの再解釈をおこないます.たとえば次のような設定

[\begin]
format={$1}$0*\n$0\n\\end{$1}
[\begin{enumerate}]
format=\n\\item $0\n\\end{enumerate}

をすると,まず\beginの引数補完が始まります.\beginの補完の$1の位置の候補としてenumerateが確定すると,祝鳥は$0*の前まで,つまり{enumerate}までを挿入し,ここでフォーマットを再解釈します.その結果新しい\begin{enumerate}を見つけ,そのフォーマットを採用します.結果,\itemの挿入が行われます.

以下のような制限があります.(今は)入力チェックは行っていませんので,エラーも出ないまま予期不能な動作となると思います.

$1とあると必ず特別な意味を持つと解釈されます."$1"という文字列をそのまま挿入する目的には使えません. 同様に,オプションの前後に含まれる文字に$<>を使うこともできません. $1$2のような指定は行えません.$1$2の切れ目を認識することが不可能なためです.同様にフォーマットの最後が$1となる場合も,$1の部分を認識することはできません.実際には「$1にあたる部分はない」として処理されます.ただし,より前に現れた$1のコピーとしての意味は持つので,最後に現れる$1自身が不正ということはありません. $1$0$1$0*のような指定もできません.

注意

現在,$0*は次のような効果を持ちます.これは今後も同じ挙動となるかはわかりません.たとえば上のような設定を考えてみます.

[\testcs]
format={$1}$0*{$1}$0

この設定で,次のような状態で起動したとします.(|はカーソル位置.)

\testcs{|}{second}

この場合,祝鳥は\testcs{}までで解釈をやめ,カーソル位置で補完を開始します.補完終了後,残りのフォーマットのチェックを行います.残りを解釈している際に,二つ目の{second}のsecondの部分がさきほど補完を行った$1と同じであることは認識しますが,祝鳥はフォーマットのチェック中は,入力されている文字列を尊重し書き換えません.結果,補完終了後には次のようになります.

\testcs{first}{second}

一方,\testcsの指定が

[\testcs]
format={$1}{$1}$0

となっていたとしましょう.このとき同様に

\begin{|}{second}

という状態で起動すると,今度は全てのフォーマットのチェックを一気に行い,最初の段階で{second}のsecondの部分が$1であることを認識します.その後カーソル位置で補完を開始しますが,このときは二つの$1を連動させるように動きます.結果,補完終了後には次のようになります.

\testcs{first}{first}

補完対象

補完対象を指定するキー名は上に書いた通りです.カンマ区切りリストの中には,@で始まる命令(設定変更)や$で始まる命令(特殊な補完候補)を入れることができます.$で始まる命令の後に更にカンマ区切りで候補を並べると,それも追加されます.たとえば$file,xyzとするとファイル一覧とxyzを候補に加えます.

候補に加えて「ヒント」を指定することもできます.たとえば次のような指定

[\testcs]
format={$1}$0
$1=a{A},b{B},c{C}

では,aをリストボックスで選択している間Aがその下に表示されるようになります.辞書ファイルでも利用可能で,同様に

[\testcs]
$1=dic.dic{hint.dic}

とします.この場合dic.dicと同じ行のhint.dicの中身が下に表示されます.$collectではこのヒントが自動的に使われます.

コントロールシークエンスの補完は,セクション\,キー$1で指定できます.デフォルトは次の通りです.

[\]
$1=comtex.dic

特殊指定

@$で始まる候補は特殊な命令を表します.基本的には

を表します.これらはさらに設定を必要とすることがあり,そのような設定は$*@***$*$***というキー名で行います.命令によっては更にその後に続きます.個別に見ていきます.

@multiargs

補完候補が,適当な文字で区切られた複数引数であることを指定します.区切り文字はデフォルトはカンマですが,@multiargs{;}のようにして変更することもできます.

@keyval

key=valという形が続くkeyval形式であることを示します.補完候補の設定はたとえば次のように行います.

[\includegraphics]
format=$1<[$]>{$2}$0
$1=@keyval
$1@keyval:key=pagebox,bb,angle,width
$1@keyval:val{pagebox}=mediabox,cropbox,bleedbox,trimbox,artbox 
$1@keyval:val=@skip

@keyval:val{pagebox}でpagebox=となった時の補完候補を指定します.候補の指定方法は$1等と同様です.@keyval:valでpagebox以外のkeyが指定された場合の候補を設定できます.上の例ではpagebox以外はvalの補完をスキップします.

@hint

ヒントに対する設定を行います.@hint{no}とするとヒントを表示しません.@hint{fix:ヒントです}とすると,現在の選択候補によらず常に"ヒントです"と表示します.\を表示するには\\とする必要があります.改行は\nで表されます.また\B\Eで挟むとその間を太文字で表示します.

@stop

この値が指定された引数に達すると,補完マクロが終了します.

@skip

補完マクロは,この値が指定された引数の補完を飛ばします.

$collect

ソースファイルから候補を集めることを意味します.\labelの引数を\refの補完候補にする例です.

[\ref]
format={$1}$0
$1=$collect
$1$collect:pattern=\\label\{(.*?)\}
$1$collect:target=\1

$1$collect:patternに列挙する対象のパターンを正規表現で指定します.また実際の補完候補にする例をタグ付き正規表現で$1$collect:targetに指定しています.$collect{key}により$1$collectをkeyに変更できます.たとえば

[\label]
format={$1}$0
$1=$collect{ref},$collect{pageref}
ref:pattern=\\ref\{(.*?)\}
ref:target=\1
pageref:pattern=\\pageref\{(.*?)\}
pageref:target=\1

のようにすると,\refと\pagerefの引数を集めて\labelの引数とします.なお,もちろんこれは次と等価です.

[\label]
format={$1}$0
$1=$collect
$1$collect:pattern=\\(ref|pageref)\{(.*?)\}
$1$collect:target=\1
$file

ファイル一覧を候補に出すことを意味します.\includegraphicsの指定を見てみましょう.

[\includegraphics]
format=$1<[$]>{$2}$0
$2=$file
$2$file=*.jpg;*.bmp;*.pdf;*.eps;*.png

このように;で区切ってワイルドカードで指定します.

エイリアス

aliasセクション,または各セクションのaliasキーで,エイリアスを指定することができます.たとえば次のどちらかの指定は\inputの設定を\includeのそれと同じにすることを意味します.

[\input]
alias=\include
[alias]
\input=\include

次のようにすることもできます.

[\input]
alias=input

[alias]
\include=input

[input]
(input/include共通の設定を書く)

複数の設定をまとめるのに使えるほか,aliasセクションを使えば,セクション名として指定できない名前(]を含む名前)を使うこともできるようになります.

begin型補完,section型補完

begin型補完は主にbtex.iniを,section型補完は主にstex.iniを参照します. 両者の記述は似ているのでここでまとめて記述します.

ショートカットキー

補完直後に適当なキーを押すとそのまま環境が挿入されますが,このキーと環境名の対応を設定します.btex.iniに記述します.例えばデフォルトではbegin型補完においてdを押すとdocument環境が挿入されますが,これは

[Normal]
d=document

により実現されています. セクション名であるNormalは修飾キーがないことを意味します. たとえば

[Normal]
d=document
[Control]
d=dynamic
[Shift]
d=destination

という設定では,何も押さずにdを入力するとdocument環境が,Controlを押しながらdを入力するとdynamic環境が,Shiftを押しながらdを押すとdestination環境が入力されます.なお,上記環境名は架空のものです.\section型補完でも同様です.

補完候補

section型補完でのコマンドの補完候補は辞書sectex.dicに記述されています.この辞書名を変更することはできません.補完候補となる環境はhtex.iniの\beginセクションに従います.デフォルトでは辞書betex.dicを参照します.補完もご覧ください.

また,コマンドや環境によってはさらに追加引数を要求されることがありますが,これもhtex.iniに記述された設定に従います.例えばデフォルトではpicture環境を挿入するとさらに四つの引数を入力するように要求されますが,これは次のような記述がhtex.iniにあるせいです.

[\begin{picture}]
format=($1,$2)($3,$4)\n$0\n\\end{picture}
$1=@hint{fix:幅}
$2=@hint{fix:高さ}
$3=@hint{fix:原点のx座標}
$4=@hint{fix:原点のy座標}

$1などが引数にあたるところです.

ギリシャ文字補完

ギリシャ文字補完の設定はgreek.iniに記述します.セクションはGreekのみです.たとえばデフォルトの設定は次のようになっていて,gで\gammaが,Gで\Gammaが挿入されます.

[Greek]
g=gamma
G=Gamma

なお通常のINIファイルの書式と異なり,キーは大文字小文字を区別します.また,キーは複数文字列も許されます.たとえばデフォルトではth-とすると\varthetaが挿入されますが,これは

[Greek]
th-=vartheta

と設定されています.

イメージ型補完

image.iniに記述します.設定はimageセクションに書かれます.補完に関する項目を設定します.設定するのは「入力されるコントロールシークエンス」「入力キー」「引数の数」「イメージ」の四つです.入力されるコントロールシークエンスをキーとし,入力キーとイメージを値とします.入力キーと引数の数,イメージの間はタブ文字を入れます.イメージは改行が可能で,\nにより改行を表します.また,\自体の出力のためには\とします.

例を見てみましょう.

[image]
\longrightarrow = -->   0   -→
\frac = f   2   xxx\n---\nyyy

一行目の指定は,\longrightarrowという命令は

ことを示しています.二行目は\fracという命令に対して

ことを示します.イメージには改行を表す\nが使われています.

補完マクロとイメージ補完におけるリストボックスの設定

listbox.iniに記述します.全ての設定はdefaultセクションに書かれます.

Width,Heightキー.

リストボックスの幅と高さを設定します.単位は,幅がポイント,高さが行数です.デフォルトは幅が200,高さが6行です.

fontname, fontsizeキー

表示に使うフォントとそのサイズを設定します.デフォルトではエディタの表示と同じものが使われます.

Show_only_matchキー

Show_only_match=trueとすると,補完マクロ起動中に表示される候補を,現在入力中の文字列から始まるもののみにすることができます.デフォルトはfalseです.

謝辞

ライセンス

修正BSDライセンスに基づき配布を行っています.詳しい内容に関してはdoc\license.txtをご覧ください.

おまけ

INIファイルについて

祝鳥の設定変更の多くはINI形式の設定ファイルを直接編集することで行われます. INIファイルとは設定ファイルの一つで,以下の形式を持ちます.

[section]
key=value

[]で囲まれた中身を「セクション」と呼び,その中に並ぶkey=valueの並びを「エントリ」と呼びます.各エントリは=により区切られ,左を「キー」,右を「値」と呼びます.これらはネストすることはできません.基本的にはセクションとキーを決めるとそれに対応する値を読み取ることができます.この値の部分がセクションおよびキーに対応する設定項目ということになります. なお,;から始まる行はコメントと見なされ無視されます.

[section]
key1=value1
; コメント,ここは無視される.
key2=value2

文字コードはWindowsのシステムロケール設定に依存します.多くの場合,Shift_JIS外の文字は(たとえシステムロケール設定からはその文字がサポートされているはずであっても)うまく動きません. これは,祝鳥内部で多くの文字列を未だShift_JISで扱っていることによる不都合です.