我越来越喜欢electric-quote-mode
Emacs,因为它是一种在文档中获取弯曲引号的便捷方式。但是,我似乎无法让它与 AUCTeX 或 BibTeX 模式配合使用。
我知道 AUCTeX 有自己的引号插入支持,这非常先进,可以与 babel 等交互。但我是一名csquotes
用户,在我的序言中写道:
\usepackage[autostyle]{csquotes}
\MakeAutoQuote{“}{”}
\MakeAutoQuote*{‘}{’} % innerquotes
.emacs
相应地,在我的(use-package
的下:custom
)中有:
(LaTeX-csquotes-open-quote "“")
(LaTeX-csquotes-close-quote "”")
(LaTeX-csquotes-quote-after-quote nil)
我那里也有:
(custom-set-variables
...
'(electric-quote-mode t)
...
)
AUCTeX 对引号的支持当然是有效的,但也有一些不便之处。首先,它使用不同的键盘键来插入引号(AUCTeX 使用双引号,而使用电子引号模式时,其他所有引号都使用反引号)。其次,我似乎找不到插入弯曲单引号的方法。第三,在 BibTeX 模式下,这两种方法都不起作用。
很长一段时间以来,我都认为这个问题与我的文档中被 AUCTeX 解析的某些内容有关。事实上,打开一个空白缓冲区并手动更改为可以LaTeX-mode
让我获得一个具有有效电子报价模式的缓冲区。但是,在进一步测试后,我认为情况并非如此。请考虑以下最小文档:
\documentclass{article}
\begin{document}
\end{document}
如果我让 AUCTeX 解析该文档,将产生以下内容auto/test.el
:
(TeX-add-style-hook
"test"
(lambda ()
(TeX-run-style-hooks
"latex2e"
"article"
"art10"))
:latex)
然后重新打开它,electric-quote-mode
不再起作用(反引号键插入一个普通的反引号)。
我认为一个可能的冲突源是数学模式前缀,默认情况下它映射到反引号键。但我通常不启用它LaTeX-math-mode
,即使设置LaTeX-math-abbrev-prefix
为,"'"
我仍然无法让电子报价模式工作。
self-insert-command
在检查反引号的键映射(Ch k 反引号)时,我发现它在 LaTeX 模式和 BibTeX 模式下都有映射。
关于为什么会失败以及如何使其工作,您有什么想法吗?
答案1
顺便说一下,我能够通过调试我的初始化文件来解决 AUCTeX 的这个问题,并且通过更好地掌握 来找到 BibTeX 的解决方法electric-quote-mode
。
至于 AUCTeX 的问题,罪魁祸首是我在转移到 时use-package
在初始化文件中添加了以下内容:
(use-package latex
:ensure auctex
:mode ("\\.tex\\'" . TeX-latex-mode)
... etc ...)
我真的不记得为什么我把它设置为TeX-latex-mode
。我实际上已经研究了很多关于将 AUCTeX 移到use-package
,也许太多了......
事实是:
(use-package latex
:ensure auctex
:mode ("\\.tex\\'" . LaTeX-mode)
... etc ...)
或者更简单:
(use-package latex
:ensure auctex
:defer t
... etc ...)
完成工作,并且正常工作electric-quote-mode
。我不知道为什么会出现这个问题,但是它解决了它。
至于BibTeX模式,问题在于electric-quote-mode
,根据的状态分别为,和(默认情况下,前两个为,第三个为),它被设计为仅在段落、注释electric-quote-paragraph
和electric-quote-comment
字符串electric-quote-string
中t
起作用nil
。
我不知道 Emacs 将 BibTeX 缓冲区视为什么(甚至不在条目之外,电子引号有效)。但是,这建议了以下解决方法。我可以用 注释感兴趣的行C-x C-;。注释该行后,就可以正常electric-quote
工作。我根据需要编辑该行,然后使用 取消注释C-x C-;。当然,这不是最理想的,但对于标题包含引号的最终情况来说应该足够了,这是我能想到的唯一需要这样做的实际情况。
我留下这个答案,以防有人遇到同样的麻烦。但是,如果有谁对这些事情的内部运作有更多了解,愿意对问题所在提供实际解释,我很乐意接受。