Изменить цветовую схему

Изменить цветовую схему

В настоящее время команды секций окрашены в синий цвет (используя тему 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, но напримерМонокай расширенныйпонимает, делает.

Изменить цветовую схему

Другой вариант — настроить саму цветовую схему. Цветовые схемы в 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>

Если взглянуть на содержимое файла default 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>список .дозапись "Имя сущности". Также я не знаю, можно ли изменить размер шрифта; если этоможетесли это будет сделано, то это, безусловно, будет подходящим местом для этого.

Связанный контент