我尝试将自动时间戳插入到 LaTeX 文件中,以获取某些项目的 id。在 Windows 机器上,我得到了以下宏(JavaScript):
%SCRIPT
var res=system("c:\\cygwin\\bin\\bash.exe -c '/bin/date +%%s'");
var timestamp=res.readAllStandardOutputStr();
res.waitForFinished();
editor.write(timestamp);
我可以在 TeXStudio 的消息屏幕上看到正确的结果(一个表示秒数的长数字):
Prozess gestartet: c:\cygwin\bin\bash.exe -c '/bin/date +%s'
1392656846
Prozess endete normal
没什么特别的。我测试了退出代码,结果也不错。但似乎没有使用来收集 stdout,readAllStandardOutputStr()
因为我看不到文件中出现任何内容。editor.write
根据我尝试的测试,它似乎有效。放在readAllStandardOutputStr()
后面waitForFinished()
也没有帮助。感谢帮助或提示。
答案1
确实,标准输出为空。很可能在您调用之前,它已在消息面板内部读取(这可能是一个错误,或者至少是文档中的误导性描述)。对于您的情况,您可以使用以下代码:
%SCRIPT
var res=system("texdoc --version");
res.standardOutputRead.connect( function(output) {
editor.write(output);
});
res.waitForFinished();