2

我正在编写包含大量 LaTeX 内容的 R Markdown (.Rmd) 文件。主要模式是 Markdown 模式。但我想要的是:当我尝试$$在再次模式。$$$

LaTeX 的内联格式是

$\alpha$

LaTeX 的方程式(显示数学)格式为

$$
\alpha + \beta
$$

一个类似的例子是当我写一个.Rnw文件时,主要模式是 LaTeX,但是当我编辑 R 代码块时:

<<>>=
y <- 1000
@

<<>>=和之间@,它打开 ESS 模式。

那么任何人都可以帮我在 Markdown-LaTeX 案例中做类似的事情吗?谢谢!


Inaimathi 回答后的更新:

按照http://www.emacswiki.org/emacs/MultipleModes#toc6,我需要修改 two-mode-mode.el

- (if (string= to-mode mode-name)
+ (if (string= to-mode major-mode)

对于 emacs 24

- (make-local-hook 'post-command-hook)

然后,通过 Inaimathi,我将以下内容放入我的.emacs:

(require 'two-mode-mode)
(setq default-mode (list "Markdown" 'markdown-mode)
      second-modes (list (list "LaTeX" "\\\[" "\\\]" 'latex-mode)))

\[然后主模式在和之间切换\]

4

1 回答 1

1

如果您可以在导航时更改主要模式,two-mode-mode则应该能够执行您需要的操作。您需要包含它.el,然后添加一个看起来像这样的块

(require 'two-mode-mode)
(setq default-mode (list "Haskell" 'haskell-mode)
      second-modes (list (list "Markdown" "\[markdown|" "|\]" 'markdown-mode)))

到你的~/.emacs. 以上是我markdown在编辑Elm代码时突出显示块的方法。对于您的特定用例,您可能需要

(require 'two-mode-mode)
(setq default-mode (list "Markdown" 'markdown-mode)
      second-modes (list (list "Latex" "\$\$" "\$\$" 'latex-mode)
                         (list "Latex" "<<>>=" "@" 'latex-mode)))

反而。这是完全未经测试的,不包括保修等。

理想情况下,在这种情况下,我希望缓冲区的其余部分继续markdown-mode突出显示,并且仅突出显示特定区域latex-mode或其他内容。据我所知,目前还没有一个现成的通用解决方案,但如果你准备进行一些 Elisp 黑客攻击,你可以阅读一下,看看你能想出什么。

于 2013-09-09T20:00:02.680 回答