Upload
Login
Signup
Submit Search
Home
Explore
Presentation Courses
PowerPoint Courses
by
LinkedIn Learning
Successfully reported this slideshow.
静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム
1
of
56
静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム
492 views
Share
Like
Download
...
bd gfngfn
Follow
Published on
Jan 11, 2020
第61回プログラミング・シンポジウムにて発表した際のスライド資料です.
...
Published in:
Engineering
0 Comments
2 Likes
Statistics
Notes
Post
Be the first to comment
No Downloads
No notes for slide
静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム
1. 61 2020 1 10 @
2.
2 [ˈsætɪsˌfaɪ] • 2017 • DSL https://github.com/gfngfn/SATySFi
3.
Better LATEX • • 3
4.
• • • • • •
5.
2 WYSIWYG troff 5 [Microsoft 1983] [Adobe 1991] [Quark 1987] [Lamport 1985][Knuth 1978] [Gruber 2004] [Osanna 1973] RE:VIEW [ et al. 2002]
6.
WYSIWYG 6 😄 • • • •
7.
WYSIWYG 7 😄 😩 •• • • •
8.
LATEX • • 8 ! Undefined control sequence. ! Missing $ inserted. ! Missing number, treated as zero.
9.
LATEX • • 9 ! Undefined control sequence. ! Missing $ inserted. ! Missing number, treated as zero.
10.
10 https://github.com/gfngfn/SATySFi Static Analysis-based TYpesetting System for Functional Implementation 🤔
11.
(1/2) 11 2 +section{SATySFi; }< +p{ emph{ } } > let-inline ctx emph it = let ctx = ctx |> set-font Latin italic-font in read-inline ctx it “ ” “ ” • LATEX • { … } < … > • OCaml •
12.
(2/2) • “ ” • • • 12 “ ” OCaml
13.
• ML • Hindley–Milner • • • • • 13 SML# [Ohori 1995][Milner 1978]
14.
• • • • • •
15.
15 https://drive.google.com/open?id=1muaWGgyAGfIYJNyKfKvvAzN8vur1sTG3
16.
• TEX [Knuth & Plass 1981] – Unicode Line Breaking Algorithm – – [Liang & Knuth 1983] • OpenType (1/2) 16
17.
• – OpenType MATH – Future Work • • • figure • ref label • TikZ (2/2) 17
18.
2 18 • LATEX
19.
LATEX https://drive.google.com/open?id=1r14gHwCUxe3DQjoxkGHDWWkwtHWqMwaY
20.
https://drive.google.com/open?id=1DyKB0V2xIKz6SMYNGdEWnupPAxXkWCeE
21.
• • • • • •
22.
“ ” PDF OpenType 22
23.
23 “ ” PDF OpenType
24.
“ ” PDF OpenType 24 {The quick brown fox … }
25.
“ ” PDF OpenType 25 Y ______] ______[
26.
• – • – 26
27.
2 • – • – • – • – 27 Y ______] ______[ Y ______] ______[
28.
28 {The quick brown fox … } inline-text inline-boxes block-boxes < +p{ The quick brown fox … } > block-text
29.
29 {The quick brown fox … } Y ______] ______[ • • • ... context read-inline {The quick brown fox jumps … } • read-inline : context → inline-text → inline-boxes Ctx
30.
• line-break : bool → bool → context → inline-boxes → block-boxes 30 line-break true true Ctx – 2 – – Knuth–Plass Ctx [Knuth & Plass 1981]
31.
• – • + – 31 let-inline =cmdy x1 · · · xn e 0 cmd cmd Y ______] ______[
32.
32 let-inline ctx emph contents = let ctx-emph = ctx |> set-font Latin italic-font in read-inline ctx-emph contents emph
33.
33 The emph{quick brown} fox jumps … read-inline {The emph{quick brown} fox jumps … } …… Ctx Ctx
34.
34 emph{quick brown} fox jumps … read-inline {The emph{quick brown} fox jumps … } …… Ctx Ctx
35.
35 emph{quick brown} fox jumps … let-inline ctx emph contents = let ctx-emph = ctx |> set-font Latin italic-font in read-inline ctx-emph contents Ctx read-inline {The emph{quick brown} fox jumps … } …… Ctx
36.
let-inline ctx emph contents = let ctx-emph = ctx |> set-font Latin italic-font in read-inline ctx-emph contents 36 emph{quick brown} fox jumps … Ctx read-inline {The emph{quick brown} fox jumps … } …… Ctx
37.
37 emph{quick brown} fox jumps … quick brown read-inline {The emph{quick brown} fox jumps … } …… Ctx Ctx CtxÕ
38.
38 emph{quick brown} fox jumps … brown read-inline {The emph{quick brown} fox jumps … } …… Ctx Ctx CtxÕ
39.
39 emph{quick brown} fox jumps … read-inline {The emph{quick brown} fox jumps … } …… Ctx Ctx CtxÕ
40.
40 fox jumps … read-inline {The emph{quick brown} fox jumps … } …… Ctx Ctx
41.
41 fox jumps … read-inline {The emph{quick brown} fox jumps … } …… Ctx Ctx
42.
42 jumps … read-inline {The emph{quick brown} fox jumps … } …… Ctx Ctx
43.
43 [ ; ; ] inline-cmd·1 ·n· · · +p{ fbox{parbox(5cm)< +p{ } >} } [ ; ; ] block-cmd·1 ·n· · · • emph : [ inline-text ] inline-cmd • +p : [ inline-text ] block-cmd • parbox : [ length; block-text ] inline-cmd ·i i
44.
• • • • • •
45.
😄 😩 • 45
46.
DSL 46 amidakuji(``` |X|-|=|/| | | |-||-|X| |=|X|-||=| |-||-|=|-| |X|=|-|| | ```); amidakuji([ [Cross ; Line ; … ]; [Empty ; Line ; … ]; [Double; Cross; … ]; … ]);
47.
• DSL 47
48.
• – – Lisp quasiquote – MetaML [Taha 1997] MetaOCaml [Kiselyov 2014] • – – 48
49.
• – – 49
50.
50 https://drive.google.com/open?id=1LMXFbEXLAjwscC5gKZnvBwR2O5gjIu8Y
51.
• • • • • •
52.
• VM [ matsud224] • – HTML LATEX – • Markdown – 52
53.
• – LTR/RTL – OpenType on/off jp90 (JIS 90 form) • – – – – – • – Future Work 53
54.
B5 / 160 https://booth.pm/ ja/items/1127224 satysfi book
55.
• • • • • •
56.
• https://github.com/gfngfn/SATySFi • DSL • • • Pull Request 56
×
Public clipboards featuring this slide
×
No public clipboards found for this slide
Save this presentation
Be the first to comment