[[サクラエディタ]] > マクロ

&color(White,#5F2F2F){  ''◆目次◆''  };&br;

#contents

*マクロ [#k75075b0]

-サクラエディタ r2746 で ExpandParameter にタイプ別設定の名前などの追加が行われました (→ [[Sakura Editor / Code / Commit [r2746]:http://sourceforge.net/p/sakura-editor/code/2746/]])
-サクラエディタ Ver. 2.0.7.0 で ExpandParameter にタイプ別設定の名前などの追加が行われました (→ [[Sakura Editor / Code / Commit [r2746]:http://sourceforge.net/p/sakura-editor/code/2746/]])
-サクラエディタ Ver. 2.0.6.0 で ExpandParameter の機能追加が行われました (→ [[Sakura Editor / PatchUnicode / #302 ExpandParameter機能追加等:http://sourceforge.net/p/sakura-editor/patchunicode/302/]])
-[[Macro - SakuraEditorWiki:http://sakura.qp.land.to/?Macro]]
//-[[サクラエディタマクロ:http://www.geocities.jp/maru3128/SakuraMacro/]]
//--[[リファレンス目次:http://www.geocities.jp/maru3128/SakuraMacro/reference/]]
//---[[S_ExpandParameter:http://www.geocities.jp/maru3128/SakuraMacro/reference/other/S_ExpandParameter.html]]
//-[[サクラエディタマクロ:http://sakura.qp.land.to/SakuraMacro/]]
//--[[リファレンス目次:http://sakura.qp.land.to/SakuraMacro/reference/]]
//---[[S_ExpandParameter:http://sakura.qp.land.to/SakuraMacro/reference/other/S_ExpandParameter.html]]
//-[[サクラエディタ  ヘルプ目次:http://sakura-editor.svn.sourceforge.net/viewvc/sakura-editor/help/trunk2/_RESOURCE/HLP000001.html]]
//--[[ヘルプファイル更新履歴:http://sakura-editor.svn.sourceforge.net/viewvc/sakura-editor/help/trunk2/_RESOURCE/HLP_HISTORY.html]]
//--[[マクロ:http://sakura-editor.svn.sourceforge.net/viewvc/sakura-editor/help/trunk2/_RESOURCE/HLP000001.html#c927]]
//--[[ExpandParameter:http://sakura-editor.svn.sourceforge.net/viewvc/sakura-editor/help/trunk2/_RESOURCE/HLP000284.html]]
-[[サクラエディタ  ヘルプ目次:http://sakura-editor.sourceforge.net/htmlhelp2/]]
//--[[ヘルプファイル更新履歴:http://sakura-editor.sourceforge.net/htmlhelp2/HLP_HISTORY.html]]
--[[マクロ:http://sakura-editor.sourceforge.net/htmlhelp2/#c927]]
---[[マクロ専用関数:http://sakura-editor.sourceforge.net/htmlhelp2/HLP000268.html]]
---[[ExpandParameter:http://sakura-editor.sourceforge.net/htmlhelp2/HLP000284.html]]
-[[Windows Script Host:http://msdn.microsoft.com/ja-jp/library/cc364455.aspx]]
-[[Windows Script Host Laboratory:http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/]]
-[[TOY BOX ver.0.2: サクラエディタ:http://toybox-v2.blogspot.com/search/label/%E3%82%B5%E3%82%AF%E3%83%A9%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF]]
--[[サクラエディタでよく使うマクロ2つ:http://toybox-v2.blogspot.com/2011/09/2.html]]

マクロを使うと LaTeX 環境を簡単に作ることができます.~
共通設定のマクロタブからマクロファイルが格納されているフォルダを参照して,名前,File,Id を指定し,マクロを実行するたびにファイルを読み込みなおす にチェックを入れて設定をクリックします.~
マクロを実行するたびにファイルを読み込みなおす のチェックが外れている場合,マクロを登録した後で,マクロファイルの内容を変更しても変更内容が反映されないので注意してください.~
登録したマクロは,メニューの [ツール(T)] → [登録済みマクロ(B)] から選択することで実行できます.~

----
&color(Black,#FF77AA){%%% &color(White){''共通設定''};                                              &color(Black,#FA77AA){%%%[ ''&color(White){?};'' ]%%%};&color(Black,#CC3333){%%%[  ''&color(White){✕};''  ]%%%}; %%%};&br;
  &color(Black,#EEEEEE){%%%[ 編集 ][ ファイル ][ ファイル名表示 ][ バックアップ ][ 書式 ][ 検索 ][ キー割り当て ]%%%};&br;
  &color(Black,#EEEEEE){%%%[  全般  ][ ウィンドウ ][  メインメニュー  ][ ツールバー ][  タブバー  ][ ステータスバー ]%%%};&br;
  &color(Black,#EEEEEE){%%%[  カスタムメニュー  ][  強調キーワード  ][  支援  ]%%%};''[   マクロ   ]''&color(Black,#EEEEEE){%%%[  プラグイン  ]%%%};&br;

 マクロ一覧    %%%.\macro\%%%                                    &color(Black,#EEEEEE){[ 参照(R)... ]};&br;
 ∣%%% 番号 ∣ マクロ名    ∣ ファイル名    ∣ 実行時に読み込み   ∣ 自動実行    %%%∣&br;
 ∣&color(White,#1188FF){ 0     pdfpLaTeX   pdfpLaTeX.js      on                        };&br;
 ∣ 1                             off&br;
 ∣ 2                             off&br;
 ∣ …                              …&br;
 ∣ 47                             off&br;
 ∣ 48                             off&br;
 ∣ 49                             off&br;

  名前(N)  %%%pdfpLaTeX                                  %%%  Id: &color(Black,#EEEEEE){[0   ▼]};&br;
  File     %%%pdfpLaTeX.js                                 ▼%%%  &color(Black,#EEEEEE){[ 設定(A) ]};&br;
  ☑マクロを実行するたびにファイルを読み込みなおす(L)     キャンセル確認待ち時間 %%%10%%%&br;
  自動実行:  ☐新規/開ファイル後(O)   ☐タイプ変更後(T)   ☐ファイル保存前(S)&br;
----

以下のマクロを使用する場合は サクラエディタ Ver. 2.0.6.0 以上が必要です.

**pdfpLaTeX.js [#y5c91d76]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var latex = "platex -synctex=1 -guess-input-enc -sjis-terminal";
   var charCode = Editor.GetCharCode();
   if (charCode == 4) {
     latex = "platex -synctex=1 -no-guess-input-enc -kanji=utf8 -sjis-terminal";
   } else if (charCode == 0) {
     latex = "platex -synctex=1 -no-guess-input-enc -kanji=sjis -sjis-terminal";
   } else if (charCode == 2) {
     latex = "platex -synctex=1 -no-guess-input-enc -kanji=euc -sjis-terminal";
   } else if (charCode == 1) {
     latex = "platex -synctex=1 -no-guess-input-enc -kanji=jis -sjis-terminal";
   }
   latex += " " + "-jobname=" + ["\"", b, "\""].join("") + " " + ["\"", b, "\""].join("");
   var dvipdfm = "dvipdfmx" + " " + ["\"", b, "\""].join("");
   var cmd = "cmd /c " + cd + " && " + latex + " && " + dvipdfm;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----

:キー割り当て|Ctrl+Alt+J

**pdfpLaTeX2.js [#u8bcfaaf]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var latex = "platex -synctex=1 -guess-input-enc -sjis-terminal";
   var charCode = Editor.GetCharCode();
   if (charCode == 4) {
     latex = "platex -synctex=1 -no-guess-input-enc -kanji=utf8 -sjis-terminal";
   } else if (charCode == 0) {
     latex = "platex -synctex=1 -no-guess-input-enc -kanji=sjis -sjis-terminal";
   } else if (charCode == 2) {
     latex = "platex -synctex=1 -no-guess-input-enc -kanji=euc -sjis-terminal";
   } else if (charCode == 1) {
     latex = "platex -synctex=1 -no-guess-input-enc -kanji=jis -sjis-terminal";
   }
   latex += " " + "-jobname=" + ["\"", b, "\""].join("") + " " + ["\"", b, "\""].join("");
   var dvips = "dvips -Ppdf -z -f" + " " + ["\"", b, ".dvi", "\""].join("") + " | convbkmk -g > " + ["\"", b, ".ps", "\""].join("");
   var ps2pdf = "ps2pdf.bat" + " " + ["\"", b, ".ps", "\""].join("");
   var cmd = "cmd /c " + cd + " && " + latex + " && " + dvips + " && " + ps2pdf;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----

:キー割り当て|Ctrl+Alt+K

**pdfupLaTeX.js [#l9863978]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var latex = "uplatex -synctex=1 -no-guess-input-enc -kanji=utf8" + " " + ["\"", b, "\""].join("");
   var dvipdfm = "dvipdfmx" + " " + ["\"", b, "\""].join("");
   var cmd = "cmd /c " + cd + " && " + latex + " && " + dvipdfm;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----

:キー割り当て|Shift+Alt+J

**pdfupLaTeX2.js [#h46c2bcd]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var latex = "uplatex -synctex=1 -no-guess-input-enc -kanji=utf8" + " " + ["\"", b, "\""].join("");
   var dvips = "dvips -Ppdf -z -f" + " " + ["\"", b, ".dvi", "\""].join("") + " | convbkmk -u > " + ["\"", b, ".ps", "\""].join("");
   var ps2pdf = "ps2pdf.bat" + " " + ["\"", b, ".ps", "\""].join("");
   var cmd = "cmd /c " + cd + " && " + latex + " && " + dvips + " && " + ps2pdf;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----

:キー割り当て|Shift+Alt+K

**pdfLaTeX.js [#yf857fdc]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var pdflatex = "pdflatex -synctex=1" + " " + ["\"", b, "\""].join("");
   var cmd = "cmd /c " + cd + " && " + pdflatex;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----

:キー割り当て|Shift+Alt+H

**LuaLaTeX.js [#b5787795]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var lualatex = "lualatex -synctex=1" + " " + ["\"", b, "\""].join("");
   var cmd = "cmd /c " + cd + " && " + lualatex;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----

:キー割り当て|Shift+Alt+Y

**LuaJITLaTeX.js [#w564abd7]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var luajitlatex = "luajitlatex -synctex=1" + " " + ["\"", b, "\""].join("");
   var cmd = "cmd /c " + cd + " && " + luajitlatex;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----

:キー割り当て|Shift+Alt+U

**XeLaTeX.js [#pf46590c]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var xelatex = "xelatex -synctex=1" + " " + ["\"", b, "\""].join("");
   var cmd = "cmd /c " + cd + " && " + xelatex;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----

:キー割り当て|Shift+Alt+I

**pBibTeX.js [#ib5040ed]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var bibtex = "pbibtex -sjis-terminal";
   var charCode = Editor.GetCharCode();
   if (charCode == 4) {
     bibtex = "pbibtex -kanji=utf8 -sjis-terminal";
   } else if (charCode == 0) {
     bibtex = "pbibtex -kanji=sjis -sjis-terminal";
   } else if (charCode == 2) {
     bibtex = "pbibtex -kanji=euc -sjis-terminal";
   } else if (charCode == 1) {
     bibtex = "pbibtex -kanji=jis -sjis-terminal";
   }
   bibtex += " " + ["\"", b, "\""].join("");
   var cmd = "cmd /c " + cd + " && " + bibtex;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----

:キー割り当て|Ctrl+Alt+N

**upBibTeX.js [#deacfc6b]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var bibtex = "upbibtex" + " " + ["\"", b, "\""].join("");
   var cmd = "cmd /c " + cd + " && " + bibtex;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----

:キー割り当て|Shift+Alt+N

**Mendex.js [#p1a2e7ba]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var makeindex = "mendex -T";
   var charCode = Editor.GetCharCode();
   if (charCode == 4) {
     makeindex = "mendex -U -T";
   } else if (charCode == 0) {
     makeindex = "mendex -S -T";
   } else if (charCode == 2) {
     makeindex = "mendex -E -T";
   } else if (charCode == 1) {
     makeindex = "mendex -J -T";
   }
   makeindex += " " + ["\"", b, "\""].join("");
   var cmd = "cmd /c " + cd + " && " + makeindex;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----

:キー割り当て|Ctrl+Alt+M

**TeXworks.js [#w4b007fd]

[[TeXworks#組み込みの PDF ビューアに日本語を表示させる>TeXworks#t5313ebc]] を参照してフォントの埋め込みの設定を行います.

----
 function main()
 {
   var fso = new ActiveXObject("Scripting.FileSystemObject");
   var currentTeXFile = Editor.ExpandParameter("$F");
   var pdfFile = currentTeXFile.replace(new RegExp(/\.[^.]*$/), ".pdf");
   var texworks = "texworks";
 
   if (!fso.FileExists(pdfFile)) {
     var mainTeXFile = Editor.InputBox("Input the path to main TeX file.", pdfFile.replace(new RegExp(/\.[^.]*$/), ".tex"), 255);
     if (mainTeXFile != "") {
       pdfFile = mainTeXFile.replace(new RegExp(/\.[^.]*$/), ".pdf");
     }
   }
 
   var mainTeXDir = fso.GetParentFolderName(pdfFile);
   var cd = "cd /d " + ["\"", mainTeXDir, "\""].join("");
   pdfFile = ["\"", pdfFile, "\""].join("");
 
   var args = texworks + " " + pdfFile;
   var cmd = "cmd /c " + cd + " && echo " + args + " | cmd";
   Editor.ExecCommand(cmd, 1);
 }
 
 main();
----

:キー割り当て|Ctrl+Alt+O

*マクロにショートカットキーを割り当てる方法 [#ubcf1bda]

-[[キー割り当て一覧:http://sakura-editor.sourceforge.net/htmlhelp/HLP000107.html]]
-[[Macro/マクロファイルの実行 - SakuraEditorWiki:http://sakura.qp.land.to/?Macro%2F%A5%DE%A5%AF%A5%ED%A5%D5%A5%A1%A5%A4%A5%EB%A4%CE%BC%C2%B9%D4]]
-[[サクラエディタの外部マクロにショートカットキーに割り当てる:http://d.hatena.ne.jp/nanntekotta/20100623/]]
-[[サクラエディタの自作マクロにショートカットキーを割り当てる方法:http://muumoo.jp/news/2008/02/10/0sakuramacro.html]]

----
&color(Black,#FF77AA){%%% &color(White){''共通設定''};                                              &color(Black,#FA77AA){%%%[ ''&color(White){?};'' ]%%%};&color(Black,#CC3333){%%%[  ''&color(White){✕};''  ]%%%}; %%%};&br;
  &color(Black,#EEEEEE){%%%[  カスタムメニュー  ][  強調キーワード  ][   支援   ][   マクロ   ][  プラグイン  ]%%%};&br;
  &color(Black,#EEEEEE){%%%[  全般  ][ ウィンドウ ][  メインメニュー  ][ ツールバー ][  タブバー  ][ ステータスバー ]%%%};&br;
  &color(Black,#EEEEEE){%%%[ 編集 ][ ファイル ][ ファイル名表示 ][ バックアップ ][ 書式 ][ 検索 ]%%%};''[ キー割り当て ]''&br;

      種別(K) &color(Black,#EEEEEE){[ 外部マクロ      ▼]};          &color(Black,#EEEEEE){[ インポート(I)... ]}; &color(Black,#EEEEEE){[ エクスポート(X)... ]};&br;
  機能(F)                             キー(Y)&br;
  マクロ 0 (未登録)                        &color(White,#1188FF){ダブルクリック              };&br;
  マクロ 1 (未登録)                 ☐Shift    右クリック&br;
  マクロ 2 (未登録)                        中クリック&br;
  マクロ 3 (未登録)                 ☐Ctrl    左サイドクリック&br;
  マクロ 4 (未登録)                        右サイドクリック&br;
  マクロ 5 (未登録)                 ☐Alt    トリプルクリック&br;
  マクロ 6 (未登録)                        クアドラプルクリック&br;
  マクロ 7 (未登録)                        F1&br;
  マクロ 8 (未登録)                        F2&br;
  マクロ 9 (未登録)                        F3&br;
  …                                 …&br;
 %%% 機能に割り当てられているキー(G)    %%%&br;
&br;
                             &color(#888888,#EEEEEE){[割付(B)]}; キーに割り当てられている機能&br;
 %%%                          %%%  &color(Black,#EEEEEE){[解除(R)]}; %%%現在位置の単語選択%%%&br;
  ☐ウィンドウ毎にアクセラレータテーブルを作成する(Wine用)(W)&br;
----

*その他の便利な TeX 用マクロ [#u28c7ea5]

**Macro - SakuraEditorWiki [#o5661c6c]
-[[Macro - SakuraEditorWiki:http://sakura.qp.land.to/?Macro]]
--[[Macro/投稿:http://sakura.qp.land.to/?Macro%2F%C5%EA%B9%C6]]
***選択行コメントアウト [#ned6c107]
-[[選択行コメントアウト:http://sakura.qp.land.to/?Macro%2F%C5%EA%B9%C6%2F64]]
(maru さん)
//(JScript)
***TeXでコンパイル→dvioutで表示 [#g1adca67]
-[[TeXでコンパイル→dvioutで表示:http://sakura.qp.land.to/?Macro%2F%C5%EA%B9%C6%2F76]]
(てふにしゃん さん)
***Tex用画像挿入 [#yc92f02e]
-[[Tex用画像挿入:http://sakura.qp.land.to/?Macro%2F%C5%EA%B9%C6%2F77]]
(てふにしゃん さん)
***Tex用数式挿入 [#r86d3294]
-[[Tex用数式挿入:http://sakura.qp.land.to/?Macro%2F%C5%EA%B9%C6%2F78]]
(てふにしゃん さん)
***TeX→PDF用マクロ [#l1f44e08]
-[[TeX→PDF用マクロ:http://sakura.qp.land.to/?Macro%2F%C5%EA%B9%C6%2F79]]
(てふにしゃん さん)
//(JScript)
***VSライクなhtml終タグ自動補完 & texの\end補完: [#sfb49cfa]
-[[VSライクなhtml終タグ自動補完 & texの\end補完:http://sakura.qp.land.to/?Macro%2F%C5%EA%B9%C6%2F158]]
(peak さん)
//(JScript)
//**LaTeX+SakuraEditorマクロ [#y54f2100]
//-[[LaTeX+SakuraEditorマクロ:http://sidewarehouse.dip.jp/sakura.html]]
//(横倉 勇希 さん)
//(JScript)
//**サクラエディタ用TeXマクロ [#c3c7d37d]
//-[[サクラエディタ用TeXマクロ:http://kentarodev.up.seesaa.net/files/fileIndex.html]]
//(Kentaro (PortableMe) さん)
//(JScript)
**SakuraエディタのTeX用マクロ [#ra3e1193]
-[[SakuraエディタのTeX用マクロ:http://execyou.blogspot.com/]]
(横前 拓磨 さん)
//(JScript)
**サクラエディタ - PukiWiki for PBCG Lab [#t65f472c]
-[[サクラエディタ - PukiWiki for PBCG Lab:http://www.slis.tsukuba.ac.jp/~fujis/cgi-bin/wiki/index.php?%A5%B5%A5%AF%A5%E9%A5%A8%A5%C7%A5%A3%A5%BF]]
(藤澤 誠 (fujis) さん)
//(JScript)
//**TeXファイルのコンパイル [#k202d7e6]
//-[[TeXファイルのコンパイル:http://gusukus.blog50.fc2.com/blog-entry-10.html]]
//-[[TeXファイルのコンパイル:http://web.archive.org/web/20080611144911/http://gusukus.blog50.fc2.com/]]
//(ぐすく さん)
//-[[TeXファイルのコンパイル – サクラエディタ用マクロ | shiro.be:http://shiro.be/archives/135]]
//(しろ さん)
//(JScript)
**サクラエディタでAspell [#b5a2307d]
-[[サクラエディタでAspell:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1036830290]]
(angel_o_f_hell さん, pa10user さん)
//(JScript)
-[[Aspell の導入:http://yaplog.jp/ukokke69/archive/2032]] (うこっけ さん)

*SumatraPDF との連携 [#t7a83c73]

**forward and inverse search (SumatraPDF を前面に表示したい場合) [#p7bf3825]

***SumatraPDF.js [#s758d3d9]
----
 function main()
 {
   var fso = new ActiveXObject("Scripting.FileSystemObject");
   var sakuraEditor = Editor.ExpandParameter("$S");
   var currentTeXFile = Editor.ExpandParameter("$F");
   var pdfFile = currentTeXFile.replace(new RegExp(/\.[^.]*$/), ".pdf");
   var line = Editor.ExpandParameter("$y");
   var sumatraPDF = "C:/Program Files/SumatraPDF/SumatraPDF.exe";
   var mainTeXDir;
   var cd;
   var cmd;
   var args;
 
   if (!fso.FileExists(sumatraPDF)) {
     sumatraPDF = "C:/Program Files (x86)/SumatraPDF/SumatraPDF.exe";
     if (!fso.FileExists(sumatraPDF)) {
       sumatraPDF = Editor.InputBox("Input the path to SumatraPDF.exe.", "SumatraPDF.exe", 255);
       if (!fso.FileExists(sumatraPDF)) {
         sumatraPDF = "SumatraPDF.exe";
       }
     }
   }
 
   sumatraPDF = ["\"", sumatraPDF, "\""].join("");
 
   if (!fso.FileExists(pdfFile)) {
     var mainTeXFile = Editor.InputBox("Input the path to main TeX file.", pdfFile.replace(new RegExp(/\.[^.]*$/), ".tex"), 255);
     if (mainTeXFile != "") {
       pdfFile = mainTeXFile.replace(new RegExp(/\.[^.]*$/), ".pdf");
     }
   }
 
   mainTeXDir = fso.GetParentFolderName(pdfFile);
   cd = "cd /d " + ["\"", mainTeXDir, "\""].join("");
   currentTeXFile = ["\"", currentTeXFile, "\""].join("");
   pdfFile = ["\"", pdfFile, "\""].join("");
 
   args = sumatraPDF + " -reuse-instance " + pdfFile + " -inverse-search \"\\\"" + sakuraEditor + "\\\" -Y=%l \\\"%f\\\"\"" + " -forward-search " + currentTeXFile + " " + line;
   cmd = "cmd /c " + cd + " && echo " + args + " | cmd";
   Editor.ExecCommand(cmd, 1);
 }
 
 main();
----

**forward search (SumatraPDF を前面に表示したくない場合) [#wa5982c4]

[[SumatraPDF#fwdsumatrapdf.exe>SumatraPDF#n8da77e2]] の fwdsumatrapdf.exe を使用します.~

***fwdsumatrapdf.js [#ce8c0353]
----
 function main()
 {
   var fso = new ActiveXObject("Scripting.FileSystemObject");
   var currentTeXFile = Editor.ExpandParameter("$F");
   var pdfFile = currentTeXFile.replace(new RegExp(/\.[^.]*$/), ".pdf");
   var line = Editor.ExpandParameter("$y");
   var fwdsumatrapdf = "C:/w32tex/bin/fwdsumatrapdf.exe";
   var mainTeXDir;
   var cd;
   var cmd;
   var args;

   if (!fso.FileExists(fwdsumatrapdf)) {
     fwdsumatrapdf = Editor.InputBox("Input the path to fwdsumatrapdf.exe.", "fwdsumatrapdf.exe", 255);
     if (!fso.FileExists(fwdsumatrapdf)) {
       fwdsumatrapdf = "fwdsumatrapdf.exe";
     }
   }
 
   fwdsumatrapdf = ["\"", fwdsumatrapdf, "\""].join("");
 
   if (!fso.FileExists(pdfFile)) {
     var mainTeXFile = Editor.InputBox("Input the path to main TeX file.", pdfFile.replace(new RegExp(/\.[^.]*$/), ".tex"), 255);
     if (mainTeXFile != "") {
       pdfFile = mainTeXFile.replace(new RegExp(/\.[^.]*$/), ".pdf");
     }
   }
 
   mainTeXDir = fso.GetParentFolderName(pdfFile);
   cd = "cd /d " + ["\"", mainTeXDir, "\""].join("");
   currentTeXFile = ["\"", currentTeXFile, "\""].join("");
   pdfFile = ["\"", pdfFile, "\""].join("");
 
   args = fwdsumatrapdf + " " + pdfFile + " " + currentTeXFile + " " + line;
   cmd = "cmd /c " + cd + " && " + args;
   Editor.ExecCommand(cmd, 1);
 }
 
 main();
----

**inverse search [#uf1eff38]
 C:\sakura\sakura.exe -Y=%l "%f"
または
 C:\sakura\sakura.exe -Y:%l "%f"

*Adobe Reader との連携 [#md7b02af]

**pdfpLaTeXA.js [#m4b6208e]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var latex = "platex -guess-input-enc -sjis-terminal";
   var charCode = Editor.GetCharCode();
   if (charCode == 4) {
     latex = "platex -no-guess-input-enc -kanji=utf8 -sjis-terminal";
   } else if (charCode == 0) {
     latex = "platex -no-guess-input-enc -kanji=sjis -sjis-terminal";
   } else if (charCode == 2) {
     latex = "platex -no-guess-input-enc -kanji=euc -sjis-terminal";
   } else if (charCode == 1) {
     latex = "platex -no-guess-input-enc -kanji=jis -sjis-terminal";
   }
   latex += " " + "-jobname=" + ["\"", b, "\""].join("") + " " + ["\"", b, "\""].join("");
   var dvipdfm = "dvipdfmx" + " " + ["\"", b, "\""].join("");
   var pdf = ["\"", b, ".pdf", "\""].join("");
   var pdfopen = "powershell -Command \"& {$$pdf = \"\"" + pdf + "\"\"; $$pages = (pdfinfo $$pdf | Select-String \"^Pages:\"); $$page = (-split $$pages)[1]; pdfopen --rxi --file $$pdf --page $$page}\"";
   var pdfclose = "tasklist /fi \"IMAGENAME eq AcroRd32.exe\" /nh | findstr \"AcroRd32.exe\" > nul && pdfopen --rxi --file " + pdf + " && pdfclose --rxi --file " + pdf;
   var cmd = "cmd /c " + cd + " && " + pdfclose + " & " + latex + " && " + dvipdfm + " && " + pdfopen;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----

**pdfpLaTeX2A.js [#dab82aa3]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var latex = "platex -guess-input-enc -sjis-terminal";
   var charCode = Editor.GetCharCode();
   if (charCode == 4) {
     latex = "platex -no-guess-input-enc -kanji=utf8 -sjis-terminal";
   } else if (charCode == 0) {
     latex = "platex -no-guess-input-enc -kanji=sjis -sjis-terminal";
   } else if (charCode == 2) {
     latex = "platex -no-guess-input-enc -kanji=euc -sjis-terminal";
   } else if (charCode == 1) {
     latex = "platex -no-guess-input-enc -kanji=jis -sjis-terminal";
   }
   latex += " " + "-jobname=" + ["\"", b, "\""].join("") + " " + ["\"", b, "\""].join("");
   var dvips = "dvips -Ppdf -z -f" + " " + ["\"", b, ".dvi", "\""].join("") + " | convbkmk -g > " + ["\"", b, ".ps", "\""].join("");
   var ps2pdf = "ps2pdf.bat" + " " + ["\"", b, ".ps", "\""].join("");
   var pdf = ["\"", b, ".pdf", "\""].join("");
   var pdfopen = "powershell -Command \"& {$$pdf = \"\"" + pdf + "\"\"; $$pages = (pdfinfo $$pdf | Select-String \"^Pages:\"); $$page = (-split $$pages)[1]; pdfopen --rxi --file $$pdf --page $$page}\"";
   var pdfclose = "tasklist /fi \"IMAGENAME eq AcroRd32.exe\" /nh | findstr \"AcroRd32.exe\" > nul && pdfopen --rxi --file " + pdf + " && pdfclose --rxi --file " + pdf;
   var cmd = "cmd /c " + cd + " && " + pdfclose + " & " + latex + " && " + dvips + " && " + ps2pdf + " && " + pdfopen;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----

**pdfupLaTeXA.js [#p63937bf]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var latex = "uplatex -no-guess-input-enc -kanji=utf8" + " " + ["\"", b, "\""].join("");
   var dvipdfm = "dvipdfmx" + " " + ["\"", b, "\""].join("");
   var pdf = ["\"", b, ".pdf", "\""].join("");
   var pdfopen = "powershell -Command \"& {$$pdf = \"\"" + pdf + "\"\"; $$pages = (pdfinfo $$pdf | Select-String \"^Pages:\"); $$page = (-split $$pages)[1]; pdfopen --rxi --file $$pdf --page $$page}\"";
   var pdfclose = "tasklist /fi \"IMAGENAME eq AcroRd32.exe\" /nh | findstr \"AcroRd32.exe\" > nul && pdfopen --rxi --file " + pdf + " && pdfclose --rxi --file " + pdf;
   var cmd = "cmd /c " + cd + " && " + pdfclose + " & " + latex + " && " + dvipdfm + " && " + pdfopen;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----

**pdfupLaTeX2A.js [#q7e5677d]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var latex = "uplatex -no-guess-input-enc -kanji=utf8" + " " + ["\"", b, "\""].join("");
   var dvips = "dvips -Ppdf -z -f" + " " + ["\"", b, ".dvi", "\""].join("") + " | convbkmk -u > " + ["\"", b, ".ps", "\""].join("");
   var ps2pdf = "ps2pdf.bat" + " " + ["\"", b, ".ps", "\""].join("");
   var pdf = ["\"", b, ".pdf", "\""].join("");
   var pdfopen = "powershell -Command \"& {$$pdf = \"\"" + pdf + "\"\"; $$pages = (pdfinfo $$pdf | Select-String \"^Pages:\"); $$page = (-split $$pages)[1]; pdfopen --rxi --file $$pdf --page $$page}\"";
   var pdfclose = "tasklist /fi \"IMAGENAME eq AcroRd32.exe\" /nh | findstr \"AcroRd32.exe\" > nul && pdfopen --rxi --file " + pdf + " && pdfclose --rxi --file " + pdf;
   var cmd = "cmd /c " + cd + " && " + pdfclose + " & " + latex + " && " + dvips + " && " + ps2pdf + " && " + pdfopen;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----

**pdfLaTeXA.js [#sf8bfeac]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var pdflatex = "pdflatex" + " " + ["\"", b, "\""].join("");
   var pdf = ["\"", b, ".pdf", "\""].join("");
   var pdfopen = "powershell -Command \"& {$$pdf = \"\"" + pdf + "\"\"; $$pages = (pdfinfo $$pdf | Select-String \"^Pages:\"); $$page = (-split $$pages)[1]; pdfopen --rxi --file $$pdf --page $$page}\"";
   var pdfclose = "tasklist /fi \"IMAGENAME eq AcroRd32.exe\" /nh | findstr \"AcroRd32.exe\" > nul && pdfopen --rxi --file " + pdf + " && pdfclose --rxi --file " + pdf;
   var cmd = "cmd /c " + cd + " && " + pdfclose + " & " + pdflatex + " && " + pdfopen;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----

**LuaLaTeXA.js [#y3996da5]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var lualatex = "lualatex" + " " + ["\"", b, "\""].join("");
   var pdf = ["\"", b, ".pdf", "\""].join("");
   var pdfopen = "powershell -Command \"& {$$pdf = \"\"" + pdf + "\"\"; $$pages = (pdfinfo $$pdf | Select-String \"^Pages:\"); $$page = (-split $$pages)[1]; pdfopen --rxi --file $$pdf --page $$page}\"";
   var pdfclose = "tasklist /fi \"IMAGENAME eq AcroRd32.exe\" /nh | findstr \"AcroRd32.exe\" > nul && pdfopen --rxi --file " + pdf + " && pdfclose --rxi --file " + pdf;
   var cmd = "cmd /c " + cd + " && " + pdfclose + " & " + lualatex + " && " + pdfopen;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----

**LuaJITLaTeXA.js [#cfc61c8f]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var luajitlatex = "luajitlatex" + " " + ["\"", b, "\""].join("");
   var pdf = ["\"", b, ".pdf", "\""].join("");
   var pdfopen = "powershell -Command \"& {$$pdf = \"\"" + pdf + "\"\"; $$pages = (pdfinfo $$pdf | Select-String \"^Pages:\"); $$page = (-split $$pages)[1]; pdfopen --rxi --file $$pdf --page $$page}\"";
   var pdfclose = "tasklist /fi \"IMAGENAME eq AcroRd32.exe\" /nh | findstr \"AcroRd32.exe\" > nul && pdfopen --rxi --file " + pdf + " && pdfclose --rxi --file " + pdf;
   var cmd = "cmd /c " + cd + " && " + pdfclose + " & " + luajitlatex + " && " + pdfopen;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----

**XeLaTeXA.js [#n9a237cf]

----
 function main()
 {
   var c = Editor.ExpandParameter("$e");
   var b = Editor.ExpandParameter("$g");
   var cd = "cd /d " + ["\"", c, "\""].join("");
   var xelatex = "xelatex" + " " + ["\"", b, "\""].join("");
   var pdf = ["\"", b, ".pdf", "\""].join("");
   var pdfopen = "powershell -Command \"& {$$pdf = \"\"" + pdf + "\"\"; $$pages = (pdfinfo $$pdf | Select-String \"^Pages:\"); $$page = (-split $$pages)[1]; pdfopen --rxi --file $$pdf --page $$page}\"";
   var pdfclose = "tasklist /fi \"IMAGENAME eq AcroRd32.exe\" /nh | findstr \"AcroRd32.exe\" > nul && pdfopen --rxi --file " + pdf + " && pdfclose --rxi --file " + pdf;
   var cmd = "cmd /c " + cd + " && " + pdfclose + " & " + xelatex + " && " + pdfopen;
 
   var button = Editor.MessageBox(cmd, 1);
   if (button == 1) {
     Editor.FileSave();
     Editor.ExecCommand(cmd, 1);
   }
 }
 
 main();
----