Online.tex 2020で発表したスライドです
SATYSFIを使用した Markdown から LATEX へのファイル変換についてOnline.tex 2020金子尚樹2020/11/21
View Slide
自己紹介所属 開成学園開成高等学校学年 高校二年普段やってること SATYSFIのパッケージ作成twitter @puripuri2100e-mail [email protected]1
今日話すこと• SATYSFIの簡単な紹介• 今回、何をしたのか・動機• 実装方法• 使用について• 今後について2
SATYSFIとはエラーがわかりやすく使いやすい組版言語(を目指している)新しいマークアップ言語とその処理系3
SATYSFIとはエラーがわかりやすく使いやすい組版言語(を目指している)新しいマークアップ言語とその処理系• 欧文組版に必要なハイフネーション• 日本語組版にも対応• フォントを簡単に変更可能• 数式組版可能• グラフィック処理がある程度できる• 表現力の高いプログラミング層• エラーがわかりやすい(体感)3
SATYSFIとはエラーがわかりやすく使いやすい組版言語(を目指している)新しいマークアップ言語とその処理系• 欧文組版に必要なハイフネーション• 日本語組版にも対応• フォントを簡単に変更可能• 数式組版可能• グラフィック処理がある程度できる• 表現力の高いプログラミング層• エラーがわかりやすい(体感)• 専用の構文を書いた saty ファイルだけでなく、Markdownファイルを処理することもできる3
SATYSFIとはエラーがわかりやすく使いやすい組版言語(を目指している)新しいマークアップ言語とその処理系• 欧文組版に必要なハイフネーション• 日本語組版にも対応• フォントを簡単に変更可能• 数式組版可能• グラフィック処理がある程度できる• 表現力の高いプログラミング層• エラーがわかりやすい(体感)• 専用の構文を書いた saty ファイルだけでなく、Markdownファイルを処理することもできる• PDF だけではなくテキストファイルを出力することもできる3
今回したことMarkdwon ファイルを与えたらそれに対応する LATEX ファイルを出力する SATYSFIのライブラリを作りましたhttps://github.com/puripuri2100/SATySFi-md2latex にあります4
作った動機既にテキストモードを使って saty ファイルから LATEX ファイルを生成するライブラリを作っていたので、Markdown 入力と悪魔合体させてみたかったから5
何が嬉しいのか• Markdwon ファイルの中身を評価して型検査器から通常のSATYSFIの処理に合流するので、ある程度安全性とエラーのわかりやすさが担保されている• SATYSFIのわかりやすい(個人の感想です)文法でパッケージを書くことさえできれば、同じ Markdwon ファイルからどのようなファイル形式でも出力することができる• 将来多種多様な形式のファイルを受け付けられるようになった時に資産を生かせる6
何が嬉しいのか• Markdwon ファイルの中身を評価して型検査器から通常のSATYSFIの処理に合流するので、ある程度安全性とエラーのわかりやすさが担保されている• SATYSFIのわかりやすい(個人の感想です)文法でパッケージを書くことさえできれば、同じ Markdwon ファイルからどのようなファイル形式でも出力することができる• 将来多種多様な形式のファイルを受け付けられるようになった時に資産を生かせる• SATYSFIの文字列操作プリミティブを用いてある程度安全に黒魔術を使うことができる6
実装方法md ファイルのタグに対応する SATYSFIコマンドを記録したmd2latex.satysfi-mdというファイルと、実際に出力する LATEX ファイルを作るためのクラスファイルである md2latex.satyh-latexファイルを作成しました。7
実装方法md ファイルのタグに対応する SATYSFIコマンドを記録したmd2latex.satysfi-mdというファイルと、実際に出力する LATEX ファイルを作るためのクラスファイルである md2latex.satyh-latexファイルを作成しました。code 系やリンク参照系は既存の code.satyh-latexやurl.satyh-latexに投げ、他のものは頑張ってクラスファイル内で実装しました7
起動方法commonmark に則って書いてsatysfi --markdown "md2latex/md2latex" --text-mode "tex,latex" <file name>.md -o .texするだけ!8
デモ9
今後について• スライド用クラスファイルを作ってみたい• 現状対応できている markdown 記法が pandoc 等と比べて少ない点を改善できるなら改善したい10