latex - Sublime text 3 删除片段触发器而不是插入片段
问题描述
我正在尝试使用以下 sublime 片段来快速创建 LaTeX 文档:
<snippet>
<content><![CDATA[
\def\HWset{$1}
\def\myname{MyName}
\documentclass{CustomClassFromMyProfessor}
\usepackage{bigints}
\usepackage{amsmath}
\usepackage{tikz}
\newcommand{\cord}{\coordinate}
\newcommand\ddfrac[2]{\frac{\displaystyle #1}{\displaystyle #2}}
\newcommand{\eps}{\epsilon}
\newcommand{\p}{\partial}
\newcommand{\er}{\bv{e}_r}
\newcommand{\ephi}{\bv{e}_\varphi}
\newcommand{\etheta}{\bv{e}_{\theta}}
\newcommand{\ez}{\bv{e}_z}
\newcommand{\ex}{\bv{e}_x}
\newcommand{\ey}{\bv{e}_y}
\newcommand{\qed}{$\hfill\blacksquare$\\}
\usepackage{mathtools}
\DeclarePairedDelimiter\br{\langle}{\rvert}
\DeclarePairedDelimiter\kt{\lvert}{\rangle}
\DeclarePairedDelimiterX\brkt[2]{\langle}{\rangle}{#1 \delimsize\vert #2}
\newcommand\brktt[3]{\left< #1 \right| #2 \left| #3 \right>}
\begin{document}
\textbf{$2}
\makeHWtitle
\problem{$3}
$4
\end{document}
]]></content>
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
<tabTrigger>newhw</tabTrigger>
<!-- Optional: Set a scope to limit where the snippet will trigger -->
<!-- <scope>source.python</scope> -->
</snippet>
但是,当我尝试实际使用它时,键入 out:newhw
然后按 tab 会简单地擦除newhw
而不插入任何内容。
这个片段实际上在某个时候工作,所以我很困惑为什么它停止了。我也知道我可能应该只创建自己的文档类,但这听起来相当令人生畏,特别是因为我必须合并我没有编写的自定义类,但是我还没有真正研究过这个。
解决方案
您的代码段正文中包含一些无效文本,因为它$
在第 19 行包含一些未转义的字符:\newcommand{\qed}{$\hfill\blacksquare$\\}
。给它们中的每一个加上一个\
字符的前缀来告诉 Sublime 后面的$
字符不是特殊的将解决这个问题。
作为背景,该$
字符在片段中是特殊的(以及在 Sublime 中支持扩展变量的各种其他地方),并表示要扩展的变量的名称(或者在片段的情况下,是字段的占位符)。
通常,当您指定一个不存在的变量(例如$cool
)时,结果是该变量扩展为一个空字符串。在这种特殊情况下,变量看起来像$\
and $\\
,它不是一个有效的变量名。在幕后,整个扩展都失败了,这使得整个片段插入失败。
作为一般建议(完全没有隶属关系),PackageDev包在其功能中包括针对各种 Sublime 文件类型的增强语法突出显示,这可以使这类问题更加明显。例如,在这里您可以看到未转义的$
字符被突出显示为无效(并且占位符也被突出显示):
推荐阅读
- scala - Akka Stream - 带分区的并行处理
- hapi-fhir - StructureDefinition 发布请求返回 404 错误
- shell - shell 中的 sed 函数应用于目录中的所有 .gff 文件
- bigcommerce - 在 Bigcommerce 的任何页面上提取博客数据
- java - Java 重新调整了嵌套列表的元素类型
- mysql - 从 2 个表中选择加入,其中一个表具有来自另一个表的键的数组值
- python - 将数据直接从 BigQuery 加载到 Orange
- matlab - 使用 SVD 确定矩阵列空间的正交基
- python - 我无法从用户那里获取数据来计算
- php - PHP 7 在将对象推送到数组后覆盖它会导致覆盖该数组中的所有对象