emacs + latex + yasnippet: почему после фрагмента вставляются символы новой строки? - PullRequest
6 голосов
/ 01 октября 2011

Каждый раз, когда я вставляю фрагмент (с yasnippet) в документ .tex, я получаю новую строку после фрагмента.Это довольно раздражает для небольших фрагментов, которые обычно используются в текстовом стиле.Как я могу избежать этого?

Я немного прочитал о проблеме (http://code.google.com/p/yasnippet/issues/detail?id=115 или http://yasnippet.googlecode.com/svn/trunk/doc/faq.html), но не смог найти решение. Воспроизведите его следующим образом (я работаю с Aquamacs 2.3a на Mac OS X 10.6.8с yasnippet версии 0.6.1c):

  1. Определить ~ / Library / Preferences / Aquamacs Emacs / Preferences.el следующим образом: (Требуется 'yasnippet) (yas / initialize) (yas / load-директория "~ / Library / Preferences / Aquamacs Emacs / plugins / yasnippet-0.6.1c / snippets")

  2. определяет следующий фрагмент (назовите его "bm.yasnippet" [bm =boldmath]; звездочка * символизирует, где заканчивается курсор - обратите внимание, что после фрагмента нет новой строки)

    # name: \bm{}{}
    # key: bm
    # --
    \bm{$1}*
    
  3. перезапустите Aquamacs и откройте файл .tex и введите bm+ Tab [это должно вставить фрагмент]

  4. Новая строка добавляется после фрагмента. Это довольно неудобно, так как \bm{foo} обычно используется в текстовом стиле,так, например, в «Вектор \bm{x} не является нулевым вектором». Типичная причина этого заключается в том, что фрагмент заканчиваетсясимвол новой строки, который затем вставляется.Тем не менее, я специально получаю такое поведение, даже если фрагмент не заканчивается новой строкой.

Ответы [ 4 ]

6 голосов
/ 01 октября 2011

Я не могу воспроизвести его с простым Emacs.На самом деле, у меня была именно эта проблема, но моя проблема в том, что require-final-newline установлено на t .Поэтому Emacs добавляет новую строку в конце моего шаблона.

Моя установка немного сложнее, но решение для вас, вероятно, состоит в том, чтобы установить mode-require-final-newline на ноль и перезапустить Emacs.

Чтобы убедиться, что это проблема, откройте шаблон и проверьте окончательный перевод строки.

1 голос
/ 19 мая 2014

Благодаря ответам в Временно отключить добавление новых строк в Emacs , я использую функцию только для временного отключения добавления заключительных строк в текущем буфере:

(defun disable-final-newline ()
    (interactive)
    (set (make-local-variable 'require-final-newline) nil))
0 голосов
/ 16 апреля 2017

У меня была похожая проблема с несколькими фрагментами кода, одним из которых был \ frac {} {}, который я использую довольно часто.Используемая мной версия фрагмента frac не связана с yasnippets.

Проблема заключалась в том, что я отредактировал некоторые фрагменты в VIM, и при сохранении файла VIM автоматически добавляет к нему новую строку.Чтобы решить эту проблему, мне пришлось удалить новую строку в другом редакторе, например, в emacs.

0 голосов
/ 06 января 2015

причина, по которой вы получили новую строку, заключается в том, что в вашем фрагменте есть пробел или табуляция в конце.Ctrl + e и Ctrl + k, чтобы убить их, заставят это работать, почти 1 час, чтобы понять это ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...