ConTeXt 中的内联逐字文本

ConTeXt 中的内联逐字文本

我正在尝试使用 ConTeXt 内联排版一些 TeX 代码。在 LaTeX 中,可以\verb处理这个问题,但我在 ConTeXt 中找不到等效方法。

在 Wiki 中,有一些建议代码:

\def\typeTEX
  {\bgroup
   \def\processinlineverbatim##1%
     {\processingverbatimtrue
      \localcatcodestrue
      \def\endofverbatimcommand{\TEXendofcommand##1}%
      \bgroup
      \aftergroup\endofverbatimcommand
      \futurelet\next\doprocessinlineverbatim}%
   \initializetyping{TEX}%
   \startverbatimcolor
   \processinlineverbatim\egroup }

但是,当我尝试使用它时,出现此错误:

tex error       > tex error on line 34 in file /.../xyz.tex: ! Undefined control sequence


\typeTEX ...cessinlineverbatim }\initializetyping 
                                                  {TEX}\startverbatimcolor \...

我不知道它的\initializetyping作用是什么,也不知道是否需要它。如果我删除它,我会收到相同的消息,等等\startverbatimcolor。这个宏似乎不可用。还有其他选择吗?

答案1

对于内联输入代码,您可以使用\type,如下所述这里在 wiki 上。它可以用作:

  • \type[optional arg]{content with balanced braces}
  • \type[optional arg]<<content not containing the string ">>" anywhere>>
  • \type[optional arg]|content not containing the string "|" anywhere|

(在这里的第三种情况下,您可以使用几乎任何单个字符作为分隔符,而不仅仅是|,就像 LaTeX\verb允许的那样。)可选参数[...](如果给出)应该是键值对的列表:有效选项正是那些\setuptype理解 (这里在 wiki 上)。根据我机器上的安装,

ConTeXt  ver: 2017.06.30 19:45 MKIV beta  fmt: 2017.7.5

您可以传递的选项\type是:

color   = COLOR
command = CSNAME
compact = absolute last (all)
escape  = yes (no) TEXT PROCESSOR->TEXT
left    = COMMAND
lines   = yes (no) normal hyphenated
option  = mp lua xml parsed-xml nested tex context none NAME
right   = COMMAND
space   = on (off) normal fixed stretch
tab     = (yes) no NUMBER

我模仿了 wiki 的风格,并使用括号(...)来表示默认值。

\type如果你发现自己一次又一次地传递相同的选项,那么你可能会发现\definetype有用的是这里在 wiki 上。它的工作方式与\define...ConTeXt 中的所有样式命令相同。

为了模仿 Taco 的\typeTEX宏(仅适用于 MKII),你可以定义一个新的type,如下所示

\definetype
  [typeTEX]
  [option=tex]

\starttext

\typeTEX!\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX}!

\stoptext

这将对 的内容应用 TeX 语法高亮显示\typeTEX

相关内容