制作tex高精度计算表,使用racket预处理tex
tex自身的计算功能较弱,遂引入racket作预处理。
在tex编制表格后,在当中嵌入racket命令行,形成标记段落,之后可选用perl或其它语言提取标志的段落,此处我仍选用racket来完成。
提取完标记段落,再其中提出需要计算的表达式,并送往racket完成计算。接着再用racket把计算结果填写回源单元格内,格式保持原有格式。一次循环完成一个单元格的提出、计算、回写。
代码如下:
#lang racket
(define in-port (open-input-file "d:\\05.tex"))
; (define mzz (read-line in-port))
(for ([i 10])
;(printf "i=~a\n" i) ;测试点
(define (mzz[i]) (read-line in-port))
;(regexp-match #rx"/schb (.*) /sche" mzz)
; (define qzz (cdr (regexp-match #rx"/schb (.*) /sche" mzz)))
;(eval-string (car (cdr (regexp-match #rx"/schb (.*) /sche" mzz)))) )
(define resu (number->string
(eval-string (car (cdr (regexp-match #rx"/schb (.*) /sche" mzz))))
(regexp-replace #rx"/schb (.*) /sche" mzz resu)
(define cz (regexp-replace #rx"/schb (.*) /sche" mzz resu))
(call-with-output-file "d:\\som.txt"
(lambda (out)
;(write cz1 out)))
;(write cz out)))
(display cz out))
)
)
2020年6月2日18:04:31