調整配色方案

調整配色方案

目前,該部分命令的顏色為藍色(使用 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-syntaxeg 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>清單中“實體名稱”條目。另外,不知道是否可以改變字體大小;如果它如果要做的話,那麼這肯定就是做這件事的地方。

相關內容