[[gPad]] > マクロ &color(White,#5F2F2F){ ''◆CONTENTS◆'' };&br; #contents *マクロ [#w9b67570] マクロを使うと LaTeX 環境を簡単に作ることができます. **Typeset.js [#b88feabd] ---- (function () { menu = CreatePopupMenu(); menu.Add("upLaTeX (ptex2pdf)", 1, 0); menu.Add("upLaTeX (dvips + ps2pdf)", 2, 0); menu.Add("pdfLaTeX", 3, 0); menu.Add("LuaLaTeX", 4, 0); menu.Add("LuaJITLaTeX", 5, 0); menu.Add("XeLaTeX", 6, 0); menu.Add("", 0, meMenuSeparator); menu.Add("upLaTeX (ptex2pdf) [Adobe Reader]", 11, 0); menu.Add("upLaTeX (dvips + ps2pdf) [Adobe Reader]", 12, 0); menu.Add("pdfLaTeX [Adobe Reader]", 13, 0); menu.Add("LuaLaTeX [Adobe Reader]", 14, 0); menu.Add("LuaJITLaTeX [Adobe Reader]", 15, 0); menu.Add("XeLaTeX [Adobe Reader]", 16, 0); menu.Add("", 0, meMenuSeparator); menu.Add("upBibTeX", 51, 0); menu.Add("BibTeX", 52, 0); menu.Add("BibTeXu", 53, 0); menu.Add("", 0, meMenuSeparator); menu.Add("Mendex", 61, 0); menu.Add("MakeIndex", 62, 0); menu.Add("TeXindy", 63, 0); menu.Add("", 0, meMenuSeparator); menu.Add("TeXworks", 71, 0); menu.Add("SumatraPDF", 72, 0); menu.Add("fwdsumatrapdf", 73, 0); menu.Add("pdfopen", 74, 0); menu.Add("", 0, meMenuSeparator); menu.Add("Quit", 99, 0); var menuItem = menu.Track(0); switch (menuItem) { case 1: var c = document.Path; var b = new ActiveXObject("Scripting.FileSystemObject").GetBaseName(document.Name); var cd = "cd /d " + ["\"", c, "\""].join(""); var ptex2pdf = "ptex2pdf -l -u -ot \"-synctex=1 -no-guess-input-enc -kanji=utf8 -sjis-terminal\"" + " " + ["\"", b, "\""].join(""); var cmd = "cmd /c " + cd + " && " + ptex2pdf; execute(cmd); break; case 2: var c = document.Path; var b = new ActiveXObject("Scripting.FileSystemObject").GetBaseName(document.Name); var cd = "cd /d " + ["\"", c, "\""].join(""); var latex = "uplatex -synctex=1 -no-guess-input-enc -kanji=utf8 -sjis-terminal" + " " + ["\"", 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; execute(cmd); break; case 3: var c = document.Path; var b = new ActiveXObject("Scripting.FileSystemObject").GetBaseName(document.Name); var cd = "cd /d " + ["\"", c, "\""].join(""); var pdflatex = "pdflatex -synctex=1" + " " + ["\"", b, "\""].join(""); var cmd = "cmd /c " + cd + " && " + pdflatex; execute(cmd); break; case 4: var c = document.Path; var b = new ActiveXObject("Scripting.FileSystemObject").GetBaseName(document.Name); var cd = "cd /d " + ["\"", c, "\""].join(""); var lualatex = "lualatex -synctex=1" + " " + ["\"", b, "\""].join(""); var cmd = "cmd /c " + cd + " && " + lualatex; execute(cmd); break; case 5: var c = document.Path; var b = new ActiveXObject("Scripting.FileSystemObject").GetBaseName(document.Name); var cd = "cd /d " + ["\"", c, "\""].join(""); var luajitlatex = "luajitlatex -synctex=1" + " " + ["\"", b, "\""].join(""); var cmd = "cmd /c " + cd + " && " + luajitlatex; execute(cmd); break; case 6: var c = document.Path; var b = new ActiveXObject("Scripting.FileSystemObject").GetBaseName(document.Name); var cd = "cd /d " + ["\"", c, "\""].join(""); var xelatex = "xelatex -synctex=1" + " " + ["\"", b, "\""].join(""); var cmd = "cmd /c " + cd + " && " + xelatex; execute(cmd); break; case 11: var c = document.Path; var b = new ActiveXObject("Scripting.FileSystemObject").GetBaseName(document.Name); var cd = "cd /d " + ["\"", c, "\""].join(""); var ptex2pdf = "ptex2pdf -l -u -ot \"-no-guess-input-enc -kanji=utf8 -sjis-terminal\"" + " " + ["\"", 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 + " & " + ptex2pdf + " && " + pdfopen; execute(cmd); break; case 12: var c = document.Path; var b = new ActiveXObject("Scripting.FileSystemObject").GetBaseName(document.Name); var cd = "cd /d " + ["\"", c, "\""].join(""); var latex = "uplatex -no-guess-input-enc -kanji=utf8 -sjis-terminal" + " " + ["\"", 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; execute(cmd); break; case 13: var c = document.Path; var b = new ActiveXObject("Scripting.FileSystemObject").GetBaseName(document.Name); 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; execute(cmd); break; case 14: var c = document.Path; var b = new ActiveXObject("Scripting.FileSystemObject").GetBaseName(document.Name); 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; execute(cmd); break; case 15: var c = document.Path; var b = new ActiveXObject("Scripting.FileSystemObject").GetBaseName(document.Name); 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; execute(cmd); break; case 16: var c = document.Path; var b = new ActiveXObject("Scripting.FileSystemObject").GetBaseName(document.Name); 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; execute(cmd); break; case 51: var c = document.Path; var b = new ActiveXObject("Scripting.FileSystemObject").GetBaseName(document.Name); var cd = "cd /d " + ["\"", c, "\""].join(""); var bibtex = "upbibtex" + " " + ["\"", b, "\""].join(""); var cmd = "cmd /c " + cd + " && " + bibtex; execute(cmd); break; case 52: var c = document.Path; var b = new ActiveXObject("Scripting.FileSystemObject").GetBaseName(document.Name); var cd = "cd /d " + ["\"", c, "\""].join(""); var bibtex = "bibtex" + " " + ["\"", b, "\""].join(""); var cmd = "cmd /c " + cd + " && " + bibtex; execute(cmd); break; case 53: var c = document.Path; var b = new ActiveXObject("Scripting.FileSystemObject").GetBaseName(document.Name); var cd = "cd /d " + ["\"", c, "\""].join(""); var bibtex = "bibtexu" + " " + ["\"", b, "\""].join(""); var cmd = "cmd /c " + cd + " && " + bibtex; execute(cmd); break; case 61: var c = document.Path; var b = new ActiveXObject("Scripting.FileSystemObject").GetBaseName(document.Name); var cd = "cd /d " + ["\"", c, "\""].join(""); var makeindex = "mendex -U -T" + " " + ["\"", b, "\""].join(""); var cmd = "cmd /c " + cd + " && " + makeindex; execute(cmd); break; case 62: var c = document.Path; var b = new ActiveXObject("Scripting.FileSystemObject").GetBaseName(document.Name); var cd = "cd /d " + ["\"", c, "\""].join(""); var makeindex = "makeindex" + " " + ["\"", b, "\""].join(""); var cmd = "cmd /c " + cd + " && " + makeindex; execute(cmd); break; case 63: var c = document.Path; var b = new ActiveXObject("Scripting.FileSystemObject").GetBaseName(document.Name); var cd = "cd /d " + ["\"", c, "\""].join(""); var makeindex = "texindy" + " " + ["\"", b, "\""].join(""); var cmd = "cmd /c " + cd + " && " + makeindex; execute(cmd); break; case 71: var fso = new ActiveXObject("Scripting.FileSystemObject"); var currentTeXFile = document.FullName; var suffix = /\.[^.]*$/; var pdfFile = currentTeXFile.replace(suffix, ".pdf"); var texworks = "texworks"; if (!fso.FileExists(pdfFile)) { var mainTeXFile = prompt("Input the path to main TeX file.", pdfFile.replace(suffix, ".tex")); if (mainTeXFile != "") { pdfFile = mainTeXFile.replace(suffix, ".pdf"); } } var mainTeXDir = fso.GetParentFolderName(pdfFile); var cd = "cd /d " + ["\"", mainTeXDir, "\""].join(""); pdfFile = ["\"", pdfFile, "\""].join(""); var args = pdfFile; new ActiveXObject("Shell.Application").ShellExecute(texworks, args, "", "open", 1); break; case 72: var fso = new ActiveXObject("Scripting.FileSystemObject"); var wshShell = new ActiveXObject("WScript.Shell"); var gpad = editor.FullName; var currentTeXFile = document.FullName; var suffix = /\.[^.]*$/; var pdfFile = currentTeXFile.replace(suffix, ".pdf"); var line = document.selection.GetActivePointY(ePosLogical); var sumatraPDF = "C:\\Program Files\\SumatraPDF\\SumatraPDF.exe"; var existSumatraPDF = true; try { sumatraPDF = wshShell.RegRead("HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\SumatraPDF.exe\\"); } catch (e) { if (!fso.FileExists(sumatraPDF)) { sumatraPDF = prompt("Input the path to SumatraPDF.exe.", "SumatraPDF.exe"); if (!fso.FileExists(sumatraPDF)) { sumatraPDF = "SumatraPDF.exe"; existSumatraPDF = false; } } } if (existSumatraPDF) { sumatraPDF = ["\"", sumatraPDF, "\""].join(""); } if (!fso.FileExists(pdfFile)) { var mainTeXFile = prompt("Input the path to main TeX file.", pdfFile.replace(suffix, ".tex")); if (mainTeXFile != "") { pdfFile = mainTeXFile.replace(suffix, ".pdf"); } } var mainTeXDir = fso.GetParentFolderName(pdfFile); var cd = "cd /d " + ["\"", mainTeXDir, "\""].join(""); currentTeXFile = ["\"", currentTeXFile, "\""].join(""); pdfFile = ["\"", pdfFile, "\""].join(""); var args = "-reuse-instance " + pdfFile + " -inverse-search \"\\\"" + gpad + "\\\" -NoMultipleBoot -Y=%l \\\"%f\\\"\"" + " -forward-search " + currentTeXFile + " " + line; new ActiveXObject("Shell.Application").ShellExecute(sumatraPDF, args, "", "open", 1); break; case 73: var fso = new ActiveXObject("Scripting.FileSystemObject"); var currentTeXFile = document.FullName; var suffix = /\.[^.]*$/; var pdfFile = currentTeXFile.replace(suffix, ".pdf"); var line = document.selection.GetActivePointY(mePosLogical); var fwdsumatrapdf = "fwdsumatrapdf.exe"; if (!fso.FileExists(pdfFile)) { var mainTeXFile = prompt("Input the path to main TeX file.", pdfFile.replace(suffix, ".tex")); if (mainTeXFile != "") { pdfFile = mainTeXFile.replace(suffix, ".pdf"); } } var mainTeXDir = fso.GetParentFolderName(pdfFile); var cd = "cd /d " + ["\"", mainTeXDir, "\""].join(""); currentTeXFile = ["\"", currentTeXFile, "\""].join(""); pdfFile = ["\"", pdfFile, "\""].join(""); var args = pdfFile + " " + currentTeXFile + " " + line; new ActiveXObject("Shell.Application").ShellExecute(fwdsumatrapdf, args, "", "open", 1); break; case 74: var fso = new ActiveXObject("Scripting.FileSystemObject"); var currentTeXFile = document.FullName; var suffix = /\.[^.]*$/; var pdfFile = currentTeXFile.replace(suffix, ".pdf"); var pdfopen = "pdfopen"; if (!fso.FileExists(pdfFile)) { var mainTeXFile = prompt("Input the path to main TeX file.", pdfFile.replace(suffix, ".tex")); if (mainTeXFile != "") { pdfFile = mainTeXFile.replace(suffix, ".pdf"); } } var mainTeXDir = fso.GetParentFolderName(pdfFile); var cd = "cd /d " + ["\"", mainTeXDir, "\""].join(""); pdfFile = ["\"", pdfFile, "\""].join(""); var args = "--rxi --file " + pdfFile; new ActiveXObject("Shell.Application").ShellExecute(pdfopen, args, "", "open", 1); break; case 99: break; default: break; } function execute(commandLine) { status = commandLine; document.Save(); new ActiveXObject("WScript.Shell").Run(commandLine, 1, true); } }.call(this)); ---- :ショートカット|Ctrl+T *SumatraPDF との連携 [#vb348fe8] **forward and inverse search (SumatraPDF を前面に表示したい場合) [#l2061012] Typeset.js を実行して -upLaTeX (ptex2pdf) -upLaTeX (dvips + ps2pdf) -pdfLaTeX -LuaLaTeX -LuaJITLaTeX -XeLaTeX を選択します. 再び Typeset.js を実行して SumatraPDF を選択します.~ **forward search (SumatraPDF を前面に表示したくない場合) [#q6af99da] [[SumatraPDF/fwdsumatrapdf]] の fwdsumatrapdf.exe を使用します.~ Typeset.js を実行して -upLaTeX (ptex2pdf) -upLaTeX (dvips + ps2pdf) -pdfLaTeX -LuaLaTeX -LuaJITLaTeX -XeLaTeX を選択します. 再び Typeset.js を実行して fwdsumatrapdf を選択します.~ **inverse search [#dae36579] "C:\gPad\gPad.exe" -NoMultipleBoot -Y=%l "%f" *Adobe Reader との連携 [#k7e32b43] Typeset.js を実行して -upLaTeX (ptex2pdf) [Adobe Reader] -upLaTeX (dvips + ps2pdf) [Adobe Reader] -pdfLaTeX [Adobe Reader] -LuaLaTeX [Adobe Reader] -LuaJITLaTeX [Adobe Reader] -XeLaTeX [Adobe Reader] を選択します.