- 追加された行はこの色です。
- 削除された行はこの色です。
* LuaLaTeX でタイプセット → PDF を表示 [#z27b03ee]
* LaTeX用タイプセットスクリプト [#z27b03ee]
-ページ: [[Macro/投稿]]
-作者: sai
-カテゴリー: js
-投稿日: 2014-01-22 (水) 15:00:00
-投稿日: 2015-10-27 (火) 00:00:00
** メッセージ [#cc3bd5df]
*** LuaLaTeX でタイプセット → SumatraPDF で表示 [#ae3ef185]
#code(javascript){{
(function () {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var wshShell = new ActiveXObject("WScript.Shell");
var sakuraEditor = Editor.ExpandParameter("$S");
var currentTeXFile = Editor.ExpandParameter("$F");
var suffix = /\.[^.]*$/;
var pdfFile = currentTeXFile.replace(suffix, ".pdf");
var line = Editor.ExpandParameter("$y");
var sumatraPDF = "C:\\Program Files\\SumatraPDF\\SumatraPDF.exe";
var existSumatraPDF = true;
*** LaTeX用タイプセットスクリプト [#ae3ef185]
-Typeset.js
try {
sumatraPDF = wshShell.RegRead("HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\SumatraPDF.exe\\");
} catch (e) {
if (!fso.FileExists(sumatraPDF)) {
sumatraPDF = Editor.InputBox("Input the path to SumatraPDF.exe.", "SumatraPDF.exe", 255);
if (!fso.FileExists(sumatraPDF)) {
sumatraPDF = "rundll32 shell32,ShellExec_RunDLL SumatraPDF";
existSumatraPDF = false;
}
}
}
サクラエディタ Ver. 2.2.0.0 以降が必要です.
if (existSumatraPDF) {
sumatraPDF = ["\"", sumatraPDF, "\""].join("");
}
var mainTeXDir = fso.GetParentFolderName(pdfFile);
var cd = "cd /d " + ["\"", mainTeXDir, "\""].join("");
currentTeXFile = ["\"", currentTeXFile, "\""].join("");
var lualatex = "lualatex -synctex=1" + " \"" + fso.GetBaseName(["\"", pdfFile.replace(suffix, ".tex"), "\""].join("")) + "\"";
pdfFile = ["\"", pdfFile, "\""].join("");
var args = sumatraPDF + " -reuse-instance " + pdfFile + " -inverse-search \"\\\"" + sakuraEditor + "\\\" -X=1 -Y=%l \\\"%f\\\"\"" + " -forward-search " + currentTeXFile + " " + line;
var cmd = "cmd /c " + cd + " && " + lualatex + " && echo " + args + " | cmd";
Editor.StatusMsg(cmd, 0);
Editor.FileSave();
Editor.ExecCommand(cmd, 0x81);
}.call(this));
}}
*** LuaLaTeX でタイプセット → TeXworks で表示 [#b93c1d9f]
#code(javascript){{
(function () {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var currentTeXFile = Editor.ExpandParameter("$F");
var suffix = /\.[^.]*$/;
var pdfFile = currentTeXFile.replace(suffix, ".pdf");
var line = Editor.ExpandParameter("$y");
var mainTeXDir = fso.GetParentFolderName(pdfFile);
var cd = "cd /d " + ["\"", mainTeXDir, "\""].join("");
var lualatex = "lualatex -synctex=1" + " \"" + fso.GetBaseName(["\"", pdfFile.replace(suffix, ".tex"), "\""].join("")) + "\"";
var texworks = "powershell -Command \"& {$$line = \"\"\"" + line + "\"\"\"; $$src = \"\"\"" + currentTeXFile + "\"\"\"; $$pdf = \"\"\"" + pdfFile + "\"\"\"; $$param = $$line + \"\"\":0:\"\"\" + $$src; $$pageInfo = (synctex view -i $$param -o $$pdf | Select-String \"^Page:\"); $$page = ($$pageInfo -split \"\"\":\"\"\")[1]; texworks --position=$$page $$pdf}\"";
var cmd = "cmd /c " + cd + " && "+ lualatex + " && " + texworks;
Editor.StatusMsg(cmd, 0);
Editor.FileSave();
Editor.ExecCommand(cmd, 0x81);
}.call(this));
}}
*** LuaLaTeX でタイプセット → Adobe Reader で表示 [#m614e1fe]
#code(javascript){{
(function () {
var currentTeXFile = Editor.ExpandParameter("$F");
var suffix = /\.[^.]*$/;
var pdfFile = currentTeXFile.replace(suffix, ".pdf");
var line = Editor.ExpandParameter("$y");
var c = Editor.ExpandParameter("$e");
var b = Editor.ExpandParameter("$g");
var cd = "cd /d " + ["\"", c, "\""].join("");
var lualatex = "lualatex -synctex=1" + " " + ["\"", b, "\""].join("");
var pdf = ["\"", b, ".pdf", "\""].join("");
var pdfopen = "powershell -Command \"& {$$line = \"\"\"" + line + "\"\"\"; $$src = \"\"\"" + currentTeXFile + "\"\"\"; $$pdf = \"\"\"" + pdfFile + "\"\"\"; $$param = $$line + \"\"\":0:\"\"\" + $$src; $$pageInfo = (synctex view -i $$param -o $$pdf | Select-String \"^Page:\"); $$page = ($$pageInfo -split \"\"\":\"\"\")[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;
Editor.StatusMsg(cmd, 0);
Editor.FileSave();
Editor.ExecCommand(cmd, 0x81);
}.call(this));
}}
#code(javascript,Typeset.js)
----
#comment