Automatically convert some unicode characters to their LaTeX command
This commit is contained in:
parent
9a515b72f4
commit
f761999a1b
10
dollar.rkt
10
dollar.rkt
|
@ -6,7 +6,9 @@
|
||||||
scribble/latex-properties
|
scribble/latex-properties
|
||||||
scriblib/render-cond
|
scriblib/render-cond
|
||||||
racket/runtime-path
|
racket/runtime-path
|
||||||
setup/collects)
|
setup/collects
|
||||||
|
"katex-convert-unicode.rkt"
|
||||||
|
racket/list)
|
||||||
|
|
||||||
(provide $
|
(provide $
|
||||||
$$
|
$$
|
||||||
|
@ -190,13 +192,15 @@ EOTEX
|
||||||
(make-element math-inline-style-mathjax `("$" ,@strs "$")))
|
(make-element math-inline-style-mathjax `("$" ,@strs "$")))
|
||||||
|
|
||||||
(define ($-katex strs)
|
(define ($-katex strs)
|
||||||
(make-element math-inline-style-katex strs))
|
(make-element math-inline-style-katex
|
||||||
|
(map katex-convert-unicode (flatten strs))))
|
||||||
|
|
||||||
(define ($$-mathjax strs)
|
(define ($$-mathjax strs)
|
||||||
(make-element math-display-style-mathjax `("\\[" ,@strs "\\]")))
|
(make-element math-display-style-mathjax `("\\[" ,@strs "\\]")))
|
||||||
|
|
||||||
(define ($$-katex strs)
|
(define ($$-katex strs)
|
||||||
(make-element math-display-style-katex strs))
|
(make-element math-display-style-katex
|
||||||
|
(map katex-convert-unicode (flatten strs))))
|
||||||
|
|
||||||
(define $-html-handler (make-parameter $-katex))
|
(define $-html-handler (make-parameter $-katex))
|
||||||
(define $$-html-handler (make-parameter $$-katex))
|
(define $$-html-handler (make-parameter $$-katex))
|
||||||
|
|
95
katex-convert-unicode.rkt
Normal file
95
katex-convert-unicode.rkt
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
#lang racket/base
|
||||||
|
(require racket/string)
|
||||||
|
|
||||||
|
(provide katex-convert-unicode)
|
||||||
|
|
||||||
|
(define (literal-alternatives→regexp literal-alternatives)
|
||||||
|
(string-append "("
|
||||||
|
(string-join (map regexp-quote literal-alternatives) "|")
|
||||||
|
")"))
|
||||||
|
|
||||||
|
(define (string-replace* str sym→*)
|
||||||
|
(define →* (map (λ (x)
|
||||||
|
(cons (symbol->string (car x))
|
||||||
|
(cadr x)))
|
||||||
|
sym→*))
|
||||||
|
(define hash→* (make-immutable-hash →*))
|
||||||
|
(regexp-replace* (literal-alternatives→regexp (map car →*))
|
||||||
|
str
|
||||||
|
(λ (found . _)
|
||||||
|
(hash-ref hash→* found))))
|
||||||
|
|
||||||
|
(define (katex-convert-unicode str)
|
||||||
|
(if (string? str)
|
||||||
|
(string-replace*
|
||||||
|
str
|
||||||
|
'([₀ "_0"]
|
||||||
|
[₁ "_1"]
|
||||||
|
[₂ "_2"]
|
||||||
|
[₃ "_3"]
|
||||||
|
[₄ "_4"]
|
||||||
|
[₅ "_5"]
|
||||||
|
[₆ "_6"]
|
||||||
|
[₇ "_7"]
|
||||||
|
[₈ "_8"]
|
||||||
|
[₉ "_9"]
|
||||||
|
[ᵢ "_i"]
|
||||||
|
[ⱼ "_j"]
|
||||||
|
[ₖ "_k"]
|
||||||
|
[ₗ "_l"]
|
||||||
|
[ₘ "_m"]
|
||||||
|
[ₙ "_n"]
|
||||||
|
[ₒ "_o"]
|
||||||
|
[⁰ "^0"]
|
||||||
|
[¹ "^1"]
|
||||||
|
[² "^2"]
|
||||||
|
[³ "^3"]
|
||||||
|
[⁴ "^4"]
|
||||||
|
[⁵ "^5"]
|
||||||
|
[⁶ "^6"]
|
||||||
|
[⁷ "^7"]
|
||||||
|
[⁸ "^8"]
|
||||||
|
[⁹ "^9"]
|
||||||
|
[ⁱ "^i"]
|
||||||
|
[ʲ "^j"]
|
||||||
|
[ᵏ "^k"]
|
||||||
|
[ˡ "^l"]
|
||||||
|
[ᵐ "^m"]
|
||||||
|
[ⁿ "^n"]
|
||||||
|
[ᵒ "^o"]
|
||||||
|
[⊆ "\\subseteq" "\\ensuremath{\\subseteq}"]
|
||||||
|
[⊂ "\\subset" "\\ensuremath{\\subset}"]
|
||||||
|
[⊇ "\\supseteq" "\\ensuremath{\\supseteq}"]
|
||||||
|
[⊃ "\\supset" "\\ensuremath{\\supset}"]
|
||||||
|
[→ "\\rightarrow" "\\ensuremath{\\rightarrow}"]
|
||||||
|
[⇒ "\\Rightarrow" "\\ensuremath{\\Rightarrow}"]
|
||||||
|
[← "\\leftarrow" "\\ensuremath{\\leftarrow}"]
|
||||||
|
[⇐ "\\Leftarrow" "\\ensuremath{\\Leftarrow}"]
|
||||||
|
[↔ "\\leftrightarrow" "\\ensuremath{\\leftrightarrow}"]
|
||||||
|
[⇔ "\\Leftrightarrow" "\\ensuremath{\\Leftrightarrow}"]
|
||||||
|
;; Partially extracted from my .XCompose generator
|
||||||
|
[ñ "\\tilde{n}" "{\\ifmmode\\tilde{n}\\else\\~{n}\\fi}"]
|
||||||
|
[Ñ "\\tilde{N}" "{\\ifmmode\\tilde{N}\\else\\~{N}\\fi}"]
|
||||||
|
[⋆ "\\star" "\\ensuremath{\\star}"]
|
||||||
|
[⍣ "\\ddot{\\star}}" "\\ensuremath{\\ddot{\\star}}"]
|
||||||
|
[⃰ "^*" "^*"]
|
||||||
|
[⟨ "\\langle" "\\ensuremath{\\mathsmaller{\\raisemath{.15ex}{\\langle}}}"]
|
||||||
|
[⟩ "\\rangle" "\\ensuremath{\\mathsmaller{\\raisemath{.15ex}{\\rangle}}}"]
|
||||||
|
[⋯ "\\cdots"]
|
||||||
|
[⋮ "\\vdots"]
|
||||||
|
[⋰ "\\iddots"]
|
||||||
|
[⋱ "\\ddots"]
|
||||||
|
[⧺ "\\mathbin{+\\mkern-6.5mu+}" "\\ensuremath{\\mathbin{+\\mkern-6.5mu+}}"]
|
||||||
|
[∅ "\\emptyset" "\\ensuremath{\\emptyset}"]
|
||||||
|
[ı⃗ "\\vec{\\i}}" "\\ensuremath{\\vec{\\i}"]
|
||||||
|
[⊕ "\\oplus" "\\ensuremath{\\oplus}"]
|
||||||
|
[⊖ "\\ominus" "\\ensuremath{\\ominus}"]
|
||||||
|
[⋓ "\\Cup" "\\ensuremath{\\Cup}"]
|
||||||
|
;[ₗ "\\ensuremath{_{l}}"]
|
||||||
|
[∷ "::"]
|
||||||
|
[Λ "\\Lambda" "\\ensuremath{\\Lambda}"]
|
||||||
|
[∀ "\\forall"]
|
||||||
|
[∃ "\\exists"]
|
||||||
|
[≡ "\\equiv"]
|
||||||
|
[≢ "\not\\equiv"]))
|
||||||
|
str))
|
Loading…
Reference in New Issue
Block a user