配色を微調整する

配色を微調整する

現在、セクションコマンドは青色になっています(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

概要

\section{...}Sublime Text がファイルをスタイル設定する方法は、意味論的な意味と実際のレンダリングを分離することです。これは LaTeX に似ています。つまり、非常に単純な例ですが、意図を示すコマンドと実際のレンダリングがあります\textbf{\huge ...}

ファイルは.sublime-syntax添付のみを目的としていますセマンティックドキュメントの各部分に意味を与える ("これはセクションです") 一方、画面上でどのようにレンダリングするか ("これは太字です") を決定する作業はカラー スキーム.tmThemesファイルに属します。 (もちろん、実際には物事はそれほどきれいではなく、ファイル内で 2 つが混在しているのが見られます.sublime-syntax。完璧な世界では、これは起こりません。)

したがって、2 つの選択肢があります。

  • 構文ファイルを調整します。これは、 のすべてのインスタンスを に置き換えて太字のセクションを取得するのと似ています\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が、例えばモノカイエクステンデッド理解します。

配色を微調整する

もう一つの選択肢は、カラー スキーム自体を微調整することです。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>ます前に「エンティティ名」のエントリ。また、フォントサイズを変更できるかどうかはわかりません。できるもしそれが実現できるなら、ここが間違いなくそれを実現する場所となるでしょう。

関連情報