![ConTeXt: горизонтальное выравнивание с модулем `t-vim`](https://rvso.com/image/461880/ConTeXt%3A%20%D0%B3%D0%BE%D1%80%D0%B8%D0%B7%D0%BE%D0%BD%D1%82%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B2%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D1%81%20%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B5%D0%BC%20%60t-vim%60.png)
Возможно ли горизонтальное выравнивание 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
Существует два способа интерпретации выравнивания по центру для блоков кода:
- Выровнять каждую строку по центру
- Выровняйте по центру весь блок кода
Первое не имеет смысла для кодов. По этой причине код в 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
Обратите внимание, что у кода выше есть недостаток, который больше не может разбиваться на страницы. Можно сделать обертку, которая будет разбиваться на страницы, но это сложнее. Я не совсем понимаю, где это может понадобиться, но если таковой имеется, я могу показать, как это сделать.