ConTeXt: alinhamento horizontal com módulo `t-vim`

ConTeXt: alinhamento horizontal com módulo `t-vim`

É possível alinhar horizontalmente t-vimos blocos de código do módulo?

Eu tentei \{start|stop}alignementassim

\usemodule[vim]
\definevimtyping[python][syntax=python]

\starttext
    \startalignment[middle]
        \startpython
            print("Hello, world!")
        \stoppython
    \stopalignment
\stoptext

e comalign=middle

\usemodule[vim]
\definevimtyping[python][syntax=python, align=middle]

\starttext
    \startpython
        print("Hello, world!")
    \stoppython
\stoptext

Ambos os resultados foram assim:

insira a descrição da imagem aqui

Eu também verifiqueia documentaçãoeo código fontemas não consegui encontrar mais nada. Perdi algo?

Responder1

Existem duas maneiras de interpretar o alinhamento intermediário para blocos de código:

  1. Alinhe ao meio cada linha
  2. Alinhe ao meio o bloco de código completo

O primeiro não faz sentido para códigos. Por esse motivo, o código t-viminclui um explícito \raggedright, para que a configuração do alinhamento externo não afete a forma como o código é composto.

Se você deseja alinhar o bloco de código completo ao meio, basta envolvê-lo em um \framedquadro e centralizá-lo.

\usemodule[vim]

\defineframed[PYTHONframed][align=normal,frame=off]

\definevimtyping
  [python]
  [
    syntax=python,
    before={\blank\midaligned\bgroup\PYTHONframed\bgroup},
    after={\egroup\egroup\blank},
  ]

\starttext
\starttext
    \startpython
        for x = 1 upto 10:
            print("Hello, world!")
    \stoppython
\stoptext
\stoptext

Observe que o código acima tem a desvantagem de não poder mais quebrar as páginas. É possível quebrar as páginas, mas é mais complicado. Não entendo muito bem um caso de uso em que isso será necessário, mas se houver, posso mostrar como fazer isso.

informação relacionada