[英]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.