Racket 如何获取当前.scrbl文件的路径?
假设我正在example.scrbl文件上运行scribble:Racket 如何获取当前.scrbl文件的路径?,racket,scribble,Racket,Scribble,假设我正在example.scrbl文件上运行scribble: scribble example.scrbl 我想以编程方式在文件本身中找出正在处理的文件(在本例中为.scrbl)的路径,或者至少是名称。 我以为会的 (vector-ref 0 (current-command-line-arguments)) 但这是行不通的。实际上,(当前命令行参数)返回空向量。 正确的方法是什么?我想要一个返回字符串“example.scrbl”的函数。正如我最近所做的那样,您可以使用
scribble example.scrbl
我想以编程方式在文件本身中找出正在处理的文件(在本例中为.scrbl)的路径,或者至少是名称。
我以为会的
(vector-ref 0 (current-command-line-arguments))
但这是行不通的。实际上,(当前命令行参数)返回空向量。
正确的方法是什么?我想要一个返回字符串“example.scrbl”的函数。正如我最近所做的那样,您可以使用(这里是语法源)
来获取当前源文件的路径名
要使其适应涂鸦,您只需:
路径
转换为用于涂鸦的字符串
非常感谢。但是源的位置不一定是
example.scrbl
。我在example.scrbl
的顶部有require
语句。我的所有程序都在那里定义。例如,我在example.scrbl
的顶部有(require helper.rkt)
。我在该文件helper.rkt
中定义了许多过程。在定义这些过程时,我可以调用当前命令行参数
,这将为我提供有关如何调用scribble
的信息(例如,如果是单页或多页)。但是,当前命令行参数
不会报告.scrbl
文件本身的名称。您最初的问题是,“我想找出文件本身内部正在以编程方式处理的文件(在本例中为.scrbl)的路径,或者至少是名称。”(我的重点)。这就是我展示的。如果你有不同的问题,我很抱歉,但我无法从你的评论中找出它是什么。也许你可以编辑你的问题来显示你到底想要什么?你是对的。似乎没有现成的解决办法。我想我必须写一个宏。
#lang scribble/manual
This Scribble file is @(path->string (syntax-source #'here)).
#lang racket
(require racket/runtime-path)
(define-runtime-path here (simplify-path (build-path 'same)))
(displayln here)