SlideShare uma empresa Scribd logo
1 de 56
Baixar para ler offline
61
2020 1 10 @
2
[ˈsætɪsˌfaɪ]
• 2017
• DSL
https://github.com/gfngfn/SATySFi
Better LATEX
•
•
3
•
•
•
•
•
•
2
WYSIWYG
troff
5
[Microsoft 1983] [Adobe 1991]
[Quark 1987]
[Lamport 1985][Knuth 1978]
[Gruber 2004]
[Osanna 1973]
RE:VIEW
[ et al. 2002]
WYSIWYG
6
😄
•
•
•
•
WYSIWYG
7
😄 😩
••
•
•
•
LATEX
•
•
8
! Undefined control sequence.
! Missing $ inserted.
! Missing number, treated as zero.
LATEX
•
•
9
! Undefined control sequence.
! Missing $ inserted.
! Missing number, treated as zero.
10
https://github.com/gfngfn/SATySFi
Static Analysis-based TYpesetting System
for Functional Implementation
🤔
(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
•
(2/2)
• “ ”
•
•
•
12
“ ” OCaml
• ML
• Hindley–Milner
•
•
•
•
•
13
SML# [Ohori 1995][Milner 1978]
•
•
•
•
•
•
15
https://drive.google.com/open?id=1muaWGgyAGfIYJNyKfKvvAzN8vur1sTG3
• TEX [Knuth & Plass 1981]
– Unicode Line Breaking Algorithm
–
– [Liang & Knuth 1983]
• OpenType
(1/2)
16
•
– OpenType MATH
– Future Work
•
•
• figure
• ref label
• TikZ
(2/2)
17
2
18
•
LATEX
LATEX
https://drive.google.com/open?id=1r14gHwCUxe3DQjoxkGHDWWkwtHWqMwaY
https://drive.google.com/open?id=1DyKB0V2xIKz6SMYNGdEWnupPAxXkWCeE
•
•
•
•
•
•
“ ”
PDF
OpenType
22
23
“ ”
PDF
OpenType
“ ”
PDF
OpenType
24
{The quick brown fox … }
“ ”
PDF
OpenType
25
Y
______]
______[
•
–
•
–
26
2
•
–
•
–
•
–
•
–
27
Y
______]
______[
Y
______]
______[
28
{The quick brown fox … }
inline-text
inline-boxes block-boxes
< +p{
The quick
brown fox …
} >
block-text
29
{The quick brown fox … }
Y
______]
______[
•
•
• ...
context
read-inline {The quick brown fox jumps … }
• read-inline : context → inline-text → inline-boxes
Ctx
• line-break : bool → bool → context → inline-boxes → block-boxes
30
line-break true true Ctx
– 2
–
– Knuth–Plass
Ctx
[Knuth & Plass 1981]
• 
–
• +
–
31
let-inline  =cmdy x1 · · · xn e
0
cmd
cmd
Y
______]
______[
32
let-inline ctx emph contents =
let ctx-emph =
ctx |> set-font Latin italic-font
in
read-inline ctx-emph contents
emph
33
The emph{quick brown} fox jumps …
read-inline {The emph{quick brown} fox jumps … }
……
Ctx
Ctx
34
emph{quick brown} fox jumps …
read-inline {The emph{quick brown} fox jumps … }
……
Ctx
Ctx
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
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
emph{quick brown} fox jumps …
quick brown
read-inline {The emph{quick brown} fox jumps … }
……
Ctx
Ctx
CtxÕ
38
emph{quick brown} fox jumps …
brown
read-inline {The emph{quick brown} fox jumps … }
……
Ctx
Ctx
CtxÕ
39
emph{quick brown} fox jumps …
read-inline {The emph{quick brown} fox jumps … }
……
Ctx
Ctx
CtxÕ
40
fox jumps …
read-inline {The emph{quick brown} fox jumps … }
……
Ctx
Ctx
41
fox jumps …
read-inline {The emph{quick brown} fox jumps … }
……
Ctx
Ctx
42
jumps …
read-inline {The emph{quick brown} fox jumps … }
……
Ctx
Ctx
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
•
•
•
•
•
•
😄
😩
•
45
DSL
46
amidakuji(```
|X|-|=|/| |
| |-||-|X|
|=|X|-||=|
|-||-|=|-|
|X|=|-|| |
```);
amidakuji([
[Cross ; Line ; … ];
[Empty ; Line ; … ];
[Double; Cross; … ];
…
]);
•
DSL
47
•
–
– Lisp quasiquote
– MetaML [Taha 1997] MetaOCaml [Kiselyov 2014]
•
–
–
48
•
–
–
49
50
https://drive.google.com/open?id=1LMXFbEXLAjwscC5gKZnvBwR2O5gjIu8Y
•
•
•
•
•
•
• VM [ matsud224]
•
– HTML LATEX
–
• Markdown
–
52
•
– LTR/RTL
– OpenType on/off jp90 (JIS 90 form)
•
–
–
–
–
–
•
–
Future Work
53
B5 / 160
https://booth.pm/
ja/items/1127224
satysfi book
•
•
•
•
•
•
•
https://github.com/gfngfn/SATySFi
• DSL
•
•
•
Pull Request
56

Mais conteúdo relacionado

Mais procurados

勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
 
整数列圧縮
整数列圧縮整数列圧縮
整数列圧縮
JAVA DM
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
 

Mais procurados (20)

できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
 
型安全性入門
型安全性入門型安全性入門
型安全性入門
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
整数列圧縮
整数列圧縮整数列圧縮
整数列圧縮
 
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
 
Rolling Hashを殺す話
Rolling Hashを殺す話Rolling Hashを殺す話
Rolling Hashを殺す話
 
並列化による高速化
並列化による高速化 並列化による高速化
並列化による高速化
 
文字列アルゴリズム
文字列アルゴリズム文字列アルゴリズム
文字列アルゴリズム
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
Binary indexed tree
Binary indexed treeBinary indexed tree
Binary indexed tree
 
定理証明支援系Coqについて
定理証明支援系Coqについて定理証明支援系Coqについて
定理証明支援系Coqについて
 
Quine・難解プログラミングについて
Quine・難解プログラミングについてQuine・難解プログラミングについて
Quine・難解プログラミングについて
 

Semelhante a 静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム

Modern Linux Tracing Landscape
Modern Linux Tracing LandscapeModern Linux Tracing Landscape
Modern Linux Tracing Landscape
Kernel TLV
 
Redis深入浅出
Redis深入浅出Redis深入浅出
Redis深入浅出
ruoyi ruan
 

Semelhante a 静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム (20)

Continuation Passing Style and Macros in Clojure - Jan 2012
Continuation Passing Style and Macros in Clojure - Jan 2012Continuation Passing Style and Macros in Clojure - Jan 2012
Continuation Passing Style and Macros in Clojure - Jan 2012
 
High Performance Systems Without Tears - Scala Days Berlin 2018
High Performance Systems Without Tears - Scala Days Berlin 2018High Performance Systems Without Tears - Scala Days Berlin 2018
High Performance Systems Without Tears - Scala Days Berlin 2018
 
Virtual Machine for Regular Expressions
Virtual Machine for Regular ExpressionsVirtual Machine for Regular Expressions
Virtual Machine for Regular Expressions
 
Regular expressions
Regular expressionsRegular expressions
Regular expressions
 
My First Rails Plugin - Usertext
My First Rails Plugin - UsertextMy First Rails Plugin - Usertext
My First Rails Plugin - Usertext
 
静的型つき組版処理システムSATySFi: その後の発展と今後の課題 @第62回プログラミング・シンポジウム
静的型つき組版処理システムSATySFi: その後の発展と今後の課題 @第62回プログラミング・シンポジウム静的型つき組版処理システムSATySFi: その後の発展と今後の課題 @第62回プログラミング・シンポジウム
静的型つき組版処理システムSATySFi: その後の発展と今後の課題 @第62回プログラミング・シンポジウム
 
Flink internals web
Flink internals web Flink internals web
Flink internals web
 
Apache Flink internals
Apache Flink internalsApache Flink internals
Apache Flink internals
 
How it's made: C++ compilers (GCC)
How it's made: C++ compilers (GCC)How it's made: C++ compilers (GCC)
How it's made: C++ compilers (GCC)
 
Modern Linux Tracing Landscape
Modern Linux Tracing LandscapeModern Linux Tracing Landscape
Modern Linux Tracing Landscape
 
Introduction to Assembly Language
Introduction to Assembly LanguageIntroduction to Assembly Language
Introduction to Assembly Language
 
Let's Get to the Rapids
Let's Get to the RapidsLet's Get to the Rapids
Let's Get to the Rapids
 
List intersection for web search: Algorithms, Cost Models, and Optimizations
List intersection for web search: Algorithms, Cost Models, and OptimizationsList intersection for web search: Algorithms, Cost Models, and Optimizations
List intersection for web search: Algorithms, Cost Models, and Optimizations
 
Sangam 18 - Database Development: Return of the SQL Jedi
Sangam 18 - Database Development: Return of the SQL JediSangam 18 - Database Development: Return of the SQL Jedi
Sangam 18 - Database Development: Return of the SQL Jedi
 
Apache Flink: API, runtime, and project roadmap
Apache Flink: API, runtime, and project roadmapApache Flink: API, runtime, and project roadmap
Apache Flink: API, runtime, and project roadmap
 
MLflow with R
MLflow with RMLflow with R
MLflow with R
 
SwapSkills css3
SwapSkills css3SwapSkills css3
SwapSkills css3
 
Happy Go Programming
Happy Go ProgrammingHappy Go Programming
Happy Go Programming
 
Redis深入浅出
Redis深入浅出Redis深入浅出
Redis深入浅出
 
10 Lessons Learned from using Kafka with 1000 microservices - java global summit
10 Lessons Learned from using Kafka with 1000 microservices - java global summit10 Lessons Learned from using Kafka with 1000 microservices - java global summit
10 Lessons Learned from using Kafka with 1000 microservices - java global summit
 

Mais de T. Suwa

Mais de T. Suwa (8)

PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
 
SATySFi 最近の発展と目下実装中の変更
SATySFi 最近の発展と目下実装中の変更SATySFi 最近の発展と目下実装中の変更
SATySFi 最近の発展と目下実装中の変更
 
SATySFiのこれからの課題たち
SATySFiのこれからの課題たちSATySFiのこれからの課題たち
SATySFiのこれからの課題たち
 
多段階計算の型システムの基礎
多段階計算の型システムの基礎多段階計算の型システムの基礎
多段階計算の型システムの基礎
 
ラベルなしオプション引数の型システムと型推論
ラベルなしオプション引数の型システムと型推論ラベルなしオプション引数の型システムと型推論
ラベルなしオプション引数の型システムと型推論
 
レコード計算の多相型システムと型推論
レコード計算の多相型システムと型推論レコード計算の多相型システムと型推論
レコード計算の多相型システムと型推論
 
Macrodown -MLが使えるML-
Macrodown -MLが使えるML-Macrodown -MLが使えるML-
Macrodown -MLが使えるML-
 
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
 

Último

1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
AldoGarca30
 

Último (20)

HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptxHOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
 
Max. shear stress theory-Maximum Shear Stress Theory ​ Maximum Distortional ...
Max. shear stress theory-Maximum Shear Stress Theory ​  Maximum Distortional ...Max. shear stress theory-Maximum Shear Stress Theory ​  Maximum Distortional ...
Max. shear stress theory-Maximum Shear Stress Theory ​ Maximum Distortional ...
 
litvinenko_Henry_Intrusion_Hong-Kong_2024.pdf
litvinenko_Henry_Intrusion_Hong-Kong_2024.pdflitvinenko_Henry_Intrusion_Hong-Kong_2024.pdf
litvinenko_Henry_Intrusion_Hong-Kong_2024.pdf
 
Dr Mrs A A Miraje C Programming PPT.pptx
Dr Mrs A A Miraje C Programming PPT.pptxDr Mrs A A Miraje C Programming PPT.pptx
Dr Mrs A A Miraje C Programming PPT.pptx
 
8th International Conference on Soft Computing, Mathematics and Control (SMC ...
8th International Conference on Soft Computing, Mathematics and Control (SMC ...8th International Conference on Soft Computing, Mathematics and Control (SMC ...
8th International Conference on Soft Computing, Mathematics and Control (SMC ...
 
Adsorption (mass transfer operations 2) ppt
Adsorption (mass transfer operations 2) pptAdsorption (mass transfer operations 2) ppt
Adsorption (mass transfer operations 2) ppt
 
Involute of a circle,Square, pentagon,HexagonInvolute_Engineering Drawing.pdf
Involute of a circle,Square, pentagon,HexagonInvolute_Engineering Drawing.pdfInvolute of a circle,Square, pentagon,HexagonInvolute_Engineering Drawing.pdf
Involute of a circle,Square, pentagon,HexagonInvolute_Engineering Drawing.pdf
 
handbook on reinforce concrete and detailing
handbook on reinforce concrete and detailinghandbook on reinforce concrete and detailing
handbook on reinforce concrete and detailing
 
History of Indian Railways - the story of Growth & Modernization
History of Indian Railways - the story of Growth & ModernizationHistory of Indian Railways - the story of Growth & Modernization
History of Indian Railways - the story of Growth & Modernization
 
Computer Graphics Introduction To Curves
Computer Graphics Introduction To CurvesComputer Graphics Introduction To Curves
Computer Graphics Introduction To Curves
 
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
 
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptxS1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
 
Dynamo Scripts for Task IDs and Space Naming.pptx
Dynamo Scripts for Task IDs and Space Naming.pptxDynamo Scripts for Task IDs and Space Naming.pptx
Dynamo Scripts for Task IDs and Space Naming.pptx
 
Call for Papers - Journal of Electrical Systems (JES), E-ISSN: 1112-5209, ind...
Call for Papers - Journal of Electrical Systems (JES), E-ISSN: 1112-5209, ind...Call for Papers - Journal of Electrical Systems (JES), E-ISSN: 1112-5209, ind...
Call for Papers - Journal of Electrical Systems (JES), E-ISSN: 1112-5209, ind...
 
Presentation on Slab, Beam, Column, and Foundation/Footing
Presentation on Slab,  Beam, Column, and Foundation/FootingPresentation on Slab,  Beam, Column, and Foundation/Footing
Presentation on Slab, Beam, Column, and Foundation/Footing
 
Fundamentals of Internet of Things (IoT) Part-2
Fundamentals of Internet of Things (IoT) Part-2Fundamentals of Internet of Things (IoT) Part-2
Fundamentals of Internet of Things (IoT) Part-2
 
NEWLETTER FRANCE HELICES/ SDS SURFACE DRIVES - MAY 2024
NEWLETTER FRANCE HELICES/ SDS SURFACE DRIVES - MAY 2024NEWLETTER FRANCE HELICES/ SDS SURFACE DRIVES - MAY 2024
NEWLETTER FRANCE HELICES/ SDS SURFACE DRIVES - MAY 2024
 
5G and 6G refer to generations of mobile network technology, each representin...
5G and 6G refer to generations of mobile network technology, each representin...5G and 6G refer to generations of mobile network technology, each representin...
5G and 6G refer to generations of mobile network technology, each representin...
 
Databricks Generative AI Fundamentals .pdf
Databricks Generative AI Fundamentals  .pdfDatabricks Generative AI Fundamentals  .pdf
Databricks Generative AI Fundamentals .pdf
 
Convergence of Robotics and Gen AI offers excellent opportunities for Entrepr...
Convergence of Robotics and Gen AI offers excellent opportunities for Entrepr...Convergence of Robotics and Gen AI offers excellent opportunities for Entrepr...
Convergence of Robotics and Gen AI offers excellent opportunities for Entrepr...
 

静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム