You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Yasnippet实现LaTeX数学模式的切换与文本处理

Yasnippet实现LaTeX数学模式智能切换

优化现有行内数学模式片段

你现有的行内数学模式片段可以简化,直接将触发键绑定为$即可:

# name: inline-math
# key: $
# binding: $
# --\\\(${1:math}\\)$0

实现数学模式智能切换(类似TeXstudio宏功能)

Yasnippet支持嵌入Elisp代码,通过编写逻辑可以检测光标周围的数学环境并完成切换。创建一个名为math-toggle.yasnippet的片段,内容如下:

# name: math-toggle
# key: $
# binding: $
# --`(let* ((pos (point))
#           (left (buffer-substring-no-properties (- pos 2) pos))
#           (right (buffer-substring-no-properties pos (+ pos 2)))
#           (inside-inline (and (string= left "\\(") (string= right "\\)")))
#           (inside-display (and (string= left "\\[") (string= right "\\]"))))
#     (cond
#       (inside-inline
#        (delete-region (- pos 2) (+ pos 2))
#        (insert "\\[" "${1:math}" "\\]")
#        (backward-char 1))
#       (inside-display
#        (delete-region (- pos 2) (+ pos 2))
#        (insert "\\(" "${1:math}" "\\)")
#        (backward-char 1))
#       (t
#        (insert "\\(" "${1:math}" "\\)")
#        (backward-char 1))))`$0

逻辑说明

  • 通过Elisp获取光标位置,读取前后各两个字符,判断是否处于\(\)或\[\]环境中
  • 如果在\(\)内:删除原环境,替换为\[\],并将光标定位到数学内容的编辑位置
  • 如果在\[\]内:删除原环境,替换为\(\),同样定位光标到编辑位置
  • 如果不在任何数学环境:插入\(\)行内数学模式,光标定位到内容编辑处

使用方法

将上述片段文件放到你的Yasnippet LaTeX模式目录下(通常是~/.emacs.d/snippets/latex-mode/),重启Emacs或重新加载Yasnippet即可生效。按下$键时,会根据当前环境自动切换或插入数学模式。

内容的提问来源于stack exchange,提问作者Frank William Hammond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 18:16:11