ConTeXt:使用 t-vim 内联代码高亮

ConTeXt:使用 t-vim 内联代码高亮

我正在尝试在 ConTeXt 文档中插入代码,因此我尝试使用 vimtyping 模块。它适用于文本块,但不适用于内联文本,因为它会生成新行。这是我的 MWE:

\setuppapersize[A5][A5]
\usemodule[vim]
\definevimtyping[python][
  syntax=python,
  strip=yes,
  tab=4,
  margin=2em,
  before={\blank[samepage,line]},
  after={\blank[line]},
]

\starttext
The block works
\startpython
  def function(foo):  # test
      a = foo
      return(foo**a)
\stoppython
But the inline writing of \inlinepython{def function} makes new lines.
\stoptext

是否有一个选项我需要激活才能使用此模块内联宏?

答案1

您可以使用spacebeforespaceafter键来设置空间。

这不是一个错误,而是由于默认配置错误造成的。只有当您使用...时,才会使用before和值;当您使用 时,才会使用和键。after\start<vim-typing>\stop<vim-typing>\inline<vim-typing>leftright

但是,在中t-filter,我已经定义:

\c!left=\externalfilterparameter\c!before,
\c!right=\externalfilterparameter\c!after,

left因此,和的默认值与和 的默认值right相同。因此,为了避免错误行为,请添加:beforeafter

\definevimtyping[python]
   [
     ...,
     left=,
     right=,
   ]

因此leftright键被设置为空。

注意:实际上,我已经修复了这个错误一会儿回来,但是 modules.contextgarden.net 已关闭;所以我无法更新发行版中的模块。

相关内容