Возвышенный текст 3 стирает триггер фрагмента вместо вставки фрагмента - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь использовать следующий возвышенный фрагмент для быстрого создания документов 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>

Однако, когда я пытаюсь фактически использовать его, набирая: newhw затем нажатие табуляции просто стирает newhw без вставки чего-либо.

Этот фрагмент фактически работал в какой-то момент, поэтому я не понимаю, почему он остановился. Кроме того, я знаю, что мне, вероятно, следует просто создать свой собственный класс документов, но это звучит довольно устрашающе, тем более, что мне пришлось бы включать пользовательский класс, который я не писал, однако я на самом деле не изучал это.

1 Ответ

1 голос
/ 27 марта 2020

В теле вашего фрагмента содержится недопустимый текст, поскольку в строке 19 есть несколько неэкранированных символов $: \newcommand{\qed}{$\hfill\blacksquare$\\}. Префикс каждого из них символом \, чтобы сообщить Sublime, что следующий символ $ не является специальным, решит проблему.

В качестве фона символ $ является специальным во фрагменте (и в различные другие места в Sublime, где переменные поддерживаются для раскрытия) и представляет имя раскрываемой переменной (или в случае фрагмента, заполнителя для поля).

Обычно при указании переменной этого не существует (например, $cool), в результате переменная расширяется до пустой строки. В этом конкретном случае переменные выглядят как $\ и $\\, что не является допустимым именем переменной. За кулисами происходит сбой всего расширения, что приводит к сбою вставки всего фрагмента.

В качестве общей рекомендации (без какой-либо принадлежности) пакет PackageDev включает среди своих функций улучшенную подсветку синтаксиса для различных типов файлов Sublime, которые могут сделать такие проблемы более очевидными. Например, здесь вы можете видеть, что неэкранированные $ символы выделены как недействительные (и заполнители также выделены):

Sample

...