2011-10-01 71 views
4

每次我在.tex文档中插入一个片段(包含yasnippet)时,我会在片段后面获得一个换行符。对于通常用于文本样式的小片段来说,这非常烦人。我怎样才能避免这种情况?emacs + latex + yasnippet:为什么在代码片段之后插入换行符?

我读了一些关于这个问题(http://code.google.com/p/yasnippet/issues/detail?id=115或http://yasnippet.googlecode.com/svn/trunk/doc/faq.html)但找不到解决方法。重现如下(我用在Mac OS X 10.6.8 Aquamacs 2.3A与yasnippet版本0.6.1c工作):

  1. 定义〜/库/首选项/ Aquamacs Emacs的/ Preferences.el是: (需要“yasnippet) (亚斯/初始化) (亚斯/负载目录 “〜/库/首选项/ Aquamacs Emacs的/插件/ yasnippet-0.6.1c /段”)

  2. 定义下面的代码片段(电话它是“bm.yasnippet”[bm = boldmath];星号*表示光标结束的位置 - 注意片段后面没有换行符)

    # name: \bm{}{} 
    # key: bm 
    # -- 
    \bm{$1}* 
    
  3. 重启Aquamacs并打开在BM + 标签一个.tex文件和类型[这应该插入片段]

  4. 甲换行代码段之后加入。这很不方便,因为\bm{foo}通常用于文本样式,所以例如在“矢量\bm{x}不是空矢量”中。这样做的一个典型原因是代码片段以换行符结束,然后插入。但是,我特别获得此行为,即使代码段而不是以换行符结尾。

回答

5

我不能用普通的Emacs重新制作它。事实上,我有这个确切的问题,但我的问题是我有require-final-newline设置为t。所以Emacs在我的模板末尾添加了一个换行符。

我的设置稍微复杂一些,但是您的解决方案可能是将mode-require-final-newline设置为零并重新启动Emacs。

要验证这是问题,请打开模板并检查最后一个换行符。

+1

尊敬的event_jr,非常感谢!我不知道这些变量......我在我的Preferences.el中简单地使用了“(setq-default mode-require-final-newline nil)”,它完全解决了这个问题:-) –

0

多亏Temporarly disable adding of newlines in Emacs的答案,我用一个函数来仅暂时禁用最后换行符的当前缓冲区的加入:

(defun disable-final-newline() 
    (interactive) 
    (set (make-local-variable 'require-final-newline) nil)) 
0

为什么你长了一个新行的原因是,你的代码片段最后有空格或标签。 Ctrl + e和Ctrl + k杀死它们会使它工作,将近1个小时才能算出来......

0

我有一个类似的问题,有一个片段,其中一个是\ frac {} {}我经常使用它。 我使用的压裂版本压裂不是与yasnpepets捆绑在一起的压裂版本。

问题在于我编辑了VIM中的一些片段,并且当您保存该文件时,VIM会自动为其添加一个换行符。 要解决它,我必须在不同的编辑器中删除换行符,例如emacs的。

相关问题