Optimieren Sie das Farbschema

Optimieren Sie das Farbschema

Derzeit sind die Abschnittsbefehle blau eingefärbt (unter Verwendung des Monokai-Themas). Ich möchte den Abschnittsbefehlen im Quellcode beim Öffnen in Sublime Text 3 mehr Bedeutung verleihen, ähnlich dem Effektdargestellt in der Emacs-Antwort.

Ich habe das PackageResourceViewerPlugin installiert und LaTeX.sublime-syntaxdie Ressource geöffnet. Ich sehe:

  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

Aber ich weiß nicht, wie ich weitermachen soll.

Antwort1

Überblick

Sublime Text formatiert Dateien so, dass die semantische Bedeutung von der tatsächlichen Darstellung getrennt wird. Dies ist ähnlich wie bei LaTeX: Sie haben einen Befehl \section{...}, der die Absicht angibt, im Gegensatz zur tatsächlichen Darstellung, vielleicht \textbf{\huge ...}um ein sehr einfaches Beispiel zu nennen.

Eine .sublime-syntaxDatei soll nur angehängt werdenSemantikBedeutung für Teile eines Dokuments („das ist ein Abschnitt“), während die Aufgabe, zu entscheiden, wie Dinge auf dem Bildschirm dargestellt werden („das ist fett“), den Farbschemadateien obliegt .tmThemes. (Natürlich sind die Dinge in der Praxis nicht so sauber, und Sie werden in den Dateien eine Mischung aus beidem sehen .sublime-syntax. In einer perfekten Welt würde das nicht passieren.)

Sie haben also zwei Möglichkeiten:

  • Optimieren Sie die Syntaxdatei, indem Sie jedes Vorkommen von \section{...}durch ersetzen \textbf{\huge ...}, um fettgedruckte Abschnitte zu erhalten. Nicht empfohlen, aber ich werde hier darüber sprechen, wie Sie es tun können.

  • Optimieren Sie die Farbschemadatei, analog zum Ändern derDefinitionvon \sectionum Abschnitte fett hervorzuheben.

Optimieren Sie die Syntax

Hier ersetzen wir einfach die relevanten Teile von LaTeX.sublime-syntaxdurch zB markup.bold.latex(sieheDasLink für eine Diskussion über Bereichsnamen in Sublime Text). Die geänderten Zeilen sind diejenigen mit Kommentaren # ...dahinter.

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

(Ich habe den alten Bereich entity.name.section.latexbeibehalten, für den Fall, dass Dinge davon abhängen, aber wenn ich markup.bold.latexihn dahinter setze, hat die Fettschrift Vorrang davor.)

Die Ergebnisse können (werden) bei verschiedenen Farbschemata variieren, zum Beispiel verstehen manche nicht, was markup.boldbedeutet. Sie erwähnen Monokai, die Standardversion verarbeitet nicht markup.bold, aber zum BeispielMonokai erweitertversteht, tut.

Optimieren Sie das Farbschema

Die andere Möglichkeit besteht darin, das Farbschema selbst zu optimieren. Farbschemata in Sublime Text sind .tmThemeDateien, im Grunde XML-Dateien. Sie haben diese Art von Struktur:

... (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>

Wenn wir uns den Inhalt der Standardeinstellung ansehen Monokai.tmTheme, ist der für uns relevante Teil dieser Eintrag in der 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>

Dies steuert den Stil unseres entity.name.section.latexBereichs. Wir können eine neue Regel einfügen, die sich speziell an LaTeX-Abschnitte richtet:

<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>

Ich weiß nicht, ob die Reihenfolge hier wichtig ist, zur Sicherheit würde ich dies in die <array> ... </array>Liste aufnehmenVorder Eintrag "Entitätsname". Außerdem weiß ich nicht, ob es möglich ist, die Schriftgröße zu ändern; wenn esdürfengetan werden muss, dann ist dies sicherlich der richtige Ort dafür.

verwandte Informationen