hyper-literate/collects/slatex/slatex-code/batconfg.scm
Robby Findler 9e5d391dfb ...
original commit: 66a62c2f50bd2b8c85867be3e415c6a0b3881f20
2000-05-25 15:55:50 +00:00

207 lines
7.5 KiB
Scheme

;batconfg.scm;-*-scheme-*-
;Configures SLaTeX batfile/shellscript (Scheme version)
;(c) Dorai Sitaram, Rice U., 1991, 1994
(display "Beginning configuring command script -- wait...")
(newline)
(define dialect 'forward)
(define *op-sys* 'forward)
(define scheme-pathname 'forward)
(define slatex-pathname 'forward)
(define texinputs 'forward)
(define texinputs-list 'forward)
(define accepts-echo 'forward)
(define accepts-cmdline-file 'forward)
(define accepts-initfile 'forward)
(define system-procedure #f)
(call-with-input-file "config.dat"
(lambda (ip)
(set! dialect (read ip))
(set! *op-sys* (read ip))
(set! scheme-pathname (read ip))
(set! slatex-pathname (read ip))
(set! texinputs (read ip))
(set! texinputs-list (read ip))
(set! accepts-echo (read ip))
(set! accepts-cmdline-file (read ip))
(set! accepts-initfile (read ip))
(cond ((or (eof-object? dialect)
(eof-object? *op-sys*)
(eof-object? scheme-pathname)
(eof-object? slatex-pathname)
(eof-object? texinputs)
(eof-object? texinputs-list)
(eof-object? accepts-echo)
(eof-object? accepts-cmdline-file)
(eof-object? accepts-initfile))
(error "config.dat has too few answers"))
((eof-object? (read ip)) #t)
(else (error "config.dat has too many answers")))))
(case dialect
((bigloo chez cscheme guile mzscheme scm stk)
(set! system-procedure 'system)))
(define bat-file 'forward)
(case *op-sys*
((os2 os2bat)
(set! bat-file "slatex.cmd"))
((windows dos)
(set! bat-file "slatex.bat"))
((unix)
(set! bat-file "slatex")))
;(if (memq *op-sys* '(unix windows dos os2fat os2)) ;why here?
(if (memq dialect '(bigloo chez cscheme guile mzscheme pcsge scm))
(if (file-exists? bat-file)
(delete-file bat-file)))
(define modified-newline newline)
(cond ((and (eq? dialect 'mzscheme)
(memq *op-sys* '(windows dos)))
(set! modified-newline
(let ((cr (integer->char 13))
(lf (integer->char 10)))
(lambda (o)
(display cr o)
(display lf o))))))
(define princn
(lambda (x o)
(display x o)
(modified-newline o)))
(call-with-output-file bat-file
(lambda (o)
(case *op-sys*
((unix)
(cond (accepts-echo
(princn "echo '" o)
(display "(load " o)
(write slatex-pathname o)
(princn ")" o)
(display "(set! slatex::*texinputs* " o)
(write texinputs o)
(princn ")" o)
(display "(set! slatex::*texinputs-list* `" o)
(write texinputs-list o)
(princn ")" o)
(display "(slatex::process-main-tex-file \"'$1'\")' | " o)
(princn scheme-pathname o))
(accepts-cmdline-file
(display "echo '(load " o)
(write slatex-pathname o)
(princn ")' > Zslatex.jnk" o)
(display "echo '(set! slatex::*texinputs* " o)
(write texinputs o)
(princn ")' >> Zslatex.jnk" o)
(display "echo '(set! slatex::*texinputs-list* `" o)
(write texinputs-list o)
(princn ")' >> Zslatex.jnk" o)
(princn "echo '(slatex::process-main-tex-file \"'$1'\")' >> Zslatex.jnk" o)
(princn "echo '(slatex::exit-scheme)' >> Zslatex.jnk" o)
(display scheme-pathname o)
(display " " o)
(display accepts-cmdline-file o)
(princn " Zslatex.jnk" o)
(princn "rm -f Zslatex.jnk" o))
(accepts-initfile
(display "echo '(load " o)
(write slatex-pathname o)
(display ")' > " o)
(princn accepts-initfile o)
(display "echo '(set! slatex::*texinputs* " o)
(write texinputs o)
(display ")' >> " o)
(princn accepts-initfile o)
(display "echo '(set! slatex::*texinputs-list* (quote " o)
(write texinputs-list o)
(display ")' >> " o)
(princn accepts-initfile o)
(display "echo '(slatex::process-main-tex-file \"'$1'\")' >> " o)
(princn accepts-initfile o)
(princn scheme-pathname o)
(display "rm -f " o)
(princn accepts-initfile o)))
(princn "if test -f pltexchk.jnk" o)
(princn "then tex $1; rm pltexchk.jnk" o)
(princn "else latex $1" o)
(princn "fi" o))
((windows dos os2fat os2)
(princn "@echo off" o)
(cond (accepts-echo
(display "echo (load " o)
(write slatex-pathname o)
(princn ") > Zslatex.jnk" o)
(display "echo (set! slatex::*texinputs* " o)
(write texinputs o)
(princn ") >> Zslatex.jnk" o)
(display "echo (set! slatex::*texinputs-list* '" o)
(write texinputs-list o)
(princn ") >> Zslatex.jnk" o)
(princn "echo (slatex::process-main-tex-file \"%1\") >> Zslatex.jnk" o)
(princn "echo (slatex::exit-scheme) >> Zslatex.jnk" o)
(display "echo (load \"Zslatex.jnk\") | " o)
(princn scheme-pathname o)
(princn "del Zslatex.jnk" o))
(accepts-cmdline-file
(display "echo (load " o)
(write slatex-pathname o)
(princn ") > Zslatex.jnk" o)
(display "echo (set! slatex::*texinputs* " o)
(write texinputs o)
(princn ") >> Zslatex.jnk" o)
(display "echo (set! slatex::*texinputs-list* '" o)
(write texinputs-list o)
(princn ") >> Zslatex.jnk" o)
(princn "echo (slatex::process-main-tex-file \"%1\") >> Zslatex.jnk" o)
(princn "echo (slatex::exit-scheme) >> Zslatex.jnk" o)
(display scheme-pathname o)
(display " " o)
(display accepts-cmdline-file o)
(display " Zslatex.jnk" o)
(princn "del Zslatex.jnk" o))
(accepts-initfile
(display "echo (load " o)
(write slatex-pathname o)
(display ") > " o)
(princn accepts-initfile o)
(display "echo (set! slatex::*texinputs* " o)
(write texinputs o)
(display ") >> " o)
(princn accepts-initfile o)
(display "echo (set! slatex::*texinputs-list* '" o)
(write texinputs-list o)
(display ") >> " o)
(princn accepts-initfile o)
(display "echo (slatex::process-main-tex-file \"%1\") >> " o)
(princn accepts-initfile o)
(display "echo (slatex::exit-scheme) >> " o)
(princn accepts-initfile o)
(princn scheme-pathname o)
(display "del " o)
(princn accepts-initfile o)))
(princn "if exist pltexchk.jnk goto one" o)
(princn "goto two" o)
(princn ":one" o)
(princn "call tex %1" o)
(princn "del pltexchk.jnk" o)
(princn "goto end" o)
(princn ":two" o)
(princn "call latex %1" o)
(princn ":end" o)))))
(display "Finished configuring batfile/shellscript")
(newline)
(if (eq? *op-sys* 'unix)
(case system-procedure
((system) (system "chmod +x slatex"))
(else
(display "Type (chmod +x slatex) on Unix command line")
(newline))))