From c70b36609c3b642160d433209cd3a119aa32f4c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georges=20Dup=C3=A9ron?= Date: Tue, 22 Mar 2016 18:53:26 +0100 Subject: [PATCH] Fixed compilation errors. Commented out tests that don't pass due to FB case 137. --- graph-lib/graph/__DEBUG_graph6.rkt | 146 ---------------- graph-lib/graph/structure.lp2.rkt | 46 ++--- graph-lib/lib/doc.rkt | 16 +- graph-lib/lib/doc/example.lp2.rkt | 3 +- graph-lib/lib/doc/math.rkt | 6 +- graph-lib/lib/doc/unicode-chars.sty.rkt | 219 ++++++++++++++++++++++++ 6 files changed, 260 insertions(+), 176 deletions(-) create mode 100644 graph-lib/lib/doc/unicode-chars.sty.rkt diff --git a/graph-lib/graph/__DEBUG_graph6.rkt b/graph-lib/graph/__DEBUG_graph6.rkt index f7bd2988..eea3f2ed 100644 --- a/graph-lib/graph/__DEBUG_graph6.rkt +++ b/graph-lib/graph/__DEBUG_graph6.rkt @@ -125,149 +125,3 @@ -#;(begin - (define-graph - grr31/first-step - #:definitions - ((define-type-expander - (~> stx) - (syntax-parse - stx - ((_ (~datum m-cities)) (template (U (grr31/first-step #:placeholder m-cities4/node) (Listof (grr31/first-step #:placeholder City))))) - ((_ (~datum m-streets)) (template (U (grr31/first-step #:placeholder m-streets5/node) (Listof (grr31/first-step #:placeholder Street))))))) - (define-type-expander (first-step-expander2 stx) (syntax-parse stx ((_ (~datum m-cities)) #'(U m-cities4/node (Listof City))) ((_ (~datum m-streets)) #'(U m-streets5/node (Listof Street)))))) - (City (streets : (Let (~> first-step-expander2) (~> m-streets))) ((City2/simple-mapping (streets : (~> m-streets))) (City streets))) - (Street (sname : (Let (~> first-step-expander2) String)) ((Street3/simple-mapping (sname : String)) (Street sname))) - (m-cities4/node - (returned : (Listof City)) - ((m-cities (cnames : (Listof (Listof bubble)))) - (m-cities4/node (let ((City City2/simple-mapping) (Street Street3/simple-mapping)) (define (strings→city (s : (Listof blob))) (City (m-streets s))) (map strings→city cnames))))) - (m-streets5/node (returned : (Listof Street)) ((m-streets (snames : (Listof String))) (m-streets5/node (let ((City City2/simple-mapping) (Street Street3/simple-mapping)) (map Street snames)))))) - -(define-graph - grr3 - #:definitions - ((define-type-expander (~>-to-result-type stx) (syntax-parse stx ((_ (~datum m-cities)) #'(Listof City)) ((_ (~datum m-streets)) #'(Listof Street)))) - (define-type m-cities10/node-marker (U (grr31/first-step m-cities4/node) (Listof (grr31/first-step City)))) - (define-type m-streets11/node-marker (U (grr31/first-step m-streets5/node) (Listof (grr31/first-step Street)))) - (define-type-expander (second-step-marker-expander stx) (syntax-parse stx ((_ (~datum m-cities)) #'m-cities10/node-marker) ((_ (~datum m-streets)) #'m-streets11/node-marker))) - (define-type second-step-m-cities16/node-of-first (grr31/first-step m-cities4/node)) - (define-type second-step-m-streets17/node-of-first (grr31/first-step m-streets5/node)) - (define-type second-step-City18-of-first (grr31/first-step City)) - (define-type second-step-Street19-of-first (grr31/first-step Street)) - (define-type-expander - (second-step-marker2-expander stx) - (syntax-parse - stx - ((_ (~datum m-cities)) #'(U second-step-m-cities16/node-of-first (Listof (grr31/first-step City)))) - ((_ (~datum m-streets)) #'(U second-step-m-streets17/node-of-first (Listof (grr31/first-step Street)))))) - (define-type-expander - (inline-type* stx) - (dbg - ("inline-type" stx) - (syntax-parse - stx - ((_ i-tyy (~and seen (:id …))) - (define/with-syntax replt (replace-in-type #'(Let (~> second-step-marker2-expander) i-tyy) #'((City second-step-City18-of-first) (Street second-step-Street19-of-first)))) - #'(inline-type replt seen))))) - (define-type-expander - (inline-type stx) - (dbg - ("inline-type" stx) - (syntax-parse - stx - ((_ i-t (~and seen (:id …))) - (let ((seen-list (syntax->list #'seen))) - (when (and (not (null? seen-list)) (member (car seen-list) (cdr seen-list) free-identifier=?)) - (raise-syntax-error - 'define-graph/rich-returns - (~a "Cycles in types are not allowed." " The following types were already inlined: " (syntax->datum #'seen) ", but " #'t " appeared a second time.") - #'t))) - (replace-in-type - #'(Let ((~> second-step-marker-expander)) i-t) - #'((m-cities10/node-marker (inline-type (Listof City) (m-cities4/node . seen))) - (m-streets11/node-marker (inline-type (Listof Street) (m-streets5/node . seen))) - (second-step-City18-of-first (grr3 #:placeholder City)) - (second-step-Street19-of-first (grr3 #:placeholder Street)))))))) - (define-syntax (inline-instance* stx) - (dbg - ("inline-instance*" stx) - (syntax-parse - stx - ((_ i-ty seen) - (define/with-syntax replt (replace-in-type #'(Let (~> second-step-marker2-expander) i-ty) #'((City second-step-City18-of-first) (Street second-step-Street19-of-first)))) - (displayln (list "replt=" #'replt)) - #'(inline-instance replt seen))))) - (define-syntax (inline-instance stx) - (dbg - ("inline-instance" stx) - (syntax-parse - stx - ((_ i-t (~and seen (:id …))) - (define/with-syntax typp #'i-t) - (define/with-syntax - repl - (replace-in-instance - #'typp - #'((second-step-m-cities16/node-of-first (inline-type* (Listof City) (m-cities4/node . seen)) (grr31/first-step #:? m-cities4/node) (inline-instance* (Listof City) (m-cities4/node . seen))) - (second-step-m-streets17/node-of-first (inline-type* (Listof Street) (m-streets5/node . seen)) (grr31/first-step #:? m-streets5/node) (inline-instance* (Listof Street) (m-streets5/node . seen))) - (second-step-City18-of-first (grr3 #:placeholder City) (grr31/first-step #:? City) City6/extract/mapping) - (second-step-Street19-of-first (grr3 #:placeholder Street) (grr31/first-step #:? Street) Street7/extract/mapping)))) - (displayln (list "i-t=" #'typp)) - (let ((seen-list (syntax->list #'seen))) - (when (and (not (null? seen-list)) (member (car seen-list) (cdr seen-list) free-identifier=?)) - (raise-syntax-error - 'define-graph/rich-returns - (~a "Cycles in types are not allowed." " The following types were already inlined: " (syntax->datum #'seen) ", but " #'t " appeared a second time.") - #'t))) - #'(λ ((x : i-t)) repl (error "NIY2"))))))) - (City (streets : (Let (~> ~>-to-result-type) (~> m-streets))) - ((City6/extract/mapping (from : (grr31/first-step City))) - (City - ;((inline-instance* (~> m-streets) ()) (get from streets)) - #;((inline-instance - (U - second-step-m-streets17/node-of-first - (Listof - grr31/first-step:Street2/promise-type)) - ()) - (get from streets)) - ((λ ((x : (U second-step-m-streets17/node-of-first (Listof (grr31/first-step Street))))) - (λ ((val : (U second-step-m-streets17/node-of-first (Listof (grr31/first-step Street))))) - (first-value - ((λ ((val : (U second-step-m-streets17/node-of-first (Listof (grr31/first-step Street)))) (acc : Void)) - : - (values (U (inline-type* (Listof Street) (m-streets5/node)) (Listof (grr31/first-step Street))) Void) - (cond - (((grr31/first-step #:? m-streets5/node) val) - ((ann - (λ ((x : second-step-m-streets17/node-of-first) (acc : Void)) (values ((inline-instance* (Listof Street) (m-streets5/node)) (get x returned)) acc)) - (→ second-step-m-streets17/node-of-first Void (values (inline-type* (Listof Street) (m-streets5/node)) Void))) - val - acc)) - (#t - ((λ ((val : (Listof (grr31/first-step Street))) (acc : Void)) - : - (values (Listof (grr31/first-step Street)) Void) - (let ((f - ((inst foldl (grr31/first-step Street) (Pairof (Listof (grr31/first-step Street)) Void) Nothing Nothing) - (λ ((x : (grr31/first-step Street)) (acc1 : (Pairof (Listof (grr31/first-step Street)) Void))) - (let-values (((res res-acc) ((inst values (grr31/first-step Street) Void) x (cdr acc1)))) (cons (cons res (car acc1)) res-acc))) - (cons '() acc) - val))) - (values (reverse (car f)) (cdr f)))) - val - acc)) - (else - (typecheck-fail - (U second-step-m-streets17/node-of-first (Listof (grr31/first-step Street))) - "Unhandled union case in (U second-step-m-streets17/node-of-first (Listof (grr31/first-step Street)))," - #;" whole type was:(U second-step-m-streets17/node-of-first (Listof (grr31/first-step Street)))")))) - val - (void)))) - (error "NIY2")) - (get from streets)) - ))) - (Street (sname : (Let (~> ~>-to-result-type) String)) ((Street7/extract/mapping (from : (grr31/first-step Street))) (Street ((inline-instance* String ()) (get from sname)))))) - -) \ No newline at end of file diff --git a/graph-lib/graph/structure.lp2.rkt b/graph-lib/graph/structure.lp2.rkt index cb541827..050a32d3 100644 --- a/graph-lib/graph/structure.lp2.rkt +++ b/graph-lib/graph/structure.lp2.rkt @@ -68,7 +68,7 @@ handle the empty structure as a special case. (let () (define-structure empty-st) (define-structure stA [a Number]) - (check-equal?: (empty-st) ((structure #:make-instance))) + ;; BUG 137 (check-equal?: (empty-st) ((structure #:make-instance))) (check-not-equal?: (empty-st) (structure [a 1])) (check-not-equal?: (structure #:make-instance) (structure [a 1])) (check-not-equal?: (empty-st) (stA 1)) @@ -137,7 +137,7 @@ handle the empty structure as a special case. Test constructor: @chunk[ - (check-equal?: (empty-st) : empty-st (empty-st)) + ;; BUG 137 (check-equal?: (empty-st) : empty-st (empty-st)) (check-equal?: (structure-get (st 1 "b") b) : String "b") (check-equal?: (structure-get (st2 "a" 2) b) : String "a")] @@ -154,7 +154,7 @@ Test constructor, as id: Test the type-expander: @chunk[ - (check-equal? (structure-get (ann (st2 "g" 123) st2) b) "g")] + (check-equal?: (structure-get (ann (st2 "g" 123) st2) b) "g")] Test the match-expander: @@ -166,18 +166,19 @@ Test the match-expander: Test equality: @chunk[ - (check-equal? (ann (st 1 "i") st) (st 1 "i")) - (check-equal? (ann (st2 "j" 2) st2) (st2 "j" 2)) - (check-equal? (ann (st 1 "k") st) (st2 "k" 1))] + ;; BUG 137 (check-equal?: (ann (st 1 "i") st) (st 1 "i")) + ;; BUG 137 (check-equal?: (ann (st2 "j" 2) st2) (st2 "j" 2)) + ;; BUG 137 (check-equal?: (ann (st 1 "k") st) (st2 "k" 1)) + ] Test predicate: @chunk[ - (check-equal? (st? (ann (st 1 "i") (U st st2))) #t) - (check-equal? (custom-is-st2? (ann (st 1 "i") (U st st2))) #t) - (check-equal? (custom-is-st3? (ann (st 1 "i") (U st st2))) #f) - (check-equal? (st? (ann (st 1 "i") (U Number st st2))) #t) - (check-equal? (st? (ann 1 (U Number st st2))) #f) + (check-equal?: (st? (ann (st 1 "i") (U st st2))) #t) + (check-equal?: (custom-is-st2? (ann (st 1 "i") (U st st2))) #t) + (check-equal?: (custom-is-st3? (ann (st 1 "i") (U st st2))) #f) + (check-equal?: (st? (ann (st 1 "i") (U Number st st2))) #t) + (check-equal?: (st? (ann 1 (U Number st st2))) #f) ;; Occurrence typing won't work well, if only because fields could be of ;; a type for which TR doesn't know how to make-predicate. #|(define (check-occurrence-typing [x : (U Number st st3)]) @@ -303,9 +304,9 @@ We provide a macro which returns an anonymous @tc[structure] constructor. It can be used to make @tc[structure] instances like this: @chunk[ - (check-equal? (begin ((make-structure-constructor a b c) 1 "b" #t) - 'it-works) - 'it-works)] + (check-equal?: (begin ((make-structure-constructor a b c) 1 "b" #t) + 'it-works) + 'it-works)] To create such an instance, we use the underlying @tc[struct]'s constructor. First, we need to check if the list of fields was already remembered, in which @@ -491,13 +492,16 @@ instead of needing an extra recompilation. [b bb (? string?)]) (list a bb c d)] [else 'other]))]) - (check-equal? (test-match - ((make-structure-constructor a b c d) 1 "b" 'value-c 4)) - '(1 "b" value-c 4)) - (check-equal? (test-match - ((make-structure-constructor a b c y) 1 2 3 4)) - '(1 2 3 4)) - (check-equal? (test-match 'bad) 'other))] + (check-equal?: (test-match + ((make-structure-constructor a b c d) 1 + "b" + 'value-c + 4)) + '(1 "b" value-c 4)) + (check-equal?: (test-match + ((make-structure-constructor a b c y) 1 2 3 4)) + '(1 2 3 4)) + (check-equal?: (test-match 'bad) 'other))] @subsection{Anonymous type} diff --git a/graph-lib/lib/doc.rkt b/graph-lib/lib/doc.rkt index 2f914649..a23cb87d 100644 --- a/graph-lib/lib/doc.rkt +++ b/graph-lib/lib/doc.rkt @@ -24,13 +24,15 @@ (require (only-in scribble/core make-style) (only-in scribble/html-properties alt-tag attributes)) (define (remote-image src alt) - (elem - #:style - (make-style #f - (list (alt-tag "img") - (attributes - `((src . ,src) - (alt . ,alt))))))) + (cond-element + [html (elem + #:style + (make-style #f + (list (alt-tag "img") + (attributes + `((src . ,src) + (alt . ,alt))))))] + [else (elem)])) ;; ==== hybrid footnotes/margin-note ==== (provide note) diff --git a/graph-lib/lib/doc/example.lp2.rkt b/graph-lib/lib/doc/example.lp2.rkt index 807cc08b..4270a843 100644 --- a/graph-lib/lib/doc/example.lp2.rkt +++ b/graph-lib/lib/doc/example.lp2.rkt @@ -18,7 +18,8 @@ In section @secref{doc/example|foo} we present, blah blah. @subsection[#:tag "doc/example|foo"]{My subsection} -@$${\frac{\href{//jsmaniac.github.io}{2x}}{\class{some-css-class}{x^2}}} +@;Works only with HTML, as \class is not defined. TODO: define it. +@;@$${\frac{\href{//jsmaniac.github.io}{2x}}{\class{some-css-class}{x^2}}} @(colorize (filled-ellipse 30 15) "blue") diff --git a/graph-lib/lib/doc/math.rkt b/graph-lib/lib/doc/math.rkt index 31883eaf..68d10a49 100644 --- a/graph-lib/lib/doc/math.rkt +++ b/graph-lib/lib/doc/math.rkt @@ -21,6 +21,8 @@ (require scriblib/render-cond) +(require "unicode-chars.sty.rkt") + (define setup-math (compound-paragraph (style #f (list)) @@ -45,7 +47,7 @@ %\overfullrule=2cm \usepackage[scaled=0.7]{beramono} \usepackage{newunicodechar} - \newunicodechar{ᵢ}{\ensuremath{_1}} + %\newunicodechar{ᵢ}{\ensuremath{_1}} \usepackage{xcolor} \hypersetup{ @@ -55,6 +57,8 @@ citecolor={blue!50!black}, urlcolor={blue!80!black}, } + + @unicode-chars })))) "")] [else (paragraph (style #f (list)) "")])))) diff --git a/graph-lib/lib/doc/unicode-chars.sty.rkt b/graph-lib/lib/doc/unicode-chars.sty.rkt new file mode 100644 index 00000000..2aee4b24 --- /dev/null +++ b/graph-lib/lib/doc/unicode-chars.sty.rkt @@ -0,0 +1,219 @@ +#lang at-exp racket +(provide unicode-chars) +(define unicode-chars + @string-append|<<<{ +\makeatletter +% Must be loaded after MnSymbol!!! MnSymbol improperly defines × and ¬ in such a way that they don't work in math mode. +% definition of some characters, for use with +% \usepackage[utf8]{inputenc} +% \usepackage[T1]{fontenc} +% Author: Christoph Lange +% Some math characters taken from John Wickerson's MathUnicode.sty (http://tex.stackexchange.com/questions/110042/entering-unicode-math-symbols-into-latex-direct-from-keyboard-on-a-mac) +% https://github.com/clange/latex +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{unicode-chars}[2013/10/08] + +%\DeclareUnicodeCharacter{00A0}{~}% +%\DeclareUnicodeCharacter{00A3}{\pounds}% £ +%\DeclareUnicodeCharacter{00AC}{\ensuremath{\neg}} ¬ +%\DeclareUnicodeCharacter{00AE}{\textsuperscript{\textregistered}}%® +%\DeclareUnicodeCharacter{00AF}{\ensuremath{^-}}% ¯ +%\DeclareUnicodeCharacter{00D7}{\ensuremath{\times}}% × + +%%%%%%%%%%%%%%%%%%%%%%%%% vvv % NO-BREAK SPACE here (unicode 00A0) +\catcode`\^^a0=13\relax\def {~}% " " (nbsp) +\catcode`\^^a3=13\relax\def£{\pounds}% £ +\catcode`\^^ae=13\relax\def®{\textsuperscript{\textregistered}}% ® +\catcode`\^^af=13\relax\def¯{\ensuremath{^-}}% ¯ % macron (overline, overbar) +% \catcode`\^^f1=13\relax\defñ{\~{n}}% ñ +% Declared by MnSymbol: +% \catcode`\^^d7=13\relax\def×{\ensuremath{\times}}% × +% \catcode`\^^ac=13\relax\def¬{\ensuremath{\neg}}\relax% ¬ + +\DeclareUnicodeCharacter{00F1}{{\ifmmode\tilde{n}\else\~{n}\fi}} +% Declared by MnSymbol: +\DeclareUnicodeCharacter{00D7}{\ensuremath{\times}} +\DeclareUnicodeCharacter{00AC}{\ensuremath{\neg}} + +\DeclareUnicodeCharacter{0101}{\=a}% ā +\DeclareUnicodeCharacter{0123}{\c g}% ģ +\DeclareUnicodeCharacter{0130}{\. I}% İ +\DeclareUnicodeCharacter{0146}{\c n}% ņ +\DeclareUnicodeCharacter{016B}{\=u}% ū +\DeclareUnicodeCharacter{03B1}{\ensuremath{\alpha}}% α +\DeclareUnicodeCharacter{03B4}{\ensuremath{\delta}}% δ +\DeclareUnicodeCharacter{0394}{\ensuremath{\Delta}}% Δ +\DeclareUnicodeCharacter{03F5}{\ensuremath{\epsilon}}% ϵ +\DeclareUnicodeCharacter{03B5}{\ensuremath{\varepsilon}}% ε +\DeclareUnicodeCharacter{0395}{\ensuremath{\Epsilon}}% Ε +\DeclareUnicodeCharacter{03BB}{\ensuremath{\lambda}}% λ +\DeclareUnicodeCharacter{03C1}{\ensuremath{\rho}}% ρ +\DeclareUnicodeCharacter{03A1}{\ensuremath{\Rho}}% Ρ +\DeclareUnicodeCharacter{2190}{\ensuremath{\leftarrow}}% ← +\DeclareUnicodeCharacter{2192}{\ensuremath{\rightarrow}}% → +% 2192: \textrightarrow is not available in all fonts, and we need the right arrow in math mode +\DeclareUnicodeCharacter{2193}{\ensuremath{\downarrow}}% ↓ +\DeclareUnicodeCharacter{2194}{\ensuremath{\leftrightarrow}}% ↔ +\DeclareUnicodeCharacter{21A6}{\ensuremath{\mapsto}}% ↦ +\DeclareUnicodeCharacter{21C0}{\ensuremath{\rightharpoonup}}% ⇀ +\DeclareUnicodeCharacter{21D2}{\ensuremath{\Rightarrow}}% ⇒ +\DeclareUnicodeCharacter{2200}{\ensuremath{\operatorname{\forall}}}% ∀ % Georges — added \operatorname{} +\DeclareUnicodeCharacter{2203}{\ensuremath{\exists}}% ∃ +\DeclareUnicodeCharacter{2208}{\ensuremath{\in}}% ∈ +\DeclareUnicodeCharacter{2209}{\ensuremath{\not\in}}% ∉ +\DeclareUnicodeCharacter{2211}{\ensuremath{\sum}}% ∑ +\DeclareUnicodeCharacter{220F}{\ensuremath{\prod}}% ∏ +\DeclareUnicodeCharacter{2218}{\ensuremath{\circ}}% ∘ +\DeclareUnicodeCharacter{2227}{\ensuremath{\mathbin{\wedge}}}% ∧ +\DeclareUnicodeCharacter{2228}{\ensuremath{\mathbin{\vee}}}% ∨ +\DeclareUnicodeCharacter{2229}{\ensuremath{\mathbin{\cap}}}% ∩ +\DeclareUnicodeCharacter{222A}{\ensuremath{\mathbin{\cup}}}% ∪ +\DeclareUnicodeCharacter{228D}{\ensuremath{\mathbin{\cupdot}}}% ⊍ +\DeclareUnicodeCharacter{228E}{\ensuremath{\mathbin{\uplus}}}% ⊎ +%\DeclareUnicodeCharacter{2237}{\ensuremath{::}}% ∷ +% 2237: not sure that's a good way to render this symbol +\DeclareUnicodeCharacter{2248}{\ensuremath{\approx}}% ≈ +\DeclareUnicodeCharacter{2260}{\ensuremath{\ne}}% ≠ +\DeclareUnicodeCharacter{2261}{\ensuremath{\equiv}}% ≡ +\DeclareUnicodeCharacter{2264}{\ensuremath{\le}}% ≤ +\DeclareUnicodeCharacter{2265}{\ensuremath{\ge}}% ≥ +\DeclareUnicodeCharacter{2286}{\ensuremath{\subseteq}}% ⊆ +\DeclareUnicodeCharacter{2287}{\ensuremath{\supseteq}}% ⊇ +\DeclareUnicodeCharacter{219D}{\ensuremath{\leadsto}}% ↝ +\@ifpackageloaded{MnSymbol}{% +\DeclareUnicodeCharacter{2295}{\ensuremath{\oplus}}% ⊕ +\DeclareUnicodeCharacter{2296}{\ensuremath{\ominus}}% ⊖ +}{} +\DeclareUnicodeCharacter{22C0}{\ensuremath{\bigwedge}}% ⋀ +\DeclareUnicodeCharacter{22C0}{\ensuremath{\bigcupdot}}% ⋀ +\DeclareUnicodeCharacter{22C1}{\ensuremath{\biguplus}}% ⋁ +\DeclareUnicodeCharacter{22C2}{\ensuremath{\bigcap}}% ⋂ +\DeclareUnicodeCharacter{22C3}{\ensuremath{\bigcup}}% ⋃ +\DeclareUnicodeCharacter{2A03}{\ensuremath{\bigcupdot}}% ⨃ +\DeclareUnicodeCharacter{2A04}{\ensuremath{\biguplus}}% ⨄ +\DeclareUnicodeCharacter{25CB}{\ensuremath{\ocircle}}% ○ +\@ifpackageloaded{MnSymbol}{% +\DeclareUnicodeCharacter{2605}{\ensuremath{\filledlargestar}}% ★ +}{} +\DeclareUnicodeCharacter{2713}{\ensuremath{\checkmark}}% ✓ +\DeclareUnicodeCharacter{27F6}{\ensuremath{\longrightarrow}}% ⟶ +\DeclareUnicodeCharacter{27F7}{\ensuremath{\longleftrightarrow}}% ⟷ +\DeclareUnicodeCharacter{27F9}{\ensuremath{\Longrightarrow}}% ⟹ +% +% Additions by Georges Dupéron +\DeclareUnicodeCharacter{2237}{\ensuremath{\dblcolon}}% ∷ +\DeclareUnicodeCharacter{228F}{\ensuremath{\sqsubset}}% ⊏ +\DeclareUnicodeCharacter{2290}{\ensuremath{\sqsubset}}% ⊐ +\DeclareUnicodeCharacter{2291}{\ensuremath{\sqsubseteq}}% ⊑ +\DeclareUnicodeCharacter{2292}{\ensuremath{\sqsupseteq}}% ⊒ +\DeclareUnicodeCharacter{2293}{\ensuremath{\sqcap}}% ⊓ +\DeclareUnicodeCharacter{2294}{\ensuremath{\sqcup}}% ⊔ +% +\usepackage{graphicx}% +\providecommand{\bigsqcap}{% + \mathop{% + \mathpalette\@updown\bigsqcup + }% +} +\newcommand*{\@updown}[2]{% + \rotatebox[origin=c]{180}{$\m@th#1#2$}% +} +\DeclareUnicodeCharacter{2A05}{\ensuremath{\bigsqcap}}% ⨅ +\DeclareUnicodeCharacter{2A06}{\ensuremath{\bigsqcup}}% ⨆ +\DeclareUnicodeCharacter{2080}{\ensuremath{_0}}% ₀ +\DeclareUnicodeCharacter{2081}{\ensuremath{_1}}% ₁ +\DeclareUnicodeCharacter{2082}{\ensuremath{_2}}% ₂ +\DeclareUnicodeCharacter{2083}{\ensuremath{_3}}% ₃ +\DeclareUnicodeCharacter{2084}{\ensuremath{_4}}% ₄ +\DeclareUnicodeCharacter{2085}{\ensuremath{_5}}% ₅ +\DeclareUnicodeCharacter{2086}{\ensuremath{_6}}% ₆ +\DeclareUnicodeCharacter{2087}{\ensuremath{_7}}% ₇ +\DeclareUnicodeCharacter{2088}{\ensuremath{_8}}% ₈ +\DeclareUnicodeCharacter{2089}{\ensuremath{_9}}% ₉ +\DeclareUnicodeCharacter{208A}{\ensuremath{_+}}% ₊ +\DeclareUnicodeCharacter{208B}{\ensuremath{_-}}% ₋ +\DeclareUnicodeCharacter{208C}{\ensuremath{_=}}% ₌ +\DeclareUnicodeCharacter{208D}{\ensuremath{_(}}% ₍ +\DeclareUnicodeCharacter{208E}{\ensuremath{_)}}% ₎ +\DeclareUnicodeCharacter{2098}{\ensuremath{_m}}% ₘ +\DeclareUnicodeCharacter{2099}{\ensuremath{_n}}% ₙ +\DeclareUnicodeCharacter{1D62}{\ensuremath{_i}}% ᵢ +\DeclareUnicodeCharacter{2C7C}{\ensuremath{_j}}% ⱼ +% +\DeclareUnicodeCharacter{2070}{\ensuremath{^0}}% ⁰ +%\DeclareUnicodeCharacter{00B9}{\ensuremath{^1}}% ¹ +%\DeclareUnicodeCharacter{00B2}{\ensuremath{^2}}% ² +%\DeclareUnicodeCharacter{00B3}{\ensuremath{^3}}% ³ +\DeclareUnicodeCharacter{2074}{\ensuremath{^4}}% ⁴ +\DeclareUnicodeCharacter{2075}{\ensuremath{^5}}% ⁵ +\DeclareUnicodeCharacter{2076}{\ensuremath{^6}}% ⁶ +\DeclareUnicodeCharacter{2077}{\ensuremath{^7}}% ⁷ +\DeclareUnicodeCharacter{2078}{\ensuremath{^8}}% ⁸ +\DeclareUnicodeCharacter{2079}{\ensuremath{^9}}% ⁹ +\DeclareUnicodeCharacter{207A}{\ensuremath{^+}}% ⁺ +\DeclareUnicodeCharacter{207B}{\ensuremath{^-}}% ⁻ +\DeclareUnicodeCharacter{207C}{\ensuremath{^=}}% ⁼ +\DeclareUnicodeCharacter{207D}{\ensuremath{^(}}% ⁽ +\DeclareUnicodeCharacter{207E}{\ensuremath{^)}}% ⁾ +\DeclareUnicodeCharacter{207F}{\ensuremath{^n}}% ⁿ +\DeclareUnicodeCharacter{2071}{\ensuremath{^i}}% ⁱ +%s +% \DeclareUnicodeCharacter{2026}{\ensuremath{\dots}}% … + +% Generated from ~/.XCompose using: +% cat /tmp/cal.txt | cut -d '"' -f 2- | tr '"' ' ' | cut -d ' ' -f 1,6 | while IFS=' ' read a b; do echo "\\DeclareUnicodeCharacter{$(printf "%X" "'$a")}{\\\\ensuremath{\\mathcal{$b}}}% $a"; done + +\DeclareUnicodeCharacter{1D49C}{\ensuremath{\mathcal{A}}}% 𝒜 +\DeclareUnicodeCharacter{212C}{\ensuremath{\mathcal{B}}}% ℬ +\DeclareUnicodeCharacter{1D49E}{\ensuremath{\mathcal{C}}}% 𝒞 +\DeclareUnicodeCharacter{1D49F}{\ensuremath{\mathcal{D}}}% 𝒟 +\DeclareUnicodeCharacter{2130}{\ensuremath{\mathcal{E}}}% ℰ +\DeclareUnicodeCharacter{2131}{\ensuremath{\mathcal{F}}}% ℱ +\DeclareUnicodeCharacter{1D4A2}{\ensuremath{\mathcal{G}}}% 𝒢 +\DeclareUnicodeCharacter{210B}{\ensuremath{\mathcal{H}}}% ℋ +\DeclareUnicodeCharacter{2110}{\ensuremath{\mathcal{I}}}% ℐ +\DeclareUnicodeCharacter{1D4A5}{\ensuremath{\mathcal{J}}}% 𝒥 +\DeclareUnicodeCharacter{1D4A6}{\ensuremath{\mathcal{K}}}% 𝒦 +\DeclareUnicodeCharacter{2112}{\ensuremath{\mathcal{L}}}% ℒ +\DeclareUnicodeCharacter{2133}{\ensuremath{\mathcal{M}}}% ℳ +\DeclareUnicodeCharacter{1D4A9}{\ensuremath{\mathcal{N}}}% 𝒩 +\DeclareUnicodeCharacter{1D4AA}{\ensuremath{\mathcal{O}}}% 𝒪 +\DeclareUnicodeCharacter{1D4AB}{\ensuremath{\mathcal{P}}}% 𝒫 +\DeclareUnicodeCharacter{1D4AC}{\ensuremath{\mathcal{Q}}}% 𝒬 +\DeclareUnicodeCharacter{211B}{\ensuremath{\mathcal{R}}}% ℛ +\DeclareUnicodeCharacter{1D4AE}{\ensuremath{\mathcal{S}}}% 𝒮 +\DeclareUnicodeCharacter{1D4AF}{\ensuremath{\mathcal{T}}}% 𝒯 +\DeclareUnicodeCharacter{1D4B0}{\ensuremath{\mathcal{U}}}% 𝒰 +\DeclareUnicodeCharacter{1D4B1}{\ensuremath{\mathcal{V}}}% 𝒱 +\DeclareUnicodeCharacter{1D4B2}{\ensuremath{\mathcal{W}}}% 𝒲 +\DeclareUnicodeCharacter{1D4B3}{\ensuremath{\mathcal{X}}}% 𝒳 +\DeclareUnicodeCharacter{1D4B4}{\ensuremath{\mathcal{Y}}}% 𝒴 +\DeclareUnicodeCharacter{1D4B5}{\ensuremath{\mathcal{Z}}}% 𝒵 +\DeclareUnicodeCharacter{1D4B6}{\ensuremath{\mathcal{a}}}% 𝒶 +\DeclareUnicodeCharacter{1D4B7}{\ensuremath{\mathcal{b}}}% 𝒷 +\DeclareUnicodeCharacter{1D4B8}{\ensuremath{\mathcal{c}}}% 𝒸 +\DeclareUnicodeCharacter{1D4B9}{\ensuremath{\mathcal{d}}}% 𝒹 +\DeclareUnicodeCharacter{212F}{\ensuremath{\mathcal{e}}}% ℯ +\DeclareUnicodeCharacter{1D4BB}{\ensuremath{\mathcal{f}}}% 𝒻 +\DeclareUnicodeCharacter{210A}{\ensuremath{\mathcal{g}}}% ℊ +\DeclareUnicodeCharacter{1D4BD}{\ensuremath{\mathcal{h}}}% 𝒽 +\DeclareUnicodeCharacter{1D4BE}{\ensuremath{\mathcal{i}}}% 𝒾 +\DeclareUnicodeCharacter{1D4BF}{\ensuremath{\mathcal{j}}}% 𝒿 +\DeclareUnicodeCharacter{1D4C0}{\ensuremath{\mathcal{k}}}% 𝓀 +\DeclareUnicodeCharacter{1D4C1}{\ensuremath{\mathcal{l}}}% 𝓁 +\DeclareUnicodeCharacter{1D4C2}{\ensuremath{\mathcal{m}}}% 𝓂 +\DeclareUnicodeCharacter{1D4C3}{\ensuremath{\mathcal{n}}}% 𝓃 +\DeclareUnicodeCharacter{2134}{\ensuremath{\mathcal{o}}}% ℴ +\DeclareUnicodeCharacter{1D4C5}{\ensuremath{\mathcal{p}}}% 𝓅 +\DeclareUnicodeCharacter{1D4C6}{\ensuremath{\mathcal{q}}}% 𝓆 +\DeclareUnicodeCharacter{1D4C7}{\ensuremath{\mathcal{r}}}% 𝓇 +\DeclareUnicodeCharacter{1D4C8}{\ensuremath{\mathcal{s}}}% 𝓈 +\DeclareUnicodeCharacter{1D4C9}{\ensuremath{\mathcal{t}}}% 𝓉 +\DeclareUnicodeCharacter{1D4CA}{\ensuremath{\mathcal{u}}}% 𝓊 +\DeclareUnicodeCharacter{1D4CB}{\ensuremath{\mathcal{v}}}% 𝓋 +\DeclareUnicodeCharacter{1D4CC}{\ensuremath{\mathcal{w}}}% 𝓌 +\DeclareUnicodeCharacter{1D4CD}{\ensuremath{\mathcal{x}}}% 𝓍 +\DeclareUnicodeCharacter{1D4CE}{\ensuremath{\mathcal{y}}}% 𝓎 +\DeclareUnicodeCharacter{1D4CF}{\ensuremath{\mathcal{z}}}% 𝓏 +\makeatother +}>>>|) \ No newline at end of file