簡體   English   中英

使用AUCTeX在Emacs中禁用數學公式中的輸入法

[英]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-hooktexmathp來完成,但是我不確定這是否是最優雅的方法。

我在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.

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