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
|
||||
scriblib/render-cond
|
||||
racket/runtime-path
|
||||
setup/collects)
|
||||
setup/collects
|
||||
"katex-convert-unicode.rkt"
|
||||
racket/list)
|
||||
|
||||
(provide $
|
||||
$$
|
||||
|
@ -190,13 +192,15 @@ EOTEX
|
|||
(make-element math-inline-style-mathjax `("$" ,@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)
|
||||
(make-element math-display-style-mathjax `("\\[" ,@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))
|
||||
|
|
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