3

假设我在文件 example.scrbl 上运行 scribble:

    scribble example.scrbl

我想以编程方式在文件本身内部找出正在处理的文件(在本例中为 example.scrbl)的路径,或者至少是名称。我以为会

    (vector-ref 0 (current-command-line-arguments))

但这不起作用。实际上, (current-command-line-arguments) 返回空向量。什么是正确的方法?我想要一个返回字符串“example.scrbl”的函数。

4

2 回答 2

4

正如我最近在博客中提到的,您可以使用它(syntax-source #'here)来获取当前源文件的路径名。

要使其适应 Scribble,您只需:

  1. 使用 at 表达式。
  2. 将 Scribble转换path为 a string

所以:

#lang scribble/manual

This Scribble file is @(path->string (syntax-source #'here)).
于 2014-06-26T03:18:41.517 回答
2

您可以使用以下命令获取路径(没有文件名),而无需显式使用语法元素runtime-path

#lang racket
(require racket/runtime-path)

(define-runtime-path here (simplify-path (build-path 'same)))

(displayln here)
于 2014-06-27T10:37:34.013 回答