簡體   English   中英

使 LaTeX-insert-item 在 AucTeX 中下拉兩行

[英]Make LaTeX-insert-item Drop Down Two Lines in AucTeX

我覺得這足以讓 Lisp 在這里保證而不是 TeX Stackexchange。 希望我是正確的。 我想使用命令Cc Cj插入兩個換行符,然后是一個項目。 當我調用它的定義時,它告訴我它在latex.el 重要的代碼片段是

(unless (bolp) (LaTeX-newline))

我不太了解 Lisp,但這似乎是“除非點是行的開頭,否則插入新行”。 由於我想要兩行,我將其替換為

(unless (bolp) (LaTeX-newline)
        (LaTeX-newline))

但是,新代碼不會下拉兩行。 我做錯了什么? 謝謝。 我已經包含了整個命令定義,以防我的解釋有誤。

(defun LaTeX-insert-item ()
  "Insert a new item in an environment.
You may use `LaTeX-item-list' to change the routines used to insert 
the item."
  (interactive "*")
  (let ((environment (LaTeX-current-environment)))
    (when (and (TeX-active-mark)
           (> (point) (mark)))
      (exchange-point-and-mark))
    (unless (bolp) (LaTeX-newline)
            (LaTeX-newline))
    (if (assoc environment LaTeX-item-list)
    (funcall (cdr (assoc environment LaTeX-item-list)))
      (TeX-insert-macro "item"))
    (indent-according-to-mode)))

您對LaTeX-newline假設是正確的。 它插入一個換行符。 如果將調用您修改后的函數,它將按您的需要工作。

它很可能永遠不會被調用。

也許您將定義添加到 init 文件中,但 AUCTeX該定義之后加載,並且LaTeX-insert-item以原始方式重新定義。

您不應重新定義LaTeX-insert-item而是定義一個新函數,例如my-LaTeX-insert-item並將該函數用作LaTeX-insert-item:override建議,並在您的 init 文件中使用以下行:

(advice-add 'LaTeX-insert-item :override #'my-LaTeX-insert-item)

如果在加載包latex之前定義了my-LaTeX-insert-item該建議也適用。

請注意,我假設您使用更新的 Emacs 版本和包nadvice 據我所知, nadvice是在 Emacs 24.4 中引入的。

如果Mx locate-library RET nadvice RET為您提供了圖書館的路徑,您就可以開始了。

暫無
暫無

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

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