Org-Mode中的FlySpell识别LaTeX语法,就像AUCTeX一样。

6

原始回复: 我试图弄清楚在auctex模式下,当flyspell打开时,latex似乎不会突出显示任何latex函数。这是一个自定义的字典文件还是如何实现的?这可以轻松地并入org-mode文件中,以便不会突出显示将要导出的插入的latex代码。

编辑: 从文件顶部和文本中提取的简单示例。基本上,像ref或label这样的latex语法在{}内部不会被拼写检查(通过使用(setq ispell-parser tex)进行修复)。然后设置一个函数,指定以#+作为第一行文本的标签不会被检查。我想要检查标题,但不是#+LABEL:或#+TYP_TODO:(未显示)。还有一种方法是添加TODO关键字以避免检查。如果它们尚未存在于文件底部的LOCALWORDS: ispell中,则可以考虑在启动时将它们添加到该位置,但是否有更简单或更好的方法来做到这一点呢?

#+TAGS: NOTE REPORT export noexport MEETING
#+TYP_TODO: TODO Weekly WAITING NEXT | Meeting DONE
#+STARTUP: hidestars content hideblocks

The exponential running mean is shown for various alpha values in Figure \ref{fig:saturation_varying_alphaval_00f6set2}.  
     #+CAPTION:    Plot of varying alpha values for the exponential running mean ($EM$) with $S_{min} = 0.0008 \text{ and } P_m = 0.20$
     #+LABEL:      fig:saturation_varying_alphaval_00f6set2
     #+ATTR_LaTeX: width=0.4\textwidth placement=[h!tb]

请问您能否在您的org-mode文件中添加一些有关所讨论的Latex代码的示例? - legoscia
2个回答

3

flyspell 内部使用 ispell-mode。要更改 ispell 解析文件的方式,请将变量 ispell-parser 设置为 'tex

(add-hook 'org-mode-hook (lambda () (setq ispell-parser 'tex)))

2
很可能auctex正在使用flyspell-mode-predicate来定义不应该进行拼写检查的缓冲区部分。(这个答案展示了如何在MoinMoinWiki中做类似的事情。)org-mode已经有一个这样的函数,org-mode-flyspell-verify,但显然对您来说无法正常工作...快速查看源代码表明,对于包含代码示例等内容的缓冲区部分,应调用org-remove-flyspell-overlays-in

抱歉回答得不够详细; 将此标记为社区wiki以邀请改进。


没关系,那确实有帮助,但是不知道为什么不能删除缓冲区顶部的像#+TYP_TODO这样的关键字。我认为任何以这种格式或标记为标签的内容都应该被忽略。至少从我的角度来看,这也是org-mode-flyspell-verify所说的。它确实可以确保不会在链接中叠加拼写错误,这让我觉得函数正在正确地工作,它也确实如此说明。下面的答案很好地解决了识别tex的问题,只是好奇是否有人专门为org实现了某些东西。 - J Spen
1
需要仔细查看那段代码,因为当elisp变得非常复杂时,我不完全确定发生了什么,因为我并不是非常熟练。我认为将其更新为#+应该很容易,但我需要一个关键字列表,以便它不会检查到后面的内容。如果我能从中弄清楚如何做到这一点,我会保持更新。 - J Spen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接