我正在尝试使用 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
。