Ajuste o esquema de cores

Ajuste o esquema de cores

Atualmente os comandos da seção são coloridos em azul (usando o tema Monokai). Gostaria de dar mais ênfase aos comandos de seccionamento no código-fonte quando abertos no Sublime Text 3, semelhante ao efeitoilustrado na resposta do Emacs.

Instalei o PackageResourceViewerplugin e abri LaTeX.sublime-syntaxo recurso. Eu vejo:

  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

Mas não sei como proceder.

Responder1

Visão geral

A forma como os arquivos de estilo do Sublime Text separam o significado semântico e a renderização real. Isso é semelhante ao LaTeX: você tem um comando \section{...}—indicando a intenção—em vez da renderização real, talvez \textbf{\huge ...}para um exemplo muito simples.

Um .sublime-syntaxarquivo só deve ser anexadosemânticosignificado para partes de um documento ("isto é uma seção"), enquanto o trabalho de decidir como renderizar as coisas ("isto está em negrito") na tela pertence aos .tmThemesarquivos de esquema de cores. (É claro que na prática as coisas não são tão claras e você verá uma mistura dos dois nos .sublime-syntaxarquivos. Em um mundo perfeito isso não aconteceria.)

Então você tem duas opções:

  • ajuste o arquivo de sintaxe, de forma análoga a substituir todas as instâncias de \section{...}por \textbf{\huge ...}para obter seções em negrito. Não recomendado, mas falarei sobre como você pode fazer isso aqui.

  • ajustar o arquivo do esquema de cores, de forma análoga a alterar odefiniçãode \sectionpara encorajar seções.

Ajuste a sintaxe

Aqui nós simplesmente mudamos as partes relevantes de LaTeX.sublime-syntaxpara, por exemplo markup.bold.latex, (vejaesselink para uma discussão sobre nomes de escopo em Sublime Text). As linhas alteradas são aquelas com comentários # ...depois delas.

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

(Eu mantive o escopo antigo entity.name.section.latexcaso as coisas dependam dele, mas colocá-lo markup.bold.latexdepois significa que o negrito tem prioridade sobre ele.)

Os resultados podem (irão) variar entre diferentes esquemas de cores, por exemplo, alguns não entendem o que markup.boldsignifica. Você mencionou Monokai, a versão padrão não suporta markup.bold, mas por exemploMonokai estendidoentende faz.

Ajuste o esquema de cores

A outra opção é ajustar o próprio esquema de cores. Os esquemas de cores no Sublime Text são .tmThemearquivos, basicamente arquivos xml. Eles têm esse tipo de estrutura:

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

Dando uma olhada no conteúdo do default Monokai.tmTheme, a parte relevante para nós é esta entrada no 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>

Isto é o que controla o estilo que nosso entity.name.section.latexescopo obtém. O que podemos fazer é criar uma nova regra direcionada especificamente às seções 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>

Não sei se a ordem é importante aqui, por segurança colocaria isso na <array> ... </array>listaantesa entrada "Nome da entidade". Além disso, não sei se é possível alterar o tamanho da fonte; Se issopodeser feito, então este seria certamente o lugar para fazê-lo.

informação relacionada