如何获取当前.scrbl文件的路径?

时间:2014-06-25 21:35:48

标签: racket scribble

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

    scribble example.scrbl

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

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

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

2 个答案:

答案 0 :(得分:4)

我最近blogged about您可以使用(syntax-source #'here)获取当前源文件的路径名。

要使其适应Scribble,您只需:

  1. 使用at-expressions。
  2. 将Scribble的path转换为string
  3. 所以:

    #lang scribble/manual
    
    This Scribble file is @(path->string (syntax-source #'here)).
    

答案 1 :(得分:2)

您可以使用runtime-path获取路径(没有文件名)而不使用语法元素:

#lang racket
(require racket/runtime-path)

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

(displayln here)