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

请注意,上述代码有一个缺点,即代码不能再跨页面中断。可以有一个跨页面中断的包装,但这更复杂。我不太明白需要这样做的用例,但如果有的话,我可以展示如何做到这一点。

相关内容