我正在编写包含大量LaTeX内容的R Markdown(.Rmd)文件。主要模式是Markdown-mode。但我想要的是:当我尝试在$$
之间键入一些LaTeX命令时,我想自动打开LaTeX主模式,并在我用$$
或{{1}结束LaTeX块之后它可以关闭LaTeX主模式并再次打开Markdown模式。
LaTeX的内联格式是
$
LaTeX的等式(displaymath)格式为
$\alpha$
类似的例子是当我写一个$$
\alpha + \beta
$$
文件时,主要模式是LaTeX,但是当我编辑R时
代码块:
.Rnw
在<<>>=
y <- 1000
@
和<<>>=
之间,它会启用ESS模式。
那么有人可以帮我在Markdown-LaTeX案件中做类似的事吗?谢谢!
Inaimathi回答后的更新:
关注http://www.emacswiki.org/emacs/MultipleModes#toc6,我需要修改two-mode-mode.el
@
和emacs 24
- (if (string= to-mode mode-name)
+ (if (string= to-mode major-mode)
然后,通过Inaimathi,我将以下内容放在我的- (make-local-hook 'post-command-hook)
:
.emacs
然后主要模式在(require 'two-mode-mode)
(setq default-mode (list "Markdown" 'markdown-mode)
second-modes (list (list "LaTeX" "\\\[" "\\\]" 'latex-mode)))
和\[
之间切换。
答案 0 :(得分: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
。以上是我在编辑Elm代码时突出显示markdown
块的操作。对于您的特定用例,您可能需要
(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黑客,你可以给this读一读,看看你能想出什么。