") no-repeat}.external-link:visited:after{background-color:#3f0071}main{font:400 1.6rem/3.2rem f-sans,sans-serif;margin:0 auto;padding:24px 0 64px;width:calc(min(100%,840px) - 32px)}main h1{font:400 2.8rem/4.8rem f-sans,sans-serif}main h2{font:400 2.4rem/3.2rem f-sans,sans-serif}main h3{font:400 2.2rem/2.4rem f-sans,sans-serif}main h4{font:400 2rem/2.4rem f-sans,sans-serif}main h5{font:400 1.8rem/2.4rem f-sans,sans-serif}main h6{font:400 1.6rem/2.4rem f-sans,sans-serif}main h1:not(:first-child),main h2:not(:first-child),main h3:not(:first-child),main h4:not(:first-child),main h5:not(:first-child),main h6:not(:first-child){margin-top:24px}main p{text-align:justify}main ol,main ul{padding-left:24px}main ol{list-style:decimal}main ul{list-style:disc}main strong{font-weight:700}main h1,main h2,main h3,main h4,main h5,main h6,main p,main ul,main ol,main img,main pre{margin-bottom:16px}main img{display:block;max-width:100%;height:auto;margin:0 auto}main table{border-collapse:collapse;margin:16px auto}main table td,main table th{border:0;padding:2px 8px}main table tr:first-child th{border-top:2px solid #74796c;border-bottom:1px solid #74796c}main table tr:last-child td{border-bottom:2px solid #74796c}main hr{width:100%}main blockquote{margin:0;padding:0 0 0 12px;border-left:2px solid #74796c}main code{font-family:f-mono,f-sans,monospace}main pre{outline:1px solid #74796c;border-radius:2px}main pre code{display:block;width:fit-content;padding:12px}main math{font-family:"Fira Math",f-sans,sans-serif}main details summary{cursor:pointer;list-style:none;width:fit-content;border-radius:2px}main details summary:before{content:"";display:inline-block;margin-right:4px;width:14px;height:14px;background-color:#1a1d16;mask:url("data:image/svg+xml;utf8,") no-repeat}@media (hover: hover){main details summary:hover{color:#0001b4;outline:1px dashed}main details summary:hover:before{background-color:#0001b4}}main details summary:active{color:#0001b4;text-decoration:none;outline:1px solid}main details summary:active:before{background-color:#0001b4}main details[open] summary:before{mask:url("data:image/svg+xml;utf8,") no-repeat}main .footnote{overflow:hidden;width:100%;height:0px;border:none;border-bottom:1px solid #74796c}main sup a{font-weight:700;text-decoration:none;border-radius:2px}main sup a:visited{color:#0001b4}@media (hover: hover){main sup a:hover{text-decoration:none;outline:1px dashed}}main sup a:active{text-decoration:none;outline:1px solid}main .data-footnote-backref{font-weight:700;text-decoration:none;border-radius:2px}main .data-footnote-backref:visited{color:#0001b4}@media (hover: hover){main .data-footnote-backref:hover{outline:1px dashed}}main .data-footnote-backref:active{outline:1px solid}main .footnotes p{margin:0 0 8px}.aa--l-pm{margin-left:-.5em}.aa--r-pm{margin-right:-.5em}.aa--m-pm{margin:0 -.25em}.aa--jw-aki:after{font-size:57.5862068966%;vertical-align:top;content:" "}.aa--lr-pm-aki:after{font-size:172.4137931034%;vertical-align:top;content:" "}.aa--m-pm-aki:after{font-size:86.2068965517%;vertical-align:top;content:" "}.aa--d-pm-aki:after{font-size:344.8275862069%;vertical-align:top;content:" "}header[data-astro-cid-3ef6ksr2] .header-content[data-astro-cid-3ef6ksr2]{display:flex;align-items:baseline;margin:0 auto;padding:24px 0 18px;width:calc(min(100%,840px) - 32px)}header[data-astro-cid-3ef6ksr2] .header-content[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]{color:inherit;text-decoration:none;border-radius:2px}@media (hover: hover){header[data-astro-cid-3ef6ksr2] .header-content[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]:hover{color:#0001b4;outline:1px dashed}}header[data-astro-cid-3ef6ksr2] .header-content[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]:active{color:#0001b4;outline:1px solid}header[data-astro-cid-3ef6ksr2] .header-content[data-astro-cid-3ef6ksr2] .title[data-astro-cid-3ef6ksr2]{font:500 1.6rem/2.4rem f-sans,sans-serif;margin-bottom:6px}header[data-astro-cid-3ef6ksr2] .header-content[data-astro-cid-3ef6ksr2] nav[data-astro-cid-3ef6ksr2]{font:500 1.4rem/2.4rem f-sans,sans-serif;margin-left:auto}header[data-astro-cid-3ef6ksr2] .header-content[data-astro-cid-3ef6ksr2] nav[data-astro-cid-3ef6ksr2] ul[data-astro-cid-3ef6ksr2]{display:flex}header[data-astro-cid-3ef6ksr2] .header-content[data-astro-cid-3ef6ksr2] nav[data-astro-cid-3ef6ksr2] ul[data-astro-cid-3ef6ksr2] li[data-astro-cid-3ef6ksr2]:not(:first-child){margin-left:12px}header[data-astro-cid-3ef6ksr2] .header-content[data-astro-cid-3ef6ksr2] nav[data-astro-cid-3ef6ksr2] ul[data-astro-cid-3ef6ksr2] .nav-item[data-astro-cid-3ef6ksr2]{display:inline}header[data-astro-cid-3ef6ksr2] .header-content[data-astro-cid-3ef6ksr2] nav[data-astro-cid-3ef6ksr2] ul[data-astro-cid-3ef6ksr2] .nav-item[data-astro-cid-3ef6ksr2] svg[data-astro-cid-3ef6ksr2]{margin-right:4px;vertical-align:-7.5%}footer[data-astro-cid-sz7xmlte]{position:sticky;top:100lvh}footer[data-astro-cid-sz7xmlte] .footer-content[data-astro-cid-sz7xmlte]{display:flex;margin:0 auto;padding:8px 0 24px;width:calc(min(100%,840px) - 32px)}footer[data-astro-cid-sz7xmlte] .footer-content[data-astro-cid-sz7xmlte] .copyright[data-astro-cid-sz7xmlte]{font:500 1.4rem/2.4rem f-sans,sans-serif;margin-right:12px}footer[data-astro-cid-sz7xmlte] .footer-content[data-astro-cid-sz7xmlte] .nav[data-astro-cid-sz7xmlte]{font:500 1.4rem/2.4rem f-sans,sans-serif;margin-left:auto}footer[data-astro-cid-sz7xmlte] .footer-content[data-astro-cid-sz7xmlte] .nav[data-astro-cid-sz7xmlte] li[data-astro-cid-sz7xmlte]:not(:first-child){margin-top:8px}footer[data-astro-cid-sz7xmlte] .footer-content[data-astro-cid-sz7xmlte] .nav[data-astro-cid-sz7xmlte] .external-link[data-astro-cid-sz7xmlte]:after{height:14px}footer[data-astro-cid-sz7xmlte] .footer-content[data-astro-cid-sz7xmlte] .nav[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]{text-decoration:none}@media (hover: hover){footer[data-astro-cid-sz7xmlte] .footer-content[data-astro-cid-sz7xmlte] .nav[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]:hover{text-decoration:underline 8%}}footer[data-astro-cid-sz7xmlte] .footer-content[data-astro-cid-sz7xmlte] .nav[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]:active{text-decoration:underline 8%}
.date[data-astro-cid-egg7nqdx]{font:400 1.4rem/2.4rem f-sans,sans-serif;color:#44483e;display:flex;margin-top:4px}.date[data-astro-cid-egg7nqdx] .updated[data-astro-cid-egg7nqdx]{margin-left:12px}.date[data-astro-cid-egg7nqdx] .space[data-astro-cid-egg7nqdx]{margin-left:4px}.tags[data-astro-cid-egg7nqdx]{font:400 1.4rem/2.4rem f-sans,sans-serif;margin:2px -8px 32px 0}.tags[data-astro-cid-egg7nqdx] .tag[data-astro-cid-egg7nqdx]{display:inline-block;margin-right:8px;color:#44483e;text-decoration:none;border-radius:2px}@media (hover: hover){.tags[data-astro-cid-egg7nqdx] .tag[data-astro-cid-egg7nqdx]:hover{color:#0001b4;outline:1px dashed}}.tags[data-astro-cid-egg7nqdx] .tag[data-astro-cid-egg7nqdx]:active{color:#0001b4;outline:1px solid}
LuaLaTeXのすゝめ | Daiji BlogLuaLaTeXのすゝめ
はじめに
この記事では高機能でイケイケなLuaLaTeXを紹介します。
現在日本で一般的に使用されているLaTeXはupLaTeXだと思います。upLaTeXはUnicode対応の日本語LaTeXエンジンが収録されている、pLaTeXの進化系みたいなものです。upLaTeXはpLaTeXからの移行が容易で、環境依存文字やJIS第1・第2水準の漢字を意識せずに使用できる点が初心者に好まれている理由の1つだと思います。
LaTeXは下の図の様にTeXファイルの執筆からPDFまで行います。レガシーLaTeX(upLaTeXなど)はDVIファイルを経由してPDFを作成します。それに対しモダンLaTeX(LuaLaTeXなど)は直接PDFを作成します。LuaLaTeXは海外でメジャーであるpdfLaTeXに軽量スクリプト言語であるLuaを組み込んだものです。pdfLaTeXの後継として期待されていて、LuaTeX-jaプロジェクトによりupLaTeX以上の自由度で和文組版が可能となっています。LuaLaTeXはUnicodeに対応しています。さらにフォントの設定が簡単で、OpenTypeやTrueTypeフォントを直接扱うことができます。

フォント
LuaLaTeXの最大の強みと言えるのがフォントについてです。昔ながらのLaTeXではフォントの設定が非常に難しいのに対して、LuaLaTeXではソースファイル内で簡単に設定できます。fontspec
を和文フォントに対応するように拡張したluatexja-fontspec
を用いてフォントの設定を行います。細かな設定方法については、LuaLaTeXでフォント細かく変更する方法を参照してください。
luatexja-fontspec
を使用することで下に示すコードにより、OSにインストールされているフォントをPDFに埋め込むことができます。また、ttf
ファイルなどを直接参照することもできます。
\usepackage{luatexja-fontspec}
\setmainfont[Ligatures=TeX]{Times New Roman}
\setmainjfont[BoldFont=MS Gothic]{MS Mincho}
あらかじめ用意された和文フォントから選択することができるluatexja-preset
というパッケージがあります。たとえばIPA明朝とIPAゴシックを使う設定する場合次のように書けばよいです。他のフォントについてはLaTeX-jaの使い方を参照してください。
\usepackage[ipa]{luatexja-preset}
Luaを書く
はじめにでも書きましたがLuaTeXからLuaを利用できます。LuaLaTeXのソース中でLuaを書く場合には\directlua
を使用します。LuaからTeXに出力するにはtex.print
を使用します。実際にLuaを利用してを表示してみます。以下に示すコードによりが計算(?)できています。もっと詳しいことは徹底攻略!LuaLaTeXでLuaコードを「書く」ためのコツでわかりやすく説明されています。
\directlua{tex.print(math.sqrt(2))}
ドキュメントクラス
LuaLaTeXのjsclasses
互換クラス次の通りです。現在はupLaTeXとLuaLaTeXの両方で使える、日本語組版処理の要件に準拠したjlreq
が人気です。詳しくは今度、別の記事で解説したいと思っています。
種類 | ドキュメントクラス | 内容 |
---|
article | ltjsarticle | 論文・レポート用 |
book | ltjsbook | 書籍用 |
report | ltjsreport | レポート用 |
jspf | ltjspf | 某学会誌用 |
kiyou | ltjskiyou | 某紀要用 |
おまけ
upLaTeXでは全角文字の幅と高さをzw
とzh
という単位で表していたが、LuaLaTeXでは\zw
と\zh
となりました。
実際に確かめたわけではないが、Windows用のLuaLaTeXではファイル名を日本語にしてもいいらしいです。どうせ日本語のファイル名にしないけどな~
おわりに
「はじめに」が大きくて頭でっかちな記事になってしまいました。まだ説明できていない内容があります。今後暇を見付けて記事のアップデートしていきたいと思います。楽しいLuaLaTeXライフを願っています。
文献
- 改定第8版LaTeX2e美文書作成入門
- LaTeX入門/発展変
- LuaTeX
- LuaTeX-jaパッケージ
- LuaLaTeX-ja用jsclasses互換クラス
- LaTeX-jaの使い方
- LuaLaTeXでフォント細かく変更する方法
- 徹底攻略!LuaLaTeXでLuaコードを「書く」ためのコツ
- LuaLaTeXのすゝめ