(defun grading-help ()
"Help set things up."
(interactive)
(setq grading-papers-dir default-directory)
(setq grading-scores-dir
(expand-file-name
"grades"
(file-name-directory
(directory-file-name
default-directory))))
(grading-preprocess)
(setq grading-current-paper (cons (car grading-student-list) 0)))
(defun grading-merge ()
"Merge the grading with the student paper."
(interactive)
(let ((result-dir
(expand-file-name
"results"
(file-name-directory
(directory-file-name
grading-scores-dir)))))
(mapc
(lambda (name)
(let ((student-paper
(directory-files
grading-papers-dir t
(rx-to-string bos (eval name) (1+ any) ".pdf" eos) t 1)
;; (expand-file-name
;; (concat name ".pdf")
;; grading-papers-dir)
)
(grade-paper
(expand-file-name
(concat name ".pdf")
grading-scores-dir))
(result-paper
(expand-file-name
(concat name ".pdf")
result-dir)))
(cond
((= (length student-paper) 1)
(setq student-paper (car student-paper)))
((user-error "Cannot find paper for %s" name)))
(cond
((and (file-exists-p grade-paper)
(not (file-exists-p result-paper)))
(start-process
(format "merge-%s" name)
(get-buffer-create
(format "*grading-merge %s*" name))
"gs"
"-sDEVICE=pdfwrite" "-dCompatibilityLevel=1.4"
"-dPDFSETTINGS=/default" "-dNOPAUSE" "-dQUIET" "-dBATCH"
"-dDetectDuplicateImages" "-dCompressFonts=true" "-r150"
(format "-sOutputFile=%s" result-paper)
student-paper grade-paper result-paper)))))
grading-student-list)))