【问题标题】:org-mode buffer latex syntax highlightingorg-mode 缓冲区 Latex 语法高亮
【发布时间】:2013-06-18 19:45:00
【问题描述】:

我一直在使用 org-mode 发布科学笔记。我发布的大部分内容都是编译后的乳胶代码,我正在寻找一种方法来突出显示 org-mode 缓冲区中的乳胶语法。我遇到了许多使用列出的、铸造的、pygments 等显示已发布的乳胶代码的解决方案。有没有办法在 org-buffer 中显示突出显示的乳胶语法?

【问题讨论】:

  • 您能否举例说明您在组织文档中的含义?
  • 我认为他希望在org-mode 缓冲区中突出显示所有嵌入的乳胶代码(例如\alphaS^3\dots)。
  • 在编辑 LaTeX 块时C-c ' 还不够吗?您想一直看到它突出显示吗?

标签: latex org-mode emacs24


【解决方案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.stackexchangeReddit 中的此答案。

【讨论】:

    【解决方案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 已经允许您这样做。
    猜你喜欢
    • 2018-05-10
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多