我将使用很多小节并打算将其标记为相同的名称。
\subsection{Name}
\label{Name}
我想使用用户标签,这样我只需要在选择它后输入“名称”,然后宏就会完成剩下的工作。
这个问题是关于在同一个宏中多次使用@表示的选定文本。
如果这实际上解释这个帖子我希望有人可以用更简单的语言来解释它。
答案1
这TeXmaker 文档状态
...(如果之前在编辑器中选择了一些文本,则第一个“•”字段将自动被选定的文本替换)。
也就是说,后续的“•”将不会被填写。所以您想要的功能似乎并未内置于 Texmaker 中。
这是使用 TeXstudio(TeXmaker 的一个分支)的替代解决方案。(此处的解决方案改编自:https://tex.stackexchange.com/a/294698/117534)
您想要实现的是使用相同参数替换多个占位符,这可以在 TeXstudio 中使用漂亮的“镜像占位符”实现。在 TeXstudio 中,您可以设置类似于 TeXmaker 中的用户标签的用户宏:
Macros -> Edit Macros -> Add
将宏设为Normal
类型,然后将以下内容粘贴到LaTeX content
框中:
\subsection{%<%:id:1%>}
\label{%<%:mirror,id:1%>}
最后,在条目中为宏命名,Name
例如子部分。
最终结果应如下所示:
如果您的设置是默认的,您将能够通过Shift+访问此宏F1(如果这不是您的第一个宏,则可以通过其他 Fn 键访问)。
如果您不确定,请转到Macros
菜单,您应该会在那里看到您的宏。
快速测试:
答案2
我也遇到了同样的问题。我设法通过使用脚本而不是用户标签来解决这个问题。你可以在这里查看我做了什么:
TeXMaker 是否能够使用为 TeXWorks 制作的 .js 脚本?如果不行,我该如何将 .js 转换为 .tms?
切换Hyperref.tms
// TeXworksScript
// Title: Toggle Hyperlink
// Shortcut: Ctrl+Shift+H
// Description: Converts the current selection to be a hyperlink.
// Author: Robo
// Version: 0.1
// Date: 2018-01-06
// Script-Type: standalone
// Context: TeXDocument
function addOrRemove(prefix, midfix, suffix) {
var txt = TM.selection;
var len = txt.length;
var wrapped = prefix + txt + midfix + txt + suffix;
var pos = TM.selectionStart;
if (pos >= prefix.length) {
TM.selectRange(pos - prefix.length, wrapped.length);
if (TM.selection == wrapped) {
TM.insertText(txt);
TM.selectRange(pos - prefix.length, len);
return;
}
TM.selectRange(pos, len);
}
TM.insertText(wrapped);
TM.selectRange(pos + prefix.length, len);
return;
};
addOrRemove("\\hyperref[", "]{", "}");