Racket 如何链接到过程的Scribble文档中的别名?
在为函数编写Scribble文档时,我想链接到一个内置函数,该函数与同一Scribble文件中记录的不同函数同名。通常可用于此目的(与类似区分文档名称空间中的两个函数的功能一起使用),但当链接需要位于表单的arguments部分时,这似乎不起作用。例如: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}. }
@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
标签排版。