我想在TeX
编辑器中添加全局宏。我的意思是:每次我输入 时\section{x}
,它都会自动\label{sec:x}
在 后面添加\section{x}
。
可以吗Texmaker
?如果不行,有没有其他Windows``TeX
编辑器可以实现这种功能?
提前致谢
答案1
使用 VS Code 的解决方案
您可以使用用户摘要对于你所说的具体情况,你可以写如下代码片段:
"section":{
"prefix": "sec",
"body": "\\section{$1}\\label{sec:$1}\n\n",
"description": "Insert Section Command",
}
到latex.json
。然后插入sec
以触发代码片段:
但对于一些较长的章节标题,将标签设置为与章节名称相同是不合适的。因此,最好将第二个替换$1
为$2
。这样可以分别给出章节名称和标签名称。
答案2
答案3
橡胶是一个简单的 LateX 编辑器,但在菜单Edit→中Preferences允许定义代码片段,如下所示:
\begin{figure}[htp]
\centering
\includegraphics[scale=${1:1.0}]{$2}
\caption{$3}
\label{$4}
\end{figure}
$0
img
Tab在文档的任意位置输入内容,此代码将按原样粘贴,变量$0
除外$4
。变量 $1 具有默认值,因此${1:1.0}
将1.0
自动显示为 和 ,而其他变量将为空({$2}
将显示为{}
,依此类推)。当您从选定的 $1 值开始输入类似内容时, 0.3
Tab将更改默认图像比例并跳转到$2
位置。因此,要完成整个代码片段,您可以输入类似内容example-image
Tab My caption
Tab mylabel
TabI am now in main text ...
最终结果将是:
\begin{figure}[htp]
\centering
\includegraphics[scale=0.3]{example-image}
\caption{My caption}
\label{mylabel}
\end{figure}
I am now in main text ...▎
注意:▎符号代表最终光标,而不是任何实际字符。不要将这段代码复制到使用 pdflatex 编译的文档中,否则您将获得LaTeX Error: Unicode character ▎ (U+258E) not set up for use with LaTeX.
当然,您可以编辑代码片段以fig:
自动添加图形标签,或者制作自己的任何代码的新片段并用 调用它whatever
Tab。
一些预定义的代码片段已经自动添加标签类型。例如sec
Tab将调用:
\section{${1:section name}}
\label{sec:${2}}
$0
% section $2 (end)
因此,sec
Tab mysection
Tab foo
Tab My nice text ...
将产生:
\section{mysection}
\label{sec:foo}
My nice text ...
% section foo (end)
答案4
也可以使用 AutoHotKey 来实现此目的。这样,您就不再需要编辑器,甚至可以将脚本同步到不同的计算机,以便在每个编辑器的任何地方使用相同的快捷方式。要生成带有标签命令的部分,可能的解决方案是:
:*:c#::\chapter{{} {}} {RETURN}\label{{}sec: {}}
有了这个,你可以输入
c#
,将被替换为
\chapter{ }
\label{sec: }
我对 texstudio 中的参考资料做了类似的事情,我还通过模拟进一步的键盘输入来触发 texstudio 的自动完成功能。要使用词汇表包插入符号,以下代码会创建命令来引用该符号并在我键入时启动自动完成下拉菜单sym#
:
:*:sym#::\gls{{}sym:{}}{LEFT}{Ctrl down}{Space}{Ctrl up}
生成:
\gls{sym:}
这可以适用于所有其他参考文献,如参考书目或其他标签。
我相信所有这些都可以通过 TeXstudio(TeXmaker 的一个分支)及其内置的脚本语言实现,但我很少使用它。
编辑:实际上,我在他们的脚本库中找到了 TeXstudio 的示例脚本。您可以在这里找到它: https://github.com/texstudio-org/texstudio-macro/blob/555dffe7aef3d0433fdcf1784b7ef057c4ee8ec5/automatedTextmanipulation/autoLabel.txsMacro
这正是您所要求的,但我没有测试过。