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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
230
LaTeX News斜め読み / texconf2024-ltnews
wtsnjp
0
300
Texdocのしくみ / texconf2024-texdoc
wtsnjp
0
170
数式識別子の文書内曖昧性の解消 / nlp2024
wtsnjp
0
91
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
480
Other Decks in Programming
See All in Programming
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
3
1.5k
symfony/aiとlaravel/boost
77web
0
130
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
500
【やさしく解説 設計編 #1】「ドメイン駆動」と「実装駆動」ってなに? 〜設計の考え方を、たとえ話で学ぼう〜
panda728
PRO
1
120
act2-costs.pdf
sumedhbala
0
110
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
260
ローカルLLMでどこまでコードが書けるか -縮小版 / How much code can be written on a local LLM Shortened
kishida
2
190
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
140
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
210
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
350
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
480
初めてのKubernetes 本番運用でハマった話
oku053
0
130
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4.3k
The Cult of Friendly URLs
andyhume
79
6.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.4k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
340
Designing for humans not robots
tammielis
254
26k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
970
Prompt Engineering for Job Search
mfonobong
0
380
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
2
340
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Making Projects Easy
brettharned
120
6.7k
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