org-mode 缓冲区 Latex 语法高亮
Posted
技术标签:
【中文标题】org-mode 缓冲区 Latex 语法高亮【英文标题】:org-mode buffer latex syntax highlighting 【发布时间】:2013-06-18 19:45:00 【问题描述】:我一直在使用 org-mode 发布科学笔记。我发布的大部分内容都是编译后的乳胶代码,我正在寻找一种方法来突出显示 org-mode 缓冲区中的乳胶语法。我遇到了许多使用列出的、铸造的、pygments 等显示已发布的乳胶代码的解决方案。有没有办法在 org-buffer 中显示突出显示的乳胶语法?
【问题讨论】:
您能否举例说明您在组织文档中的含义? 我认为他希望在org-mode
缓冲区中突出显示所有嵌入的乳胶代码(例如\alpha
、S^3
、\dots
)。
在编辑 LaTeX 块时C-c '
还不够吗?您想一直看到它突出显示吗?
【参考方案1】:
变量org-highlight-latex-and-related
允许您
突出显示内联数学。但是,LaTeX 片段只会以单面突出显示。
来自org-highligh-latex-and-related
的文档:
Non-nil means highlight LaTeX related syntax in the buffer.
When non nil, the value should be a list containing any of the
following symbols:
`latex' Highlight LaTeX snippets and environments.
`script' Highlight subscript and superscript.
`entities' Highlight entities.
例如:
(setq org-highlight-latex-and-related '(latex script entities))
面部org-latex-and-related
用于字体化LaTeX 片段。
【讨论】:
这不会突出显示内联数学,例如 $v\in V$。有没有办法实现这样的高亮? @AlwaysLearning 我确实观察到 $v \in V$ 被突出显示。您使用的是哪个组织模式版本? 版本 9.0.7。除了设置org-highlight-latex-and-related
,我还需要设置什么吗?另外,会不会有冲突?
我只是检查了我的配置,并没有更改任何其他与乳胶相关的组织模式选项。我的版本是 9.0.9,但这已经工作了很长时间。您是否启用了任何其他可能影响 Org 模式行为的字体锁定选项?如果没有,您可能希望在 Org 模式邮件列表中发布您的问题。
即使使用emacs -q
打开.org
文件然后评估(setq org-highlight-latex-and-related '(latex script entities))
,我也遇到了这个问题。【参考方案2】:
您可以将latex fragments 附在#+BEGIN_LaTeX latex
和#+END_LaTex latex
中以突出显示它们。它与逐字导出的source blocs (#+BEGIN_SRC LaTeX
....) 不同(正如您提到的那样,可能通过 pygments 突出显示)。
它适用于环境(方程式、对齐...):
据我所知,它不适用于内联数学(如果你将整个段落括起来但你失去了使用 org-mode 的意义...)
来源:emacs.stackexchange 和 Reddit 中的此答案。
【讨论】:
【参考方案3】:将以下内容放入您的 .emacs 配置文件中:
;; fontify code in code blocks
(setq org-src-fontify-natively t)
PS- 我不明白它默认没有启用。
【讨论】:
我已经将该变量设置为 true,并且当我的乳胶代码包含在 #+BEGIN_SRC latex #+END_SRC latex 中时,它会正确突出显示。但是我想编译乳胶代码,而不是将其显示为源代码。【参考方案4】:您可能想尝试这样的事情。
(font-lock-add-keywords 'org-mode
'(("\\(\\\\cite\\)" . font-lock-keyword-face)
("\\[[0-9]+]" . font-lock-type-face)
("\\s-*[a-zA-Z]+[0-9]+[a-z]" . font-lock-constant-face)))
(font-lock-add-keywords 'org-mode
'(("\\(\\\\citep\\)" . font-lock-keyword-face)))
(font-lock-add-keywords 'org-mode
'(("\\(\\\\citet\\)" . font-lock-keyword-face)))
(font-lock-add-keywords 'org-mode
'(("\\(\\\\citealp\\)" . font-lock-keyword-face)))
(font-lock-add-keywords 'org-mode
'(("\\(\\\\citeauthor\\)" . font-lock-keyword-face)))
(font-lock-add-keywords 'org-mode
'(("\\(\\\\citeyear\\)" . font-lock-keyword-face)))
http://www.emacswiki.org/emacs/AddKeywords http://www.emacswiki.org/emacs/RegularExpression
【讨论】:
如果您在已经打开一个要字体化的缓冲区时评估这些命令,则必须执行 Mx revert-buffer 或 Mx normal-mode 以使它们在已经打开的情况下生效缓冲区。 虽然这通常是您添加字体的方式,但这是完全没有必要的,因为 org-mode 已经允许您这样做。以上是关于org-mode 缓冲区 Latex 语法高亮的主要内容,如果未能解决你的问题,请参考以下文章
如何为 Org-mode 内联源代码 src_lang 语法高亮?
同一文件中多种语言的语法高亮显示:StatWeave/SAS/LaTeX