ConTeXt: alineación horizontal con módulo `t-vim`

ConTeXt: alineación horizontal con módulo `t-vim`

¿Es posible alinear horizontalmente t-vimlos bloques de código del módulo?

Lo intenté \{start|stop}alignementasí

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

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

y conalign=middle

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

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

Ambos resultados fueron como este resultado:

ingrese la descripción de la imagen aquí

también lo he comprobadola documentaciónyel código fuentepero no pude encontrar nada más. ¿Me he perdido algo?

Respuesta1

Hay dos formas de interpretar la alineación intermedia de los bloques de código:

  1. Alinee cada línea en el medio
  2. Alinear en medio el bloque de código completo

El primero no tiene sentido para los códigos. Por esa razón, el código t-vimincluye un explícito \raggedright, de modo que la configuración de alineación exterior no afecta la forma en que se escribe el código.

Si desea alinear en medio el bloque de código completo, simplemente puede envolverlo \framedy centrarlo en el marco.

\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

Tenga en cuenta que el código anterior tiene el inconveniente de que ya no puede dividirse entre páginas. Es posible tener un envoltorio que se rompa entre páginas, pero es más complicado. No entiendo muy bien un caso de uso en el que será necesario, pero si hay alguno, puedo mostrar cómo hacerlo.

información relacionada