Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
llmk: 新時代の LaTeX 文書ビルドツール / llmk
Watson
November 10, 2018
Programming
1
1.9k
llmk: 新時代の LaTeX 文書ビルドツール / llmk
Watson
November 10, 2018
Tweet
Share
More Decks by Watson
See All by Watson
Building Dataset for Grounding of Formulae — Annotating Coreference Relations Among Math Identifiers / lrec2022
wtsnjp
0
29
MioGatto による数式グラウンディング データセットの構築 / nlp2022
wtsnjp
0
230
MioGatto: A Math Identifier-oriented Grounding Annotation Tool / mathui2021
wtsnjp
0
160
日本語化プロジェクト 〜TeX Live と learnlatex.org〜 / localize
wtsnjp
0
1.1k
Dataset Creation for Grounding of Formulae / SCIDOCA2020
wtsnjp
0
150
l3regex: TeX で実装された正規表現エンジン / l3regex
wtsnjp
1
590
A TeX-oriented Research Topic: Synthetic Analysis on Mathematical Expressions and Natural Language / tug2019
wtsnjp
0
140
Understanding Scientific Documents with Synthetic Analysis on Mathematical Expressions and Natural Language / cicm2019
wtsnjp
0
200
A Quantitative Evaluation of Natural Language Question Interpretation for Questions Answering Systems / jist2018
wtsnjp
0
170
Other Decks in Programming
See All in Programming
tidy_rpart
bk_18
0
580
Enumを自動で網羅的にテストしてみた
estie
0
1.2k
フロントエンドで学んだことをデータ分析で使ってみた話
daichi_igarashi
0
180
はてなリモートインターンシップ2022 Web API 講義資料
hatena
0
150
花き業界のサプライチェーンを繋げるプロダクト開発の進め方
userlike1
0
160
domain層のモジュール化 / MoT TechTalk #15
mot_techtalk
0
110
xarray-Datatree: Hierarchical Data Structures for Multi-Model Science
tomnicholas
0
210
Most Valuable Bug(?) ~インシデント未遂から得た学び~
tatsumiakahori
0
150
T3 Stack and TypeScript ecosystem
quramy
3
740
OSC大阪 パスワード認証は人類には早すぎる ~ IDaaSを使ったソーシャルログインのすすめ ~
authyasan
7
1.3k
和暦を正しく扱うための暦の話
nagise
10
5.9k
Rust、何もわからない...#6発表資料
ryu19
0
110
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
22
1.7k
Scaling GitHub
holman
453
140k
Faster Mobile Websites
deanohume
295
29k
The MySQL Ecosystem @ GitHub 2015
samlambert
240
11k
The Mythical Team-Month
searls
210
40k
GraphQLとの向き合い方2022年版
quramy
20
9.9k
Producing Creativity
orderedlist
PRO
335
38k
Debugging Ruby Performance
tmm1
67
11k
Practical Orchestrator
shlominoach
178
8.9k
Designing for humans not robots
tammielis
245
24k
Atom: Resistance is Futile
akmur
256
24k
Six Lessons from altMBA
skipperchong
15
2.3k
Transcript
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ TEXConf 2018 Ұൠߨԋ llmk: ৽࣌ͷ
L A TEX จॻϏϧυπʔϧ ேਓ (wtsnjp) 2018 11 ݄ 10 1 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ L A TEX จॻͷϏϧυखॱᶃ
ҎԼͷ L A TEX จॻͷϏϧυखॱΛਪଌ͍ͯͩ͘͠͞ɿ $ tree . ᵓᴷᴷ duck.tex ᵓᴷᴷ essential.tex ᵓᴷᴷ essential.bib ᵋᴷᴷ snowman.tex ▶ Ͳͷ TEX ϑΝΠϧΛʁ Ͳͷ TEX ΤϯδϯͰʁ ▶ BibTEX ͷ࣮ߦඞཁʁ ͔ͯ͠͠ Biberʁ ▶ Makeindex ʁ ελΠϧ (*.ist) ͷࢦఆʁ 2 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ L A TEX จॻͷϏϧυखॱᶄ ਖ਼ղʢʁʣ
$ uplatex essential.tex & uplatex essential.tex $ bibtex essential $ makeindex -s gind.ist essential.idx $ uplatex essential.tex & uplatex essential.tex $ dvipdfmx essential.dvi ▶ ຖճखͰίϚϯυΛଧͭͷ໘͍͘͞ʜʜ ▶ ͜ͷใΛڞஶऀͳͲୈࡾऀʹڞ༗͢Δʹʁ ▶ ΫϥυγεςϜ൛༻αʔόΛར༻͢Δ߹ʁ ྫ ͜ͷϑΝΠϧߏͰ arXiv ΞοϓϩʔυΛࢼΈΔͱɼAutoTEX ͕ ͯ͢ͷ *.tex ͷίϯύΠϧΛࢼΈͯΤϥʔʹͳΔɽ L A TEX จॻͷϏϧυखॱϑΝΠϧߏ͔Βࣗ໌Ͱͳ͍ʂ 3 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ L A TEX จॻͷϏϧυखॱᶅ llmk
Λ͏ͱʜʜʂʁ 1. ࣍ͷ༰Λ llmk.toml ʹอଘ 1 source = "essential.tex" 2 latex = "uplatex" 3 4 [programs.makeindex] 5 opts = "-s gind.ist" 2. llmk ίϚϯυΛ࣮ߦ $ llmk 4 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ طଘπʔϧͷ latexmk ઃఆهड़ΛӅ͠ϑΝΠϧ .latexmkrc
ʹߦ͏ʢ߹͕͋Δʣ ࣮ߦ͞ΕΔॲཧ͕ڥʹΑΓҟͳΔʢϢʔβઃఆͷӨڹʣ ઃఆهड़ͷܗ͕ࣜ Perl ݴޠ ▶ ͦͦʮจॻ͝ͱʹϏϧυखॱΛ໌͖ࣔ͢ʯͱ͍͏ઃܭ ࢥͰ։ൃ͞Ε͍ͯͳ͍ arara ࣮ߦ͞ΕΔॲཧ͕ڥʹΑΓҟͳΔʢϧʔϧͷಠࣗఆٛʣ ಈ࡞ʹ JVM ͕ඞཁ ͦͷଞ ͦͦແ໊Ͱ͋Δ → ϏϧυखॱΛڞ༗͢Δํ๏͕ඪ४Խ͞ΕΔ͖ 5 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ llmk ͷجຊతͳಛ ▶ ઃܭࢥɿϏϧυखॱϓϩδΣΫτ͝ͱʹ໌͖ࣔ͢ ▶
texlua Ͱ࣮ߦՄೳʹΫϩεϓϥοτϑΥʔϜ ▶ Ϗϧυखॱهड़ͷܗࣜʹ TOML Λ࠾༻ ▶ Ϗϧυखॱͷهड़Λָʹ͢ΔσϑΥϧτઃఆ 6 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ ઃఆهड़ݴޠ TOML ᶃ ֓ཁ TOML:
Tom’s Obvious, Minimal Language ▶ Tom Preston-WernerʢGitHub ͷதͷਓʣ͕ఏҊ ▶ ઃఆهड़ʹಛԽͨ͠ϛχϚϜݴޠ cf. XML, JSON, YAML ▶ ਓ͕ؒಡΈॻ͖͍͢͠ ▶ ύʔαΛॻ͘ͷ؆୯ → llmk ༻ʹϑϧεΫϥον࣮ https://github.com/toml-lang/toml TOML Λ࠾༻͢ΔϓϩδΣΫτ ▶ Vim ͷϓϥάΠϯϚωʔδϟ NeoBundle, dein.vim ▶ ੩తαΠτδΣωϨʔλ Hugo 7 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ ઃఆهड़ݴޠ TOML ᶄ جຊ༷ جຊతͳΠϝʔδʮߦࢦͷ
key=valʯ ʢINI ͷൃల൛ʁʣ ▶ ίϝϯτʢ# ͔Βߦʣ ɼΠϯσϯτࣗ༝ɼΩʔͷॏෳෆՄ ▶ جຊతͳσʔλܕ ˞ࣈݱ࣌Ͱ llmk ະαϙʔτ ▶ จࣈྻʢશ 4 छɽΤεέʔϓॲཧͱෳߦจࣈྻະ࣮ʣ ▶ ɼුಈখɼ ▶ ϒʔϧ ྫ 1 # จࣈྻ 2 key = "value" # "str" ΤεέʔϓՄೳɼ’str’ verbatim 3 4 # 5 answer = 42 6 7 # ϒʔϧ 8 TeX_is_obsolete = true 8 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ ઃఆهड़ݴޠ TOML ᶅ σʔλߏ ▶
ྻɿཁૉΛΧϯϚ۠ΓͰهड़ɽσʔλܕͷࠞࡏෆՄ ▶ ςʔϒϧɿ͍ΘΏΔࣙॻʢϋογϡʣ ɽॱংอূͳ͠ ▶ ΠϯϥΠϯɾςʔϒϧɼςʔϒϧͷྻ ྫ 1 # ྻ 2 texconf = [ "Tokyo", "Fukuoka", "Fujisawa", "Sapporo" ] 3 4 # ςʔϒϧ 5 [snowman] # ࣍ͷςʔϒϧ·ͨ EOF ·Ͱ snowman ςʔϒϧͷ key=val 6 hat = "green" 7 snow = true 8 9 # ςʔϒϧͷωετ 10 [duck.queen] 11 color = "pink" 12 # JSON: { "duck": { "queen": { "color": "pink" } } } 9 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ llmk ͷجຊతͳ͍ํᶃ Ϗϧυखॱͷهड़ॴ ઐ༻ϑΝΠϧ ▶
ϑΝΠϧ໊ llmk.toml Ͱݻఆʢఆʣ ▶ llmk ίϚϯυΛҾͳ͠Ͱ࣮ߦ͢ΔͱɼࣗಈతʹಡΈࠐΈ L A TEX จॻιʔεͷίϝϯτ ▶ +++ ʹڬ·ΕͨίϝϯτྖҬʢTOML ϑΟʔϧυʣ ▶ llmk ίϚϯυͷҾʹ༩֤͑ͨϑΝΠϧʹ͍ͭͯಡΈࠐΈ ྫ 1 % +++ 2 % latex = "xelatex" 3 % +++ 4 \documentclass{article} 5 \begin{document} 6 Hello llmk! 7 \end{document} 10 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ llmk ͷجຊతͳ͍ํᶄ ୯७ͳઃఆΩʔ ▶ latex
(string): ༻͢Δ L A TEX Τϯδϯʢطఆɿlualatexʣ → dvipdf, bibtex ΩʔͳͲಉ༷ʹଘࡏ ▶ max_repeat (int): ܁Γฦ࣮͠ߦͷ্ݶʢنఆɿ3ʣ ▶ source (string or array of strings): จॻιʔε → ͜ͷΩʔ llmk.toml ͰͷΈ༗ޮ͔ͭඞਢ ྫ 1 # ॲཧର 2 source = [ "test1.tex", "test2.tex" ] 3 4 # ༻ϓϩάϥϜ 5 latex = "xelatex" 6 bibtex = "biber" 7 8 # ܁Γฦ͠ͷ্ݶ 9 max_repeat = 5 11 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ ॊೈͳ੍ޚᶃ sequence & programs ▶
sequence (array of strings): ϓϩάϥϜ໊Λ࣮ߦॱʹࢦఆ ▶ programs (table of tables): ֤ϓϩάϥϜͷৄࡉͳઃఆ sequence ͷྫ " latex " → " bibtex " programs ͷྫ latex command: "xelatex" auxiliary: "foo.aux" opts: "-recorder" bibtex command: "bibtex" target: "foo.bib" postprocess: " latex " 12 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ ॊೈͳ੍ޚᶄ programs ςʔϒϧ ֤ program
ςʔϒϧʹࢦఆՄೳͳΩʔ ▶ command (string): ࣮ߦ͢ΔίϚϯυ ▶ target (string): ରϑΝΠϧ͕ଘࡏ͢ΕίϚϯυ࣮ߦ ▶ opts (string or array of strings): ίϚϯυϥΠϯΦϓγϣϯ ▶ args (string or array of strings): ίϚϯυϥΠϯҾ ▶ auxiliary (string): ࢹରϑΝΠϧ ▶ postprocess (string): ޙॲཧϓϩάϥϜʢ࣮ߦ࣌ͷΈʣ ಛผͳࢦఆࢠ target, opts, args, auxiliary ΩʔͰҎԼͷࢦఆࢠ͕͑Δɽ ▶ %S: ॲཧதͷιʔεϑΝΠϧύεʢೖྗͦͷͷʣ ▶ %T: ֤ϓϩάϥϜͷ targetʢtarget ΩʔͰڍಈະఆٛʣ ▶ %B: %S ͷ basenameʢ֦ுࢠΛམͱͨ͠ͷʣ 13 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ ༨ஊɿΫʔϧͳϓϩδΣΫτʹϩΰ͕ඞཁ llmk ͷϩΰ ▶ sequence
͕Ϟνʔϑ ▶ ͪΖΜ TikZ ▶ llmk Ͱॲཧ͢Δͱɼ TEX2img Ͱ PNG ੜ ଞͷϓϩδΣΫτͷϩΰʢࢀߟʣ 14 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ σϑΥϧτઃఆᶃ جຊతͳߟ͑ํ ▶ ຖճθϩ͔Β sequence,
programs Λهड़͢Δͷେม → ඪ४తͳέʔεͰ͏·͍͘͘σϑΥϧτઃఆΛఏڙ ▶ ͍ΘΏΔϢʔβઃఆೝΊͨ͘ͳ͍ ∵ʮಉҰιʔε͔ΒৗʹಉҰͷ݁ՌʯΛอূ͍ͨ͠ ▶ TOML ʹهड़ͨ͠༰ͰσϑΥϧτઃఆΛ্ॻ͖͢Δ → ڍಈͷਪଌ͕͘͠ͳΔڪΕ ▶ Ϗϧυखॱͷσόοάग़ྗͳͲΛॆ࣮Խͯ͠ରԠ ▶ σϑΥϧτΛແޮԽ͢ΔΩʔͷՃΛݕ౼த σϑΥϧτ sequence " latex "→" bibtex "→" makeindex "→" dvipdf " 15 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ σϑΥϧτઃఆᶄ σϑΥϧτ programsʢൈਮʣ latex command:
"lualatex" auxiliary: "%B.aux" dvipdf command: "dvipdfmx" target: "%B.dvi" bibtex command: "bibtex" target: "%B.bib" postprocess: " latex " makeindex command: "makeindex" target: "%B.idx" postprocess: " latex " ▶ ্هҎ֎ʹ dvips, ps2pdf ͷطఆ͋ΓʢREADME ࢀরʣ ▶ ࠓޙඞཁʹԠͯ͡Ճ͢Δ༧ఆ → ϦΫΤετडதʂ 16 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ ۩ମతͳهड़ྫ dvips Λ͍͍ͨ programs ʹنఆ͕͋ΔͷͰɼsequence
͚ͩมߋ͢Εेɽ 1 # LaTeX Τϯδϯ pLaTeX Λ༻ 2 latex = "platex" # ࣮ [programs.latex] ͷ command Ωʔͷলུܗ 3 4 # dvipdf Ͱͳ͘ ps ܦ༝Ͱ PDF Λੜ͍ͨ͠ 5 sequence = [ "latex", "dvips", "ps2pdf" ] ࡞ۀσΟϨΫτϦΛԚͨ͘͠ͳ͍ ͋·ΓχονͳधཁɼෳࡶͳϩδοΫ llmk ͰରԠ͠ͳ͍ → llmk ͔Β֎෦πʔϧΛݺͼग़͍͢ํΞϦ 1 # ઐͷπʔϧ ClutTeX ʹؙ͛ 2 sequence = [ "cluttex" ] 3 4 [programs.cluttex] 5 command = "cllualatex" 17 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ طଘܗࣜͷαϙʔτ TOML ܗࣜͰͷϏϧυखॱهड़๏ɼllmk ͷͨΊ৽نʹઃܭͨ͠ ͷ͕ͩɼ࣮͍͔ͭ͘Α͘ΘΕ͍ͯΔطଘܗ͕ࣜ͋Δɽ
γΣόϯάʢ %# ه๏ͷҰछʣ ▶ ओͳ࠾༻ιϑτΣΞɿYaTeX ▶ llmk ͰαϙʔτࡁΈ %#!uplatex latex = "uplatex" ϚδοΫίϝϯτ ▶ ओͳ࠾༻ιϑτΣΞɿTeXShop, TeXworks, TeXstudio ▶ llmk Ͱαϙʔτ༧ఆ %!TEX program = pdflatex %!BIB program = biber latex = "pdflatex" bibtex = "bibtex" 18 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ ఆ͢Δར༻έʔε llmk CLI πʔϧͱͯ͠ͷར༻ʹͱͲ·ΒͣɼL
A TEX จॻͷϏϧυ Λඞཁͱ͢Δ༷ʑͳ໘Ͱར༻͞ΕΔ͜ͱΛఆ͍ͯ͠Δɽ ▶ ߴػೳςΩετΤσΟλ౷߹։ൃڥ ▶ L A TEX ؔ࿈ͷΫϥυαʔϏε ▶ ൛ઐ༻αʔόͰͷόονॲཧ 19 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ Α͋͘Δ࣭ (n = 1) llmk
L A TEX ઐ༻͔ʁ ੍ޚػߏ͕ेॊೈͳͷͰɼͦͷؾʹͳΕͲΜͳϓϩδΣΫτ ͷϏϧυʹ༻Մೳɽͨͩ͠ ▶ TOML ϑΟʔϧυͷ༷ TEX ͕લఏ ▶ σϑΥϧτઃఆ (sequence, programs) ͕ L A TEX ʹ࠷దԽ ηΩϡϦςΟʁ ଞͷϏϧυπʔϧͱಉఔ͔ͦΕҎ্ɽ ▶ ͦͦϏϧυπʔϧҰൠ͕҆શͰͳ͍ ∵ ҙͷίϚϯυΛ࣮ߦՄೳ ▶ llmk ৗʹઃఆΛ 1 Օॴʹهड़͢ΔͷͰɼνΣοΫ͕༰қ ωοτͰೖखͨ͠ϑΝΠϧΛ֬ೝͤͣʹ llmk Ͱॲཧ͠ͳ͍ʂ 20 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ Πϯετʔϧํ๏ͱݱঢ় Πϯετʔϧํ๏ 1. https://github.com/wtsnjp/llmk ͔Βιʔεೖख
2. ୯७ʹ texlua llmk.lua Λ࣮ߦʢ୯ମϑΝΠϧʣ ݱࡏͷόʔδϣϯɿv0.1 ▶ ͯ͢ͷ༷ v1.0 ·Ͱഁյతʹมߋ͞ΕಘΔ ▶ v1.0 ·Ͱʹ࣮༧ఆͷओཁͳػೳ࣮ࡁΈ → όά֬ೝɼࡉ͔͍ػೳ࣮ͱϦϑΝΫλϦϯά͕ඞཁ ▶ υΩϡϝϯτ࣮࣭తʹ README ͷΈ ▶ examples σΟϨΫτϦʹαϯϓϧଟ 21 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ ࠓޙͷํ ݕ౼ࣄ߲ ▶ ΤϯίʔσΟϯάɽUTF-8 Ҏ֎ΛͲ͏͢Δ͔ʁ
▶ લճ࣮ߦ͔࣌ΒϑΝΠϧมߋ͕͔͋ͬͨͲ͏͔ݕग़ʁ → ֎෦ϑΝΠϧ (foo.llmk_fdb) ͷॻ͖ग़͕͠ඞཁ ▶ TOML ೖྗʹ͍ͭͯɼࣄલͷܕνΣοΫ ϩʔυϚοϓʢ͋͘·Ͱ༧ఆʣ ▶ 2019-07-25 TEX Development Fund ظݶ ▶ ͜͜·Ͱʹ v1.0 ΛϦϦʔε ▶ CTAN ʹΞοϓϩʔυ ▶ 2019-08-09 TUG2019 (CA, USA) ▶ ޱ಄ൃදΛݕ౼த ▶ TUGboat هࣄࣥච͍ͨ͠ 22 / 23
llmk: ৽࣌ͷ L ATEX จॻϏϧυπʔϧ ·ͱΊ ▶ Ϗϧυखॱจॻ͝ͱʹ໌ࣔ͞ΕΔ͖ɽಛʹ ▶ ୈࡾऀͱݪߘΛڞ༗͢Δ߹
▶ ΫϥυαʔϏε൛ઐ༻αʔόར༻ͷ߹ ▶ ্Λઃܭࢥͱͯ͠ llmk ͱ͍͏৽͍͠πʔϧΛ։ൃ ▶ texlua Ͱ࣮ߦͰ͖ɼΫϩεϓϥοτϑΥʔϜ ▶ Ϗϧυखॱهड़ͷܗࣜ TOML ▶ खॱ໌͕ࣔͩɼهड़Λָʹ͢ΔσϑΥϧτઃఆ͕͋Δ → llmk Ͱॲཧ͢ΔݶΓৗʹ݁Ռ͕ಉ͡Ͱ͋Δ͜ͱΛॏཁࢹ ँࣙ llmk ϓϩδΣΫτ TUG ͷ TEX Development Fund ʹΑΓࢧԉΛ ड͚͍ͯ·͢ɽKarl, Norbert ͡Ίؔऀ֤Ґʹײँ͠·͢ɽ 23 / 23