読者です 読者をやめる 読者になる 読者になる

TeXworksにテンプレートとスクリプトを追加する方法(Windows)

(追記 17/1/27) TeXworksにおいてスクリプトファイルなどが保存される場所は予め決まっているようです。この場所をどのように変更するか分からないので、ご存じの方はお知らせいただけると幸いです。


まず、デフォルトの設定でのテンプレートやスクリプト・各種設定のファイルの保存場所は以下のようになっています。

TeXworksのテンプレート・スクリプトの場所(TeX Liveの場合)

 C:\texliveにインストールした場合、 テンプレートは

C:\(ユーザー名)\.texlive2016\texmf-config\texworks\templates\

に、スクリプトは、

C:\(ユーザー名)\.texlive2016\texmf-config\texworks\scripts\

に置かれています。

TeXworksのテンプレート・スクリプトの場所(W32TeXの場合)

 C:\w32texにインストールした場合、(おそらく) テンプレートは

C:\w32tex\share\texworks\twdata\templates\

に、スクリプトは、

C:\w32tex\share\texworks\twdata\scripts\

に置かれています。
(ただし、このフォルダがどのTEXMFツリーに属しているかは分からないです…)

テンプレートの追加方法

 前述のテンプレートのフォルダの場所に、テンプレートとして追加したい.texファイルを移動するだけでテンプレートとして認識されます。

スクリプトの追加方法

 まず、テンプレートと同様に前述のスクリプトのフォルダの場所にスクリプトとして利用したいQtScript(javasqriptと似たもの)ファイル.jsLuaファイル.luaを移動します。

 その後、TeXworksエディタの「メインメニュー」→「スクリプト」→「TeXworksスクリプト」→「スクリプト一覧の更新」をクリックし、スクリプトを登録することで利用可能となります。
f:id:elecho:20170127004147p:plain

簡単なQtScriptの書き方(コードの挿入)

*1

以下、表を挿入するスクリプトを例にあげて説明してみたいと思います。*2

// TeXworksScript
// Title: 表挿入
// Shortcut: Ctrl+5
// Description: Table Command
// Author: elecho
// Version: 0.1
// Date: 2017-01-26
// Script-Type: standalone
// Context: TeXDocument

var str =
  "\\begin{table}[h]\n"
  +"\\begin{tabular}{|c|c|c|}\n"
  +"\\hline\n"
  +"解答記号 & 正解 & 配点 \\\\ \\hline\n"
  +"\\EMvphantom*[3pt]{}&&\\\\ \\hline\n"
  +"\\EMvphantom*[3pt]{}&&\\\\ \\hline\n"
  +"\\EMvphantom*[3pt]{}&&\\\\ \\hline\n"
  +"\\end{tabular}\n"
  +"\\end{table}";
TW.target.insertText(str);

 まず、冒頭のコメント部はただのコメントではなく重要なスクリプトの情報です。
おそらくすぐに編集する必要がでてくる部分は、

// Title: 表挿入

と、

// Shortcut: Ctrl+5

です。(ほかはいじらなくてもまあ動くでしょう)
// Title:はTeXworksエディタ上にスクリプト名として表示される名前で、
// Shortcut:でショートカットキーを登録できます。(他のショートカットキーと重複すると動作しません。)
 他の欄は必要に迫られたら調べましょう。

 そして、コメント部の下が実際に動作するスクリプト部です。TW.target.が実際に入出力を行うための部分になっています。
 今回は、

TW.target.insertText(str);

のように.insertTextメソッドを用いて文字列を出力しています。

 なお、もっと複雑な機能を持つスクリプトを作りたいのなら http://ex.osaka-kyoiku.ac.jp/~fujii/EX/texworksMANU.html が参考になります。
 また、もともとデフォルトで入っているスクリプトのコードを読んでみるのも勉強になります。
 真面目に勉強したければ、QtScriptのドキュメント(英語)を読むのもありです。 http://doc.qt.io/qt-5/qtscript-index.html

追記(17/1/27)
 こちらの、TeXworksの公式のスクリプトの書き方のマニュアルもオススメです。 TeXworks Scripting Some API Help Information

 ちなみに、自分がTeX Liveをインストールしたのは昨日の朝なのであまり詳しいことは理解していませんが、参考になれば幸いです。

*1:文字列を挿入したいだけならば、TeXworksの自動補完を登録する方法もあります。というか分かりやすいショートカットキーをなかなか登録できないので自動補完を利用するほうが一般的だと思います。
ちなみに、自動補完の登録の仕方はこのサイトなどが詳しいと思います。 qiita.com

*2:日本語を含むスクリプトファイルを作成する場合はスクリプトファイルのエンコードUTF-8にしましょう。