Latex 将日期命令插入代码段升华文本3

Latex 将日期命令插入代码段升华文本3,latex,sublimetext3,sublimetext-snippet,Latex,Sublimetext3,Sublimetext Snippet,我试图创建一个用于启动LaTex文档的代码段,在该文档中填充包和所有内容,但我还希望它自动填充日期。我有insertdate软件包,但我不知道如何使用它。我有代码段: <snippet> <content><![CDATA[ \documentclass{article} \usepackage{amsmath} \title{${1:title}} \author{...} \date{[Todays date here automatically]}

我试图创建一个用于启动LaTex文档的代码段,在该文档中填充包和所有内容,但我还希望它自动填充日期。我有insertdate软件包,但我不知道如何使用它。我有代码段:

<snippet>
    <content><![CDATA[
\documentclass{article}
\usepackage{amsmath}

\title{${1:title}}
\author{...}
\date{[Todays date here automatically]}

\begin{document}
\maketitle

$0

\end{document}
]]></content>
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    <tabTrigger>document</tabTrigger> -->
    <!-- Optional: Set a scope to limit where the snippet will trigger -->
    <scope>text.tex.latex</scope> -->
</snippet>

文件-->
text.tex.latex-->

无法直接以传统方式(即本例中的
文档
选项卡)展开代码段,并动态更新代码段中的一个或多个字段;为此,您需要额外的胶水插件代码

该软件包提供了多种将日期插入文档的方法,但没有提供额外的粘合剂。下面概述了一种实现这一点的方法的示例

下面的所有示例都假定以下代码段内容位于名为
Packages/User/NewLatexDocument.sublime snippet
的文件中;在以下示例中,将该路径替换为代码段的适当路径和文件名


创建新的LaTeX文档
文件
text.tex.latex
这是您在问题中提供的版本,但请注意,问题中的版本已中断,因为
行以
-->
注释序列终止,这是无效的

这里特别有趣的是,代码片段字段已经重新排序,因此
日期
字段是第一个字段,
标题
是第二个字段,原因我们稍后将看到

了解
用户
软件包的位置也很重要;如果您不确定,可以通过从菜单中选择
首选项>浏览软件包…
找到位置。在MacOS上,菜单位置是
Sublime Text>Preferences>Browse Packages…

方法1:通过tab触发器扩展代码段(无额外插件) 可以使用tab触发器调用代码段(这里是单词
document
),但是如上所述,没有直接的方法让
InsertDate
包为您插入日期

但是,您可以使用一个默认键绑定触发手动日期插入。例如,按F5键,它会显示一个日期选项面板,然后插入一个。从那里,您可以按Tab键在代码段中继续

请参阅该包的文档,了解您可以在此处使用的所有键,或者了解如何创建自己的自定义绑定以直接插入您选择的格式

这并不是您想要直接做的事情,但它也是一种需要最少工作量来设置的方法

方法2:通过宏展开代码段 通过使用Sublime宏,您可以执行单个操作(按键、命令调色板输入等),并自动执行这两个操作;展开代码段并插入日期

为此,您需要将以下内容保存到
User
包中的
sublime宏中。名字并不重要,只要你记得你用过什么,因为你马上就会需要它。在我下面的示例中,文件名是
Packages/User/NewLatexDocument.sublime macro

[
    { "command": "insert_snippet", "args": {"name": "Packages/User/NewLatexDocument.sublime-snippet"} },
    { "command": "insert_date", "args": {"format": "%x"} },
    { "command": "next_field" },
]
确保
insert_snippet
参数中的文件名与代码段的名称匹配。您可能还希望将日期格式更改为您喜欢的任何格式

当您调用宏时,它会插入代码段,然后触发
insert_date
函数插入日期(这就是为什么
date
字段是第一个)并跳到下一个字段,此时您可以开始手动填写代码段的其余部分

您可以通过从菜单中选择
Tools>Macros>User>NewLatexDocument
来查看此操作;最后一项将是
sublime宏
文件的名称

现在,您可以创建一个键绑定来触发
,这样您就不必从菜单中选择它了。如上所述,请记住确保
sublime宏的文件名是您创建的文件

{
“键”:[“ctrl+alt+shift+d”],
“命令”:“运行宏文件”,
“args”:{
“文件”:”res://Packages/User/NewLatexDocument.sublime-macro"
}
},
或者,您可以在
用户
软件包(例如,
MyCustomCommands.sublime commands
)中创建具有以下内容的
sublime commands
文件,这将使命令在命令选项板中可用:

[
{
“标题”:“创建新文档”,
“命令”:“运行宏文件”,
“args”:{
“文件”:”res://Packages/User/NewLatexDocument.sublime-macro"
}
},
]
方法3:通过tab触发器扩展代码段(带额外插件) 这个例子最接近您想要做的事情,但它需要更多的工作。另外请注意,它要求您输入完整的扩展文本(例如,
文档
),如果部分匹配恰好是最佳完成,则不会触发

首先,确保已从方法2创建宏,因为此方法使用相同的宏,但以不同的方式触发它

接下来,从菜单中选择
Tools>Developer>newplugin…
,将默认插件的文本替换为以下代码,然后将其保存为
.py
文件;在我的示例中,我将文件命名为
new\u latex\u document.py

导入升华
导入升华插件
类NewLatexDocumentCommand(升华插件.TextCommand):
def运行(自我,编辑):
#获取光标所在行的最后一个字
point=self.view.sel()[0].b
line=self.view.substr(self.view.line(点))
word=line.split()[-1]
#拆下触发器