Racket 如何链接到过程的Scribble文档中的别名?

Racket 如何链接到过程的Scribble文档中的别名?,racket,documentation,scribble,Racket,Documentation,Scribble,在为函数编写Scribble文档时,我想链接到一个内置函数,该函数与同一Scribble文件中记录的不同函数同名。通常可用于此目的(与类似区分文档名称空间中的两个函数的功能一起使用),但当链接需要位于表单的arguments部分时,这似乎不起作用。例如: @defproc[(my-proc [f procedure? b:compose]) any/c]{ A procedure similar to @racketlink[b:compose]{compose}. }

在为函数编写Scribble文档时,我想链接到一个内置函数,该函数与同一Scribble文件中记录的不同函数同名。通常可用于此目的(与类似区分文档名称空间中的两个函数的功能一起使用),但当链接需要位于表单的arguments部分时,这似乎不起作用。例如:

@defproc[(my-proc [f procedure? b:compose])
         any/c]{

 A procedure similar to @racketlink[b:compose]{compose}.

}

注意上面
b:compose
的两个用法。指向
b:compose
的后一个链接仅呈现为
compose
(如预期),但如果我在前一个实例(参数块中)中尝试相同的代码,它将呈现为
(racketlink b:compose“compose”)
。如何在
defproc
arguments块中“转义”内容的文字处理?这与Scribble的“内容”和“预内容”的概念以及“解码”的过程有什么关系吗?

@racket[\u]
@defproc[\u]
,等等的形式让你可以使用
(读作
非语法的
)来摆脱代码排版环境。所以你应该能够把你的例子写成

@defproc[(my-proc [f procedure? #, @racketlink[b:compose]{compose})
         any/c]{ .... }
请注意
#、
@
之间的空格,这是防止读取器将整个序列作为
非同步拼接读取所需的空格。由于
@
读取器与读取器缩略语(如
#,
)的交互方式,您还可以将组合编写为
@、


将预内容(或预流等)转换为内容(或流等)的解码步骤是不相关的。请参阅。

这很有效。不过,有一件事是,在这种情况下,呈现的
compose
被排版为普通文本(例如,使用衬线字体),而不是代码。对此我们能做些什么吗?实际上,这似乎是
racketlink
的正常行为,而不是它在这里的用法(在本例中,当被代码包围时,它更为明显)。我把
@racketlink[b:compose]{@racket[compose]}
嵌套在它里面,把它排版成代码,我假设
@racketlink
@racket
的替代品,目的是让我们可以链接到不同的源代码,而不是它自己的源代码,但我想情况并非如此,自动链接独立于使用
@racket
标签排版。