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
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
210
dRuby over BLE
makicamel
2
390
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
13k
Oxlintのカスタムルールの現況
syumai
6
1.1k
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
130
Vite+ Unified Toolchain for the Web
naokihaba
0
340
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
7k
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
12
6.1k
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4.5k
OSもどきOS
arkw
0
590
Agentic UI
manfredsteyer
PRO
0
190
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
280
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
450
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
Abbi's Birthday
coloredviolet
3
8.2k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
YesSQL, Process and Tooling at Scale
rocio
174
15k
GraphQLとの向き合い方2022年版
quramy
50
15k
Writing Fast Ruby
sferik
630
63k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
A better future with KSS
kneath
240
18k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
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