ConTeXt: горизонтальное выравнивание с модулем `t-vim`

ConTeXt: горизонтальное выравнивание с модулем `t-vim`

Возможно ли горизонтальное выравнивание t-vimблоков кода модуля?

Я пробовал \{start|stop}alignementвот так

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

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

и сalign=middle

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

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

Оба результата были похожи на этот вывод:

введите описание изображения здесь

Я также проверилдокументацияиисходный кодно больше ничего не нашла. Я что-то пропустила?

решение1

Существует два способа интерпретации выравнивания по центру для блоков кода:

  1. Выровнять каждую строку по центру
  2. Выровняйте по центру весь блок кода

Первое не имеет смысла для кодов. По этой причине код в t-vimвключает явный \raggedright, так что внешние настройки выравнивания не влияют на то, как код набирается.

Если вы хотите выровнять по центру весь блок кода, то вы можете просто обернуть его в \framedрамку и поместить ее в центр.

\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

Обратите внимание, что у кода выше есть недостаток, который больше не может разбиваться на страницы. Можно сделать обертку, которая будет разбиваться на страницы, но это сложнее. Я не совсем понимаю, где это может понадобиться, но если таковой имеется, я могу показать, как это сделать.

Связанный контент