TeXstudio:如何将已经写好的文本放在括号中并将光标设置在左括号处?

TeXstudio:如何将已经写好的文本放在括号中并将光标设置在左括号处?

没有 MWE,因为这与编辑器本身有关。我主要使用 TeXstudio,但也曾短暂使用过 TeXmaker。

当我编写 LaTeX 文档时,我非常我经常发现自己写了一些文字,后来才意识到,我希望这些文字是粗体、斜体或按照某种命令显示。

我正在寻找一种标记文本的通用方法,然后最好使用一些键盘快捷键将标记的文本封装在花括号中并将光标放在第一个括号 - 这样我就可以在文本或任何我需要的 markdown 之前输入命令。

标记文本然后按下开始括号的键会将光标置于文本末尾,甚至不会位于结束括号之外。因此,本质上,我在问是否可以在 TeXstudio 中更改带有标记文本的开始花括号的作用。

答案1

我不确定这个问题是否问对了地方,但尽管如此,我发现尝试一下还是很有趣的。显然,您可以添加自定义 TeXstudio 宏。在主菜单中,单击Macros > Edit macros...。在右侧,您可以适当地命名您的宏。此操作不需要Abbreviation和选项。必须将 设置为。现在您可以添加以下内容:TriggerTypeScript

%SCRIPT
c = cursor
var arr = new Array('\\{',c.selectedText(),'}');
str = arr.join('')
c.insertText(str)
c.moveTo(c.lineNumber(),c.columnNumber()-str.length+1)

现在,您可以使用Shift+实现您想要的功能F1。我认为您甚至可以在菜单中指定自己的快捷方式Options > Configure TeXstudio...

解释
c=cursor此行声明了一个名为 的光标对象。c
var arr = new Array('\\{',c.selectedText(),'}');此行定义了一个以 开头\{并以 结尾的数组}。在 和 之间放置编辑器中当前选定的文本。第二个\是转义所需的,因为它是一个活动字符。
str = arr.join('')此行将数组连接到字符串(使用空字符串''作为分隔符)并将其放置在 中str
c.insertText(str)此行只是将文本插入 中str
c.moveTo(c.lineNumber(),c.columnNumber()-str.length+1)此行将光标放置在 之后的位置\。该函数c.moveTo接受两个参数,第一个是行号,第二个是列号。对于列号,我使用当前列号减去 的长度str,再加一来表示\

答案2

如果 TXS 自动完成器识别并提供您要插入的命令,则规范的解决方案是

i)突出显示要括在括号中的部分,

ii) 输入命令(命令显示在自动完成器中),然后

iii) 压制Enter

动态图

补充说明:

  • 如果您在步骤(i)中只想突出显示一个单词,那么您只需使用Ctrl+D快捷方式即可。

  • 正如@samcarter 提到的,字体样式如\textbf\emph\textit已经可以用作键盘快捷键。突出显示要强调的内容,然后应用键盘快捷键,例如Ctrl+B等。

它也适用于下标/上标及其相关的键盘快捷键(++ Ctrl/ ++ )。ShiftDCtrlShiftU

gif2

  • 如果您选择的命令有多个参数/占位符,则您选择的文本将输入到第一个占位符中(参见 gif)。

  • 最新版本是 2.12.10,如果您可以选择,请更新。

相关内容