[英]Emacs/Auctex: Automatically enabling/disabling LaTeX-Math-mode
[英]Disabling input method inside a math formula in Emacs with AUCTeX
我正在使用Emacs 24.3.1和AUCTeX 11.87用俄語鍵入數學文檔。 我正在使用russian-computer
輸入法鍵入俄語。 在數學定界符(例如\\( \\)
禁用此輸入方法將非常方便,這樣在公式內部,我無需按Ctrl- \\即可自動切換為鍵入英語。 例如,我可以鍵入“Рассмотримформулу\\(\\)”(“考慮公式\\(\\)”),將點放在括號之間,然后開始輸入\\forall
。 當前,我將輸入\\ащкфдд
,但我希望Emacs能夠識別出我在公式中並關閉了俄語輸入法。
我懷疑這可以使用texmathp
post-self-insert-hook
和texmathp
來完成,但是我不確定這是否是最優雅的方法。
我在http://lists.gnu.org/archive/html/help-gnu-emacs/2009-08/msg00200.html找到了解決問題的方法,該代碼幾乎可以按預期工作。 但是缺點是不能在數學定界符之外從俄語切換到英語。
此功能可以完成工作:在英語和當前輸入法之間切換。
(defun LaTeX-dynamic-input-method-toggle-maybe ()
(when (or (and current-input-method
(texmathp))
(and (not current-input-method)
(not (texmathp))))
(toggle-input-method)))
“定義次要模式,以便可以方便地啟用/禁用此行為。次要模式將上面的函數放在“后命令掛鈎”上,以便每次執行某項操作(例如,移動點)時都會調用上面的函數)。”
(define-minor-mode LaTeX-dynamic-input-method
"Dynamically disable input-method in math-mode."
nil nil nil
(if LaTeX-dynamic-input-method
(add-hook 'post-command-hook 'LaTeX-dynamic-input-method-toggle-maybe nil t)
(remove-hook 'post-command-hook 'LaTeX-dynamic-input-method-toggle-maybe t)))
在LaTeX模式下啟用該模式。
(add-hook 'LaTeX-mode-hook 'LaTeX-dynamic-input-method)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.