2011-10-01 24 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的。

相關問題