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,因此外部對齊設定不會影響程式碼的排版方式。

如果您想將完整的程式碼區塊居中對齊,那麼您只需將其包裝在 a 中\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

請注意,上面的程式碼有一個缺點,就是程式碼無法再跨頁面中斷。換行可能會跨頁,但比較複雜。我不太明白需要這樣做的用例,但如果有的話,我可以展示如何做到這一點。

相關內容