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 PackageResourceViewer
Plugin installiert und LaTeX.sublime-syntax
die 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-syntax
Datei 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
\section
um Abschnitte fett hervorzuheben.
Optimieren Sie die Syntax
Hier ersetzen wir einfach die relevanten Teile von LaTeX.sublime-syntax
durch 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.latex
beibehalten, für den Fall, dass Dinge davon abhängen, aber wenn ich markup.bold.latex
ihn dahinter setze, hat die Fettschrift Vorrang davor.)
Die Ergebnisse können (werden) bei verschiedenen Farbschemata variieren, zum Beispiel verstehen manche nicht, was markup.bold
bedeutet. 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 .tmTheme
Dateien, 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.latex
Bereichs. 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.