bkyk8rc3zvpnsf5inmcqq4n3k98cv6hj-my-site-hyper-literate-git.test.suzanne.soy-0.0.1

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

lang.rkt (2239B)


      1 #lang scheme/base
      2 (require scribble/doclang
      3          (except-in scribble/base author)
      4          scribble/jfp
      5          setup/collects
      6          "../private/defaults.rkt"
      7          net/ftp
      8          racket/file
      9          scribble/latex-prefix
     10          (for-syntax scheme/base))
     11 (provide (except-out (all-from-out scribble/doclang) #%module-begin)
     12          (all-from-out scribble/jfp)
     13          (all-from-out scribble/base)
     14          (rename-out [module-begin #%module-begin]))
     15 
     16 (module test racket/base)
     17 
     18 ;; No options, currently, but keep in case we want to support some:
     19 (define-syntax (module-begin stx)
     20   (syntax-case* stx () (lambda (a b) (eq? (syntax-e a) (syntax-e b)))
     21     [(_ id ws . body)
     22      ;; Skip intraline whitespace to find options:
     23      (and (string? (syntax-e #'ws))
     24           (regexp-match? #rx"^ *$" (syntax-e #'ws)))
     25      #'(module-begin id . body)]
     26     [(_ id . body)
     27      #'(#%module-begin id (post-process) () . body)]))
     28 
     29 (define cls-file
     30   (let ([p (scribble-file "jfp/jfp1.cls")])
     31     (if (file-exists? (collects-relative->path p))
     32         p
     33         (downloaded-file "jfp1.cls"))))
     34 
     35 (define ((post-process) doc)
     36   (add-defaults doc
     37                 (string->bytes/utf-8
     38                  (format "\\documentclass{jfp1}\n~a\\usepackage{times}\n\\usepackage{qcourier}\n~a"
     39                          unicode-encoding-packages
     40                          ;; Avoid a conflict with mathabx:
     41                          "\\let\\amalg\\relax\n"))
     42                 (scribble-file "jfp/style.tex")
     43                 (list cls-file)
     44                 #f
     45                 #:replacements
     46                 (hash "scribble-load-replace.tex" (scribble-file "jfp/replacements.tex"))))
     47 
     48 (unless (or (not (path? cls-file))
     49             (file-exists? cls-file))
     50   (log-error (format "File not found: ~a" cls-file))
     51   (define site "ftp.cambridge.org")
     52   (define path "pub/texarchive/journals/latex/jfp-cls")
     53   (define file "jfp1.cls")
     54   (log-error (format "Downloading via ftp://~a/~a/~a..." site path file))
     55   (define c (ftp-establish-connection site 21 "anonymous" "user@racket-lang.org"))
     56   (ftp-cd c path)
     57   (let-values ([(base name dir?) (split-path cls-file)])
     58     (make-directory* base)
     59     (ftp-download-file c base file))
     60   (ftp-close-connection c))