emacs / AuCTeX 和 itemize

emacs / AuCTeX 和 itemize

我在 Emacs 的 AucTex 模式下遇到了分项列表中的换行符问题。如果我遇到此问题,C-c C-e RET itemize RET我预计会出现以下情况

\begin{itemize}
   \item 
\end{itemize}

而是得到

\begin{itemize}\item 
\end{itemize}

此外,当我C-c C-j在项目末尾执行此操作时,它只会给我一个新的,\item而不会让我进入新的一行。因此,C-h k C-c C-j显示

C-c C-j runs the command LaTeX-insert-item, which is an interactive
compiled Lisp function in `latex.el'.

It is bound to C-c C-j, M-RET, <menu-bar> <LaTeX> <Item>.

(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.

那么,我的 LaTeX-insert-item 似乎出了问题?我该如何恢复正确的C-c C-j行为?

答案1

步骤 1:完全关闭 Emacs 并重新启动。如果问题是由您无意中更改某些设置/变量引起的,这将解决问题。

第 2 步:如果这不起作用:

注释掉 .emacs 中的所有内容除了用于加载 AUCTeX 的行。在我的例子中,该行是:

(load "auctex.el" nil t t)

命令

M-;

将注释掉活动区域中的所有内容。如果该区域已被注释,它还将取消注释该区域中的所有内容,因此您需要使用它而不是手动添加一大堆 ;;。

按照步骤 2,您应该有一个未修改的 Emacs + AUCTeX 版本,因此您应该恢复正确的行为。这将确认问题是您的 .emacs 文件中与 AUCTeX 冲突的内容。如果问题仍然存在,则可能是 AUCTeX 中的一个错误,尽管对于如此常用的功能来说,这种情况似乎不太可能发生。

步骤 3:取消注释更多 .emacs,然后重新启动。如果问题再次出现,则是由现在取消注释的代码引起的。如果没有,请重复该过程,直到找到触发问题的代码。

步骤4:自己解决问题,或者就您发现的导致冲突的具体代码提出另一个问题。

答案2

我知道这是一个老问题,但我最近遇到了同样的问题。

根据 Tyler 的建议,我发现问题出(setq comment-auto-fill-only-comments t)在我的 init.el 中。此行位于 内emacs-lisp-mode-hook,但变量是全局设置的。设置comment-auto-fill-only-commentnil或使其成为缓冲区本地(到其他缓冲区)可以解决这个问题。

我还发现了线在 AUCTeX 邮件列表中讨论了这个问题。

答案3

我发现这个先前的问题我曾经问过一个非常类似的问题。

建议补充:

(defadvice LaTeX-insert-item (around my-LaTeX-insert-item activate)
     (let  ((LaTeX-insert-into-comments nil)) ad-do-it))

到 .emacs

这解决了问题。

相关内容