簡體   English   中英

emacs + latex + yasnippet:為什么在片段后插入換行符?

[英]emacs + latex + yasnippet: Why are newlines inserted after a snippet?

每次我在.tex文檔中插入一個片段(帶yasnippet)時,我會在片段后面獲得一個換行符。 這對於通常用於文本樣式的小片段來說非常煩人。 我怎么能避免這種情況?

我讀了一下這個問題(http://code.google.com/p/yasnippet/issues/detail?id=115或http://yasnippet.googlecode.com/svn/trunk/doc/faq.html )但無法找到解決方案。 重現如下(我使用yasnippet版本0.6.1c在Mac OS X 10.6.8上使用Aquamacs 2.3a):

  1. 定義〜/ Library / Preferences / Aquamacs Emacs / Preferences.el為:( require'yasnippet)(yas / initialize)(yas / load-directory“〜/ Library / Preferences / Aquamacs Emacs / plugins / yasnippet-0.6.1c /片段“)

  2. 定義以下片段(稱之為“bm.yasnippet”[bm = boldmath];星號*表示光標結束的位置 - 請注意片段后面沒有換行符)

     # name: \\bm{}{} # key: bm # -- \\bm{$1}* 
  3. 重新啟動Aquamacs並打開一個.tex文件並輸入bm + Tab [這應該插入代碼片段]

  4. 在代碼段之后添加換行符。 這是非常不方便的,因為\\bm{foo}通常用於文本樣式,因此例如在“vector \\bm{x}不是空向量”中。 一個典型的原因是片段以換行符結束,然后插入換行符。 不過,我專門獲得這種行為甚至片斷以新行結束。

我不能用普通的Emacs來重復它。 事實上,我有這個確切的問題,但我的問題是我將require-final-newline設置為t 所以Emacs在我的模板末尾添加了換行符。

我的設置稍微復雜一點,但解決方案可能是將mode-require-final-newline為nil並重啟Emacs。

要驗證這是問題,請打開模板並檢查最終換行符。

感謝Temporarly中的答案禁用在Emacs中添加換行符 ,我使用的函數只是暫時禁用在當前緩沖區中添加最終換行符:

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

你有一個新行的原因是你的代碼片段末尾有空格或制表符。 按Ctrl + e和Ctrl + k來殺死它們會使它工作,將近1個小時來弄明白......

我有幾個片段的類似問題,其中一個是我經常使用的\\ frac {} {}。 我使用的frac片段版本不是與yasnippets捆綁在一起的版本。

問題是我在VIM中編輯了一些片段,當您保存文件時,VIM會自動為其添加換行符。 要解決它,我不得不在另一個編輯器中刪除換行符,例如emacs。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM