Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
llmk: 新時代の LaTeX 文書ビルドツール / llmk
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Watson
November 10, 2018
Programming
2.6k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
llmk: 新時代の LaTeX 文書ビルドツール / llmk
Watson
November 10, 2018
More Decks by Watson
See All by Watson
Recent Status of the TeX Community in Japan / bachotex2025
wtsnjp
1
240
LaTeX News斜め読み / texconf2024-ltnews
wtsnjp
0
310
Texdocのしくみ / texconf2024-texdoc
wtsnjp
0
180
数式識別子の文書内曖昧性の解消 / nlp2024
wtsnjp
0
95
Building Dataset for Grounding of Formulae — Annotating Coreference Relations Among Math Identifiers / lrec2022
wtsnjp
0
280
MioGatto による数式グラウンディング データセットの構築 / nlp2022
wtsnjp
0
690
MioGatto: A Math Identifier-oriented Grounding Annotation Tool / mathui2021
wtsnjp
0
460
日本語化プロジェクト 〜TeX Live と learnlatex.org〜 / localize
wtsnjp
0
1.4k
Dataset Creation for Grounding of Formulae / SCIDOCA2020
wtsnjp
0
490
Other Decks in Programming
See All in Programming
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
540
「人を評価する AI」の設計と実装
ryoyanara
0
180
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
590
Lean は証明の正しさを確認するためだけのツールって思ってませんか?
inoueasei
1
150
Apache Hive: そしてCloud Native Lakehouseへ
okumin
1
210
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
160
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
310
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
330
Built Our Own Background Agent at LayerX
layerx
PRO
9
5k
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
180
メールのエイリアス機能を履き違えない
isshinfunada
0
230
Featured
See All Featured
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1.1k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
930
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.5k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.6k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Raft: Consensus for Rubyists
vanstee
141
7.6k
BBQ
matthewcrist
89
10k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
260
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
350
Agile that works and the tools we love
rasmusluckow
331
22k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
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