在 AUCTeX 中跳过对某些宏进行拼写检查的适当方法

在 AUCTeX 中跳过对某些宏进行拼写检查的适当方法

我想跳过对包中的宏\acrshort(也\acrlong\acrfull)内部的检查glossaries

我尝试了以下邮报,我在宏方面取得了一些成功\cite...(为了完整性,我将其列在下面)

;; https://tex.stackexchange.com/a/150882/37198
(setq ispell-tex-skip-alists
  (list
   (append
(car ispell-tex-skip-alists) 
'(
  ("[^\\]\\$" . "[^\\]\\$")
     ("\\\\textcite"     ispell-tex-arg-end)
     ("\\\\parencite"    ispell-tex-arg-end)
     ("\\\\footcite"     ispell-tex-arg-end)
     ("\\\\fullcite"     ispell-tex-arg-end)
     ("\\\\citetitle"    ispell-tex-arg-end)
     ("\\\\citep"        ispell-tex-arg-end)
     ("\\\\cites"        ispell-tex-arg-end)
     ("\\\\eqref"        ispell-tex-arg-end)
     ("\\\\acrshort" ispell-tex-arg-end)
     ("\\\\acrlong" ispell-tex-arg-end)
     ("\\\\acrfull" ispell-tex-arg-end)
  ;; ("\\\\operatorname\\*"       ispell-tex-arg-end)
  ;; ("\\\\operatorname"       ispell-tex-arg-end)
  ;; ("\\\\mycommadtwo"    ispell-tex-arg-end 2)
  ;; add as many lines like the previous two as you need before the "))"  
  ))
   (cadr ispell-tex-skip-alists)))

但它不起作用,也就是说,\acrshort仍然没有跳过内部检查。但下面的方法确实有效,

(eval-after-load "tex-ispell"
  '(progn
 (TeX-ispell-skip-setcar
  '(
    ("\\\\acrshort" ispell-tex-arg-end)
    ("\\\\acrlong" ispell-tex-arg-end)
    ("\\\\acrfull" ispell-tex-arg-end)
    ))
  ;; (TeX-ispell-skip-setcdr
  ;;  '(("myverbatim" . "\\\\end{myverbatim}")))
))

我不太明白为什么会发生这种情况。

我检查了变量ispell-tex-skip-alists,区别在于前一种方法将零件放在("\\\\acrshort" ispell-tex-arg-end)列表中间,而后一种方法(成功)将零件放在列表开头。有没有更合适或更推荐的方法?非常感谢!

相关内容