我想在 中实现以下功能TeXstudio 2.12.4 (hg 6476:3e5c3afa4719)
。
在快速构建(构建和查看,F5 快捷键)期间,仅当我调用此命令时,我希望 TeXstudio 自动在我的 TeX 代码中插入一些(预设)行。
我举个例子。假设我的文档是这样的:
% Code 1: What I want to see as I type in my editor
\documentclass[]{article}
\begin{document}
Hello world.
\end{document}
但是,当我按下编译(F5)时,我希望 TeXstudio 在该行后自动添加一行\documentclass
,如下所示:
% Code 2: What I want the effect to be (compilation result)
\documentclass[]{article}
\usepackage{xcolor}\color{red} % This is automatically added in during compilation.
\begin{document}
Hello world.
\end{document}
我应该得到的效果是一个全红色文本“Hello world”文档。
抓住:这里的问题是我希望该行\usepackage{xcolor}\color{red}
永远不会出现在我的编辑器中,所以该行应该(暂时且自动地)由 TeXstudio 在后端添加,并在编译完成后立即删除。
总而言之,我希望看到Code 1
在我的 TeXstudio 编辑器中看到(之前和Code 2
编译后),但是我按下编译/快速构建等之后的结果。
可能的解决方案
我了解 TeXstudio 支持使用脚本(请参阅这里),但我不确定在我的 TeX 代码中插入自定义字符串的正确语法是什么。
另一种方法可能是这个问题之前在 TeX.SE 上问过,我只希望传递一个命令前TeXstudio 编译后会自动在我的 TeX 代码中插入一行,并传递一个命令后编译从我的代码中删除该特定行。
这是可行/能实现的吗?
答案1
您无法将脚本绑定到“before-command-run”,因为当前没有可用的触发器。
但是,您可以编写自己的脚本,该脚本会执行工作并在某个时候调用“Build & View”。如果您愿意,您还可以在选项中为其分配“F5”快捷键。所以这基本上就是您想要的(尽管我不明白其目的)。
%SCRIPT
function onDocumentClassFound(cur) {
cur.movePosition(1, cursorEnums.NextLine);
cur.insertText("\\usepackage{xcolor}\\color{red}\n");
app.getManagedAction("main/tools/quickbuild").trigger();
app.editUndo();
}
options = "";
scope = editor.document().cursor(0, 0, -1);
editor.search("\\documentclass", options, scope, onDocumentClassFound);