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
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
220
LaTeX News斜め読み / texconf2024-ltnews
wtsnjp
0
290
Texdocのしくみ / texconf2024-texdoc
wtsnjp
0
170
数式識別子の文書内曖昧性の解消 / nlp2024
wtsnjp
0
86
Building Dataset for Grounding of Formulae — Annotating Coreference Relations Among Math Identifiers / lrec2022
wtsnjp
0
280
MioGatto による数式グラウンディング データセットの構築 / nlp2022
wtsnjp
0
680
MioGatto: A Math Identifier-oriented Grounding Annotation Tool / mathui2021
wtsnjp
0
450
日本語化プロジェクト 〜TeX Live と learnlatex.org〜 / localize
wtsnjp
0
1.4k
Dataset Creation for Grounding of Formulae / SCIDOCA2020
wtsnjp
0
480
Other Decks in Programming
See All in Programming
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
1
110
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
740
Claspは野良GASの夢をみるか
takter00
0
210
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
570
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
800
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
170
技術的負債解消で開発者の未来を開く- AIの力でコード刷新
kmd2kmd
0
120
RTSPクライアントを自作してみた話
simotin13
0
630
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
580
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
14
5.8k
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.2k
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.5k
Featured
See All Featured
Docker and Python
trallard
47
3.9k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
610
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
WENDY [Excerpt]
tessaabrams
11
38k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Git: the NoSQL Database
bkeepers
PRO
432
67k
The untapped power of vector embeddings
frankvandijk
2
1.8k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
390
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
260
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
950
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
240
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