调整配色方案

调整配色方案

目前,部分命令为蓝色(使用 Monokai 主题)。我想在 Sublime Text 3 中打开源代码时,在源代码中对部分命令进行更多强调,类似于效果Emacs 答案中有说明

我安装了PackageResourceViewer插件并打开了LaTeX.sublime-syntax资源。我看到:

  sections:
    - match: |-
        (?x)
        (
          (\\)
          (?:
            (?:sub){0,2}section
            | (?:sub)?paragraph
            | chapter|part|addpart
            | addchap|addsec|minisec
          )
          (?:\*)?
        )
        (?:
          (\[)([^\[]*?)(\])               # optional Title
        )?
        (\{)
      captures:
        1: support.function.section.latex
        2: punctuation.definition.backslash.latex
        3: punctuation.definition.group.brace.begin.latex
        4: entity.name.section.latex
        5: punctuation.definition.group.brace.end.latex
        6: punctuation.definition.group.brace.begin.latex
      push:
        - meta_scope: meta.section.latex
        - meta_content_scope: entity.name.section.latex
        - match: '\}'
          scope: punctuation.definition.group.brace.end.latex
          pop: true
        - include: main

但我不知道该如何进行。

答案1

概述

Sublime Text 样式文件的方式是将语义含义与实际渲染分开。这类似于 LaTeX:您有一个命令\section{...}(指示意图)与实际渲染,也许这\textbf{\huge ...}是一个非常简单的例子。

文件.sublime-syntax仅应附加语义文档各部分的含义(“这是一个部分”),而决定如何在屏幕上呈现内容(“这是粗体”)的工作则属于配色方案.tmThemes文件。(当然,在实践中,事情并不那么清晰,您会在文件中看到两者的混合.sublime-syntax。在理想的世界中,这种情况不会发生。)

因此你有两个选择:

  • 调整语法文件,类似于用 替换每个实例以\section{...}获得\textbf{\huge ...}粗体部分。不推荐,但我将在这里讨论如何做到这一点。

  • 调整配色方案文件,类似于更改定义\section加粗部分。

调整语法

这里我们只需将相关部分改为LaTeX.sublime-syntax例如markup.bold.latex(参见# ...链接以了解有关 Sublime Text 中的作用域名称的讨论)。修改后的行是后面带有注释的行。

sections:
  - match: |-
      (?x)
      (
        (\\)
        (?:
          (?:sub){0,2}section
          | (?:sub)?paragraph
          | chapter|part|addpart
          | addchap|addsec|minisec
        )
        (?:\*)?
      )
      (?:
        (\[)([^\[]*?)(\])
      )?
      (\{)
    captures:
      1: support.function.section.latex
      2: punctuation.definition.backslash.latex
      3: punctuation.definition.group.brace.begin.latex
      4: entity.name.section.latex markup.bold.latex  # this is for the reference [...]
      5: punctuation.definition.group.brace.end.latex
      6: punctuation.definition.group.brace.begin.latex
    push:
      - meta_scope: meta.section.latex
      - meta_content_scope: entity.name.section.latex markup.bold.latex  # this is for the title {...}
      - match: '\}'
        scope: punctuation.definition.group.brace.end.latex
        pop: true
      - include: main

(我保留了旧的范围entity.name.section.latex以防万一依赖它,但放在markup.bold.latex它后面意味着粗体优先于它。)

结果可能会因不同的配色方案而有所不同,例如有些人不明白这是什么markup.bold意思。你提到 Monokai,默认版本不处理markup.bold,但例如Monokai 扩展明白了。

调整配色方案

另一个选择是调整配色方案本身。Sublime Text 中的配色方案是.tmTheme文件,基本上是 xml 文件。它们具有以下结构:

... (preamble stuff)
<plist version="1.0">
<dict>
  <key>name</key> <string>Colour Scheme Name</string>
  <key>settings</key>
  <array>

    <dict>
      <key>settings</key> <dict> ... (general settings) </dict>
    </dict>

    <dict>
      <key>name</key> <string>First Scope Name</string>
      <key>scope</key> <string>first.scope</string>
      <key>settings</key> <dict> ... </dict>
    </dict>

    ...

    <dict>
      <key>name</key> <string>Last Scope Name</string>
      <key>scope</key> <string>last.scope</string>
      <key>settings</key> <dict> ... </dict>
    </dict>

  </array>
</dict>
</plist>

查看默认的内容Monokai.tmTheme,与我们相关的部分是以下条目array

<dict>
  <key>name</key>
  <string>Entity name</string>
  <key>scope</key>
  <string>entity.name - (entity.name.filename | entity.name.section | entity.name.tag | entity.name.label)</string>
  <key>settings</key>
  <dict>
    <key>fontStyle</key>
    <string></string>
    <key>foreground</key>
    <string>#A6E22E</string>
  </dict>
</dict>

这控制了我们的范围所获得的样式entity.name.section.latex。我们可以做的是添加一条专门针对 LaTeX 部分的新规则:

<dict>
  <key>name</key>
  <string>LaTeX section entity name</string>
  <key>scope</key>
  <string>entity.name.section.latex</string>
  <key>settings</key>
  <dict>
    <key>fontStyle</key>
    <string>bold</string>
    <key>foreground</key>
    <string>#A6E22E</string>
  </dict>
</dict>

我不知道这里的顺序是否重要,为了安全起见,我会把它放在<array> ... </array>列表中“实体名称”条目。另外,我不知道是否可以更改字体大小;如果可以要做的话,这里肯定是做这件事的最佳地点。

相关内容