List of Luatex - text.Baldanders.info
tag:text.Baldanders.info,2022-01-04:/tags
2022-01-04T15:16:30+09:00
帰ってきた「しっぽのさきっちょ」
https://text.baldanders.info/images/avatar.jpg
https://text.baldanders.info/images/avatar.jpg
2022年は寅年らしいので
tag:text.Baldanders.info,2022-01-04:/remark/2022/01/tiger/
2022-01-04T06:16:30+00:00
2022-01-04T06:16:51+00:00
おめでとうございます〜
Spiegel
https://baldanders.info/profile/
<p>2022年は寅年らしい。
トラといえば昔の $\mathrm{\LaTeX}$ 本で EPS ファイルを貼り込むときによく使われる虎の絵(<code>tiger.eps</code>)って今もあるんだろうか。</p>
<p>と思って<a href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1" title="[改訂第8版]LaTeX2ε美文書作成入門 | 奥村晴彦, 黒木裕介 |本 | 通販 | Amazon">『LaTeX2ε美文書作成入門』の第8版</a>を見てみたら今も御健在らしい。
実際に TeX Live のインストール先ディレクトリを検索してみたらあちこちにあった(笑)</p>
<p>というわけで $\mathrm{Lua\LaTeX}$ で虎の絵を表示してみる。
こんな感じでどうかな。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-latex" data-lang="latex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="na">[report]</span><span class="nb">{</span>jlreq<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="na">[haranoaji,jis2004,deluxe,match,jfm_yoko=jlreq,jfm_tate=jlreqv]</span><span class="nb">{</span>luatexja-preset<span class="nb">}</span> <span class="c">% Japanese fonts
</span></span></span><span class="line"><span class="cl"><span class="c"></span><span class="k">\usepackage</span><span class="nb">{</span>graphicx<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>figure<span class="nb">}</span>
</span></span><span class="line"><span class="cl"> <span class="k">\centering</span>
</span></span><span class="line"><span class="cl"> <span class="k">\includegraphics</span><span class="na">[width=\columnwidth,clip]</span><span class="nb">{</span>./tiger.eps<span class="nb">}</span>
</span></span><span class="line"><span class="cl"> <span class="k">\caption</span><span class="nb">{</span>2022年は寅年らしい<span class="nb">}</span>
</span></span><span class="line"><span class="cl"> <span class="k">\label</span><span class="nb">{</span>fig:tiger<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>figure<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span></code></pre></div><p><code>jlreq</code> は最近流行りの汎用ドキュメントクラスで W3C の「<a href="https://www.w3.org/TR/jlreq/">日本語組版処理の要件</a>」にほぼ準拠しているそうな。
しかも $\mathrm{p\LaTeX}$, $\mathrm{up\LaTeX}$, $\mathrm{Lua\LaTeX}$ で透過的に使えるのがありがたい(まぁ,フォントやドライバの指定の仕方が違うので全く同じにはならないけど)。</p>
<p>これを処理した結果は以下の通り。</p>
<figure style='margin:0 auto;text-align:center;'><a href="./tiger.pdf"><img src="./tiger-lualatex.png" srcset="./tiger-lualatex.png 949w" sizes="(min-width:600px) 500px, 80vw" alt="tiger.pdf" loading="lazy"></a><figcaption><div><a href="./tiger.pdf">tiger.pdf</a></div></figcaption>
</figure>
<p>おめでとうございます〜</p>
<h2>ブックマーク</h2>
<ul>
<li><a href="https://text.baldanders.info/remark/2019/04/install-texlive-in-ubuntu/">改めて TeX Live を Ubuntu に(APT を使わずに)導入する</a></li>
</ul>
<h2>参考図書</h2>
<div class="hreview">
<div class="photo"><a href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1"><img src="https://m.media-amazon.com/images/I/41xmBlTiwlL._SL160_.jpg" width="126" alt="photo"></a></div>
<dl>
<dt class="item"><a class="fn url" href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1">[改訂第8版]LaTeX2ε美文書作成入門</a></dt>
<dd>奥村晴彦 (著), 黒木裕介 (著)</dd>
<dd>技術評論社 2020-11-14</dd>
<dd>大型本</dd>
<dd>4297117126 (ASIN), 9784297117122 (EAN), 4297117126 (ISBN)</dd>
<dd>評価<abbr class="rating fa-sm" title="5"> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i></abbr></dd>
</dl>
<p class="description">2020年末に第8版が出てたのに気付かなかったよ。可能なら紙の本も買って常に側に置いておくのが吉。<a href="https://gihyo.jp/book/2020/978-4-297-11712-2">版元</a>には PDF 版もある。</p>
<p class="powered-by">reviewed by <a href='#maker' class='reviewer'>Spiegel</a> on <abbr class="dtreviewed" title="2021-09-05">2021-09-05</abbr> (powered by <a href="https://affiliate.amazon.co.jp/assoc_credentials/home">PA-APIv5</a>)</p>
</div> <!-- LaTeX2ε美文書作成入門 -->
Firge フォントを使って LuaLaTeX でコードを書く
tag:text.Baldanders.info,2021-09-30:/remark/2021/09/lualatex-with-firge-font/
2021-09-30T13:29:34+00:00
2021-09-30T18:38:19+00:00
こういうのが欲しかったんだよ。
Spiegel
https://baldanders.info/profile/
<p>テキスト・エディタやターミナル・エミュレータ用の日本語が使えるフォントとして有名な<a href="https://github.com/yuru7/HackGen">白源(HackGen)</a>だが,個人的にどうしても思い入れがあって今まで使わなかった<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>。
で,たまたま<a href="https://qiita.com/tawara_/items/374f3ca0a386fab8b305" title="Ricty を神フォントだと崇める僕が、フリーライセンスのプログラミングフォント「白源」を作った話 - Qiita">作者の方の Qiita 記事</a>を目にしたのだが</p>
<figure>
<blockquote><p>HackGen の姉妹フォント “<strong>Firge (ファージ)</strong>” を試験的にリリースしました!<br>
<a href="https://github.com/yuru7/Firge/releases">https://github.com/yuru7/Firge/releases</a></p>
<p>英数字部分に Mozilla 製 Fira Mono、日本語文字部分に HackGen と同じ源柔ゴシック(濁点等の修正も含む)、を適用しています。<br>
HackGen の批判的な意見として多かった以下の点を満たすことを意識しました。</p>
<ul>
<li><code>0</code> はドットゼロではなくスラッシュゼロに。</li>
<li><code>|</code> は破断線ではなく直線に。</li>
</ul>
</blockquote>
<figcaption><div><q><a href="https://qiita.com/tawara_/items/374f3ca0a386fab8b305">Ricty を神フォントだと崇める僕が、フリーライセンスのプログラミングフォント「白源」を作った話 - Qiita</a></q>より</div></figcaption>
</figure>
<p>とアナウンスされていた。
ありがとう! これが欲しかったんだよ。</p>
<p>というわけで早速 Windows Terminal (+ <a href="https://github.com/nyaosorg/nyagos" title="nyaosorg/nyagos: NYAGOS - The hybrid Commandline Shell between UNIX & DOS">NYAGOS</a>) と Ubuntu 機のターミナル・エミュレータに導入した。
あっ,あとブラウザの monospace の既定フォントね<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>。</p>
<p>ちなみに Ununtu 機にフォントを入れる場合は</p>
<table>
<thead>
<tr>
<th>ディレクトリ</th>
<th>用途</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>/usr/share/fonts</code></td>
<td>システムフォント</td>
</tr>
<tr>
<td><code>/usr/local/share/fonts</code></td>
<td>追加フォントをマシンで共有する場合</td>
</tr>
<tr>
<td><code>~/.fonts</code></td>
<td>個人で導入する場合</td>
</tr>
</tbody>
</table>
<p>のいずれかにフォントファイルをコピーして(ディレクトリを掘ってもOK)</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ fc-cache -fv
</span></span></code></pre></div><p>でキャッシュを更新すれば OK。
確認は</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ fc-list | grep Firge
</span></span><span class="line"><span class="cl">/usr/local/share/fonts/FirgeNerd/Firge35Nerd-Regular.ttf: Firge35Nerd:style=Regular
</span></span><span class="line"><span class="cl">/usr/local/share/fonts/FirgeNerd/FirgeNerd-Bold.ttf: FirgeNerd:style=Bold
</span></span><span class="line"><span class="cl">/usr/local/share/fonts/FirgeNerd/FirgeNerd-Regular.ttf: FirgeNerd:style=Regular
</span></span><span class="line"><span class="cl">/usr/local/share/fonts/FirgeNerd/Firge35NerdConsole-Regular.ttf: Firge35Nerd Console:style=Regular
</span></span><span class="line"><span class="cl">/usr/local/share/fonts/FirgeNerd/Firge35NerdConsole-Bold.ttf: Firge35Nerd Console:style=Bold
</span></span><span class="line"><span class="cl">/usr/local/share/fonts/FirgeNerd/FirgeNerdConsole-Bold.ttf: FirgeNerd Console:style=Bold
</span></span><span class="line"><span class="cl">/usr/local/share/fonts/FirgeNerd/FirgeNerdConsole-Regular.ttf: FirgeNerd Console:style=Regular
</span></span><span class="line"><span class="cl">/usr/local/share/fonts/FirgeNerd/Firge35Nerd-Bold.ttf: Firge35Nerd:style=Bold
</span></span></code></pre></div><p>とすればよい。</p>
<p>で,この <a href="https://github.com/yuru7/Firge" title="yuru7/Firge: Fira Mono と源真ゴシックを合成したプログラミングフォント Firge (ファージ)">Firge</a> フォントを使って $\mathrm{Lua\LaTeX}$ でコードを表示したいと思うよね。ね。</p>
<p>というわけで試してみよう。
なお <a href="http://www.tug.org/texlive/" title="TeX Live - TeX Users Group">TeX Live</a> のインストールは先日書いた「<a href="https://text.baldanders.info/remark/2021/09/install-texlive-in-ubuntu-again/">改めて TeX Live を Ubuntu に(APT を使わずに)導入する</a>」を参照のこと。</p>
<p>$\mathrm{Lua\LaTeX}$ でフォントを認識させるために <code>luaotfload-tool --update</code> でアップデートしておく。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ luaotfload-tool --update
</span></span></code></pre></div><p>念の為の確認。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ luaotfload-tool --fuzzy --find="FirgeNerd"
</span></span><span class="line"><span class="cl">luaotfload | resolve : Font "FirgeNerd" found!
</span></span><span class="line"><span class="cl">luaotfload | resolve : Resolved file name "/usr/local/share/fonts/FirgeNerd/FirgeNerd-Regular.ttf"
</span></span></code></pre></div><p>よしよし。</p>
<p>システムに <a href="https://github.com/yuru7/Firge" title="yuru7/Firge: Fira Mono と源真ゴシックを合成したプログラミングフォント Firge (ファージ)">Firge</a> フォントをインストールしないのであれば <code>$TEXMFLOCAL/fonts/</code> ディレクトリに適当に放り込んでおけばよい。
今回は $\mathrm{Lua\LaTeX}$ のみが対象なので CMAP ファイルとか面倒くさそうなのは華麗にスルーする(笑)</p>
<p>なお <code>$TEXMFLOCAL</code> ディレクトリは <code>kpsewhich</code> コマンドで調べられる。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ kpsewhich -var-value=TEXMFLOCAL
</span></span><span class="line"><span class="cl">/usr/local/texlive/texmf-local
</span></span></code></pre></div><p>ファイルを入れたら <code>ls-R</code> を更新するのを忘れないように。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ mktexlsr
</span></span><span class="line"><span class="cl">mktexlsr: Updating /usr/local/texlive/2021/texmf-config/ls-R...
</span></span><span class="line"><span class="cl">mktexlsr: Updating /usr/local/texlive/2021/texmf-dist/ls-R...
</span></span><span class="line"><span class="cl">mktexlsr: Updating /usr/local/texlive/2021/texmf-var/ls-R...
</span></span><span class="line"><span class="cl">mktexlsr: Updating /usr/local/texlive/texmf-local/ls-R...
</span></span><span class="line"><span class="cl">mktexlsr: Done.
</span></span></code></pre></div><p>念の為 <code>kpsewhich</code> コマンドで確認しておく。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ kpsewhich FirgeNerd-Regular.ttf
</span></span><span class="line"><span class="cl">/usr/local/texlive/texmf-local/fonts/truetype/FirgeNerd/FirgeNerd-Regular.ttf
</span></span></code></pre></div><p>確認したら <code>luaotfload-tool --update</code> も忘れないでね。</p>
<p>先日 <a href="https://text.baldanders.info/remark/2021/09/install-texlive-in-ubuntu-again/" title="改めて TeX Live を Ubuntu に(APT を使わずに)導入する">TeX Live をインストール</a>したときに使ったサンプルコードは以下の通り。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-latex" data-lang="latex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="nb">{</span>jlreq<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="na">[jis2004,deluxe]</span><span class="nb">{</span>luatexja-preset<span class="nb">}</span> <span class="c">% Japanese fonts
</span></span></span><span class="line"><span class="cl"><span class="c"></span><span class="k">\setmonofont</span><span class="na">[AutoFakeSlant,BoldItalicFeatures={FakeSlant},Scale=MatchLowercase]</span><span class="nb">{</span>Inconsolatazi4<span class="nb">}</span> <span class="c">% use Inconsolata
</span></span></span><span class="line"><span class="cl"><span class="c"></span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="nb">{</span>graphicx,xcolor<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="c">% \usepackage{listings}
</span></span></span><span class="line"><span class="cl"><span class="c"></span><span class="k">\usepackage</span><span class="nb">{</span>listings-golang<span class="nb">}</span> <span class="c">% import this package after listings
</span></span></span><span class="line"><span class="cl"><span class="c"></span><span class="k">\lstset</span><span class="nb">{</span>
</span></span><span class="line"><span class="cl"> frame=single,
</span></span><span class="line"><span class="cl"> basicstyle=<span class="k">\small\ttfamily</span>,
</span></span><span class="line"><span class="cl"> tabsize=4,
</span></span><span class="line"><span class="cl"> commentstyle=<span class="k">\color</span><span class="nb">{</span>darkgray<span class="nb">}</span>,
</span></span><span class="line"><span class="cl"> keywordstyle=<span class="k">\color</span><span class="nb">{</span>brown<span class="nb">}</span><span class="k">\bfseries</span>,
</span></span><span class="line"><span class="cl"> stringstyle=<span class="k">\color</span><span class="nb">{</span>blue<span class="nb">}</span>,
</span></span><span class="line"><span class="cl"> showstringspaces=false
</span></span><span class="line"><span class="cl"><span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\section</span><span class="nb">{</span>Go 言語による Hello World<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>lstlisting<span class="nb">}</span>[language=Golang]
</span></span><span class="line"><span class="cl">package main
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">import "fmt"
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">func main() <span class="nb">{</span>
</span></span><span class="line"><span class="cl"> for i := 0; i < 10; i++ <span class="nb">{</span>
</span></span><span class="line"><span class="cl"> fmt.Println("Hello, world") //Hello, 世界
</span></span><span class="line"><span class="cl"> <span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>lstlisting<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\section</span><span class="nb">{</span>シェルスクリプト<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>lstlisting<span class="nb">}</span>[language=sh]
</span></span><span class="line"><span class="cl">#!/bin/sh
</span></span><span class="line"><span class="cl">for i in `seq 100`; do
</span></span><span class="line"><span class="cl"> j="<span class="s">$</span><span class="nb">i"
</span></span></span><span class="line"><span class="cl"><span class="nb"> if </span><span class="o">[</span><span class="nb"> `expr </span><span class="s">$</span>i <span class="c">% 3` == 0 ]; then echo -n 'Fizz'; j=''; fi
</span></span></span><span class="line"><span class="cl"><span class="c"></span> if [ `expr <span class="s">$</span><span class="nb">i </span><span class="c">% 5` == 0 ]; then echo -n 'Buzz'; j=''; fi
</span></span></span><span class="line"><span class="cl"><span class="c"></span><span class="nb"> echo "</span><span class="s">$</span>j"
</span></span><span class="line"><span class="cl">done
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>lstlisting<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span></code></pre></div><p>これの組版結果はこちら。</p>
<figure style='margin:0 auto;text-align:center;'><a href="../install-texlive-in-ubuntu-again/sample.pdf"><img src="../install-texlive-in-ubuntu-again/sample.png" srcset="../install-texlive-in-ubuntu-again/sample.png 1252w" sizes="(min-width:600px) 500px, 80vw" alt="sample.pdf" loading="lazy"></a><figcaption><div><a href="../install-texlive-in-ubuntu-again/sample.pdf">sample.pdf</a></div></figcaption>
</figure>
<p>ここで <code>setmonofont</code> 指定を以下のように変更する。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-latex" data-lang="latex"><span class="line"><span class="cl"><span class="k">\setmonojfont</span><span class="na">[AutoFakeSlant,BoldItalicFeatures={FakeSlant},Scale=MatchLowercase]</span><span class="nb">{</span>FirgeNerd<span class="nb">}</span> <span class="c">% use FirgeNerd
</span></span></span><span class="line"><span class="cl"><span class="c"></span><span class="k">\setmonofont</span><span class="na">[AutoFakeSlant,BoldItalicFeatures={FakeSlant},Scale=MatchLowercase]</span><span class="nb">{</span>FirgeNerd<span class="nb">}</span> <span class="c">% use FirgeNerd
</span></span></span></code></pre></div><p>この場合の組版結果は以下の通り。</p>
<figure style='margin:0 auto;text-align:center;'><a href="./sample2.pdf"><img src="./sample2.png" srcset="./sample2.png 1253w" sizes="(min-width:600px) 500px, 80vw" alt="sample2.pdf" loading="lazy"></a><figcaption><div><a href="./sample2.pdf">sample2.pdf</a></div></figcaption>
</figure>
<p>小文字のエルとかで比べると分かりやすいだろうか。ただ日本語は <a href="https://github.com/yuru7/Firge" title="yuru7/Firge: Fira Mono と源真ゴシックを合成したプログラミングフォント Firge (ファージ)">Firge</a> フォントじゃないっぽい。</p>
<figure style='margin:0 auto;text-align:center;'><a href="./property.png"><img src="./property.png" srcset="./property.png 500w" sizes="(min-width:600px) 500px, 80vw" alt="プロパティ" loading="lazy"></a><figcaption><div><a href="./property.png">プロパティ</a></div></figcaption>
</figure>
<p>これの HaranoAjiGothic-Regular は多分コードの「世界」の部分だよねぇ。理由は不明。</p>
<p>ついでなので <a href="https://github.com/yuru7/HackGen" title="yuru7/HackGen: Hack と源柔ゴシックを合成したプログラミングフォント 白源 (はくげん/HackGen)">HackGen</a> フォントでも試してみようか。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-latex" data-lang="latex"><span class="line"><span class="cl"><span class="k">\setmonojfont</span><span class="na">[AutoFakeSlant,BoldItalicFeatures={FakeSlant},Scale=MatchLowercase]</span><span class="nb">{</span>HackGenNerd<span class="nb">}</span> <span class="c">% use HackGenNerd
</span></span></span><span class="line"><span class="cl"><span class="c"></span><span class="k">\setmonofont</span><span class="na">[AutoFakeSlant,BoldItalicFeatures={FakeSlant},Scale=MatchLowercase]</span><span class="nb">{</span>HackGenNerd<span class="nb">}</span> <span class="c">% use HackGenNerd
</span></span></span></code></pre></div><p>組版結果は以下の通り。</p>
<figure style='margin:0 auto;text-align:center;'><a href="./sample3.pdf"><img src="./sample3.png" srcset="./sample3.png 1248w" sizes="(min-width:600px) 500px, 80vw" alt="sample3.pdf" loading="lazy"></a><figcaption><div><a href="./sample3.pdf">sample3.pdf</a></div></figcaption>
</figure>
<p>これなら違いが分かりやすいかな。</p>
<p>ふむむー。
個人の好みの問題なんだろうけど,これなら <a href="http://levien.com/type/myfonts/inconsolata.html">Inconsolata</a> でも別にいいかなぁ。
やはりターミナル・エミュレータ用と割り切って使うほうがいいか。</p>
<h2>ブックマーク</h2>
<ul>
<li><a href="https://text.baldanders.info/remark/2017/10/writing-code-with-lualatex/">LuaLaTeX でコードを書いてみる</a></li>
</ul>
<h2>参考図書</h2>
<div class="hreview">
<div class="photo"><a href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1"><img src="https://m.media-amazon.com/images/I/41xmBlTiwlL._SL160_.jpg" width="126" alt="photo"></a></div>
<dl>
<dt class="item"><a class="fn url" href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1">[改訂第8版]LaTeX2ε美文書作成入門</a></dt>
<dd>奥村晴彦 (著), 黒木裕介 (著)</dd>
<dd>技術評論社 2020-11-14</dd>
<dd>大型本</dd>
<dd>4297117126 (ASIN), 9784297117122 (EAN), 4297117126 (ISBN)</dd>
<dd>評価<abbr class="rating fa-sm" title="5"> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i></abbr></dd>
</dl>
<p class="description">2020年末に第8版が出てたのに気付かなかったよ。可能なら紙の本も買って常に側に置いておくのが吉。<a href="https://gihyo.jp/book/2020/978-4-297-11712-2">版元</a>には PDF 版もある。</p>
<p class="powered-by">reviewed by <a href='#maker' class='reviewer'>Spiegel</a> on <abbr class="dtreviewed" title="2021-09-05">2021-09-05</abbr> (powered by <a href="https://affiliate.amazon.co.jp/assoc_credentials/home">PA-APIv5</a>)</p>
</div> <!-- LaTeX2ε美文書作成入門 -->
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>いや,大した思い入れでもないんだけど,新人(大昔)の頃は紙のコーディング・シートで書かされたこともあって,手書きのゼロは $\emptyset$ (empty set) なイメージなんだよねぇ。 <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:2">
<p>私はテキスト・エディタは明朝体じゃないと目がしんどいので,英数字は Inconsolata だけど日本語部分は Noto Serif CJK JP にしている。どなたか明朝体の monospace を作ってください。 <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
改めて TeX Live を Ubuntu に(APT を使わずに)導入する
tag:text.Baldanders.info,2021-09-09:/remark/2021/09/install-texlive-in-ubuntu-again/
2021-09-09T13:20:36+00:00
2021-09-10T09:57:54+00:00
LuaLaTeX でソースコードを含む文書を PDF 出力するところまで。
Spiegel
https://baldanders.info/profile/
<p>6月にパソコンを買い換えてから新しいマシンには $\mathrm{\TeX}$ 環境を入れてなかったのだが,先日『<a href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1" title="[改訂第8版]LaTeX2ε美文書作成入門 | 奥村晴彦, 黒木裕介 |本 | 通販 | Amazon">LaTeX2ε美文書作成入門</a>』第8版の<a href="https://text.baldanders.info/remark/2021/09/latex-primer/" title="改訂第8版『LaTeX2ε美文書作成入門』を眺める">読書感想文を書いた</a>ばかりなので,調子に乗って <a href="http://www.tug.org/texlive/" title="TeX Live - TeX Users Group">TeX Live</a> 2021 を入れてしまおうと思い立った。</p>
<p>『<a href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1" title="[改訂第8版]LaTeX2ε美文書作成入門 | 奥村晴彦, 黒木裕介 |本 | 通販 | Amazon">LaTeX2ε美文書作成入門</a>』の付録Aには</p>
<figure>
<blockquote><q>あらかじめ <code>/usr/local/texlive</code> というディレクトリを作成し,インストールする人の権限で書き込めるようにしておくのが簡単です</q></blockquote>
<figcaption><div><q><a href="https://www.amazon.co.jp/dp/B08MZ98Z1Q?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1">[改訂第8版]LaTeX2ε美文書作成入門</a></q>より</div></figcaption>
</figure>
<p>とか書かれてあって「やっぱそーなのか」と納得してしまった。
激しくダサい気がするがしょうがないか。
まぁ,今回は個人パソコンなので素直に</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ cd /usr/local/
</span></span><span class="line"><span class="cl">$ sudo mkdir texlive
</span></span><span class="line"><span class="cl">$ sudo chown -R username:username texlive
</span></span></code></pre></div><p>としてしおう。</p>
<p>サーバ機などでは,インストール完了後にオーナーを <code>root</code> に書き戻し</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ cd /usr/local
</span></span><span class="line"><span class="cl">$ sudo chown -R root:root texlive
</span></span><span class="line"><span class="cl">$ cd texlive/2021/bin/x86_64-linux/
</span></span><span class="line"><span class="cl">$ sudo ./tlmgr path add
</span></span></code></pre></div><p>と <code>/usr/local/bin/</code> 等パスの通ったディレクトリへシンボリック・リンクを張っておけば複数ユーザで共有できるようになる。
アップグレード等で元に戻す場合は</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ sudo tlmgr path remove
</span></span><span class="line"><span class="cl">$ cd /usr/local/
</span></span><span class="line"><span class="cl">$ sudo chown -R username:username texlive
</span></span><span class="line"><span class="cl">...
</span></span></code></pre></div><p>という感じに,いったんシンボリック・リンクを削除してから諸々の作業を行うといいだろう。</p>
<h2>OpenPGP 公開鍵を取ってくる</h2>
<p><a href="http://www.tug.org/texlive/" title="TeX Live - TeX Users Group">TeX Live</a> のサイトでは検証用に OpenPGP 公開鍵を公開している。
これを取ってきて自分の鍵束にインポートしてしまおう。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ gpg --fetch-key http://www.tug.org/texlive/files/texlive.asc
</span></span><span class="line"><span class="cl">gpg: 鍵を'http://www.tug.org/texlive/files/texlive.asc'から要求
</span></span><span class="line"><span class="cl">gpg: 鍵0D5E5D9106BAB6BC: 公開鍵"TeX Live Distribution <tex-live@tug.org>"をインポートしました
</span></span><span class="line"><span class="cl">gpg: 処理数の合計: 1
</span></span><span class="line"><span class="cl">gpg: インポート: 1
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">$ gpg --list-keys 0D5E5D9106BAB6BC
</span></span><span class="line"><span class="cl">pub rsa2048 2016-03-19 [SC]
</span></span><span class="line"><span class="cl"> C78B82D8C79512F79CC0D7C80D5E5D9106BAB6BC
</span></span><span class="line"><span class="cl">uid [ 不明 ] TeX Live Distribution <tex-live@tug.org>
</span></span><span class="line"><span class="cl">sub rsa2048 2016-03-19 [E]
</span></span><span class="line"><span class="cl">sub rsa2048 2016-03-19 [S] [有効期限: 2022-07-27]
</span></span></code></pre></div><p>これはアレだな。
<a href="http://www.tug.org/texlive/" title="TeX Live - TeX Users Group">TeX Live</a> がアップグレードされるたびに更新しろってことだな。</p>
<h2>インストーラのダウンロードと検証</h2>
<p>では続きを。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ curl -L "https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz" -O
</span></span><span class="line"><span class="cl">$ curl -L "https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz.sha512" -O
</span></span><span class="line"><span class="cl">$ curl -L "https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc" -O
</span></span><span class="line"><span class="cl">$ gpg -d install-tl-unx.tar.gz.sha512.asc
</span></span><span class="line"><span class="cl">gpg: 署名されたデータが'install-tl-unx.tar.gz.sha512'にあると想定します
</span></span><span class="line"><span class="cl">gpg: 2021年09月08日 08時53分40秒 JSTに施された署名
</span></span><span class="line"><span class="cl">gpg: RSA鍵4CE1877E19438C70を使用
</span></span><span class="line"><span class="cl">gpg: "TeX Live Distribution <tex-live@tug.org>"からの正しい署名 [不明の]
</span></span><span class="line"><span class="cl">gpg: *警告*: この鍵は信用できる署名で証明されていません!
</span></span><span class="line"><span class="cl">gpg: この署名が所有者のものかどうかの検証手段がありません。
</span></span><span class="line"><span class="cl">主鍵フィンガープリント: C78B 82D8 C795 12F7 9CC0 D7C8 0D5E 5D91 06BA B6BC
</span></span><span class="line"><span class="cl"> 副鍵フィンガープリント: D8F2 F860 57A8 57E4 2A88 106A 4CE1 877E 1943 8C70
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">$ sha512sum -c install-tl-unx.tar.gz.sha512
</span></span><span class="line"><span class="cl">install-tl-unx.tar.gz: OK
</span></span></code></pre></div><p>なんちう回りくどい<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>。
普通にダウンロードファイルに署名すりゃいいぢゃん <code>orz</code></p>
<p>ちなみに拙作の <a href="https://github.com/spiegel-im-spiegel/gnkf" title="spiegel-im-spiegel/gnkf: Network Kanji Filter by Golang">gnkf</a> を使っても</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ gnkf hash -a SHA-512 -c install-tl-unx.tar.gz.sha512
</span></span><span class="line"><span class="cl">install-tl-unx.tar.gz: OK
</span></span></code></pre></div><p>てな感じで検証できる。
<code>sha512sum</code> コマンドがない環境でどうぞ。
宣伝でした(笑)</p>
<h2>よーやくインストール開始</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ tar xvf install-tl-unx.tar.gz
</span></span><span class="line"><span class="cl">$ cd install-tl-20210908/
</span></span><span class="line"><span class="cl">$ ./install-tl
</span></span></code></pre></div><p>リポジトリを指定する必要はないみたい。
適当に近場を探してくれてるようだ。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">======================> TeX Live installation procedure <=====================
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">======> Letters/digits in <angle brackets> indicate <=======
</span></span><span class="line"><span class="cl">======> menu items for actions or customizations <=======
</span></span><span class="line"><span class="cl">= help> https://tug.org/texlive/doc/install-tl.html <=======
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> Detected platform: GNU/Linux on x86_64
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <B> set binary platforms: 1 out of 16
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <S> set installation scheme: scheme-full
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <C> set installation collections:
</span></span><span class="line"><span class="cl"> 40 collections out of 41, disk space required: 7135 MB
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <D> set directories:
</span></span><span class="line"><span class="cl"> TEXDIR (the main TeX directory):
</span></span><span class="line"><span class="cl"> /usr/local/texlive/2021
</span></span><span class="line"><span class="cl"> TEXMFLOCAL (directory for site-wide local files):
</span></span><span class="line"><span class="cl"> /usr/local/texlive/texmf-local
</span></span><span class="line"><span class="cl"> TEXMFSYSVAR (directory for variable and automatically generated data):
</span></span><span class="line"><span class="cl"> /usr/local/texlive/2021/texmf-var
</span></span><span class="line"><span class="cl"> TEXMFSYSCONFIG (directory for local config):
</span></span><span class="line"><span class="cl"> /usr/local/texlive/2021/texmf-config
</span></span><span class="line"><span class="cl"> TEXMFVAR (personal directory for variable and automatically generated data):
</span></span><span class="line"><span class="cl"> ~/.texlive2021/texmf-var
</span></span><span class="line"><span class="cl"> TEXMFCONFIG (personal directory for local config):
</span></span><span class="line"><span class="cl"> ~/.texlive2021/texmf-config
</span></span><span class="line"><span class="cl"> TEXMFHOME (directory for user-specific files):
</span></span><span class="line"><span class="cl"> ~/texmf
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <O> options:
</span></span><span class="line"><span class="cl"> [ ] use letter size instead of A4 by default
</span></span><span class="line"><span class="cl"> [X] allow execution of restricted list of programs via \write18
</span></span><span class="line"><span class="cl"> [X] create all format files
</span></span><span class="line"><span class="cl"> [X] install macro/font doc tree
</span></span><span class="line"><span class="cl"> [X] install macro/font source tree
</span></span><span class="line"><span class="cl"> [ ] create symlinks to standard directories
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <V> set up for portable installation
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Actions:
</span></span><span class="line"><span class="cl"> <I> start installation to hard disk
</span></span><span class="line"><span class="cl"> <P> save installation profile to 'texlive.profile' and exit
</span></span><span class="line"><span class="cl"> <Q> quit
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Enter command:
</span></span></code></pre></div><p>必要に応じて設定を変えて(既定のままでも無問題)問題なければ <code>I</code> を入力してインストールを開始する。
私の環境では1時間近くかかった。
お茶菓子を用意しておくか(笑)</p>
<p>環境変数については <code>~/.profile</code> ファイルに</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Expand $PATH to include the directory where TeX Live applications go.</span>
</span></span><span class="line"><span class="cl"><span class="nv">texlive_path</span><span class="o">=</span><span class="s2">"/usr/local/texlive/2021"</span>
</span></span><span class="line"><span class="cl"><span class="nv">texlive_bin_path</span><span class="o">=</span><span class="s2">"</span><span class="si">${</span><span class="nv">texlive_path</span><span class="si">}</span><span class="s2">/bin/x86_64-linux"</span>
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="o">[</span> -d <span class="s2">"</span><span class="nv">$texlive_path</span><span class="s2">"</span> -a -n <span class="s2">"</span><span class="si">${</span><span class="nv">PATH</span><span class="p">##*</span><span class="si">${</span><span class="nv">texlive_bin_path</span><span class="si">}}</span><span class="s2">"</span> -a -n <span class="s2">"</span><span class="si">${</span><span class="nv">PATH</span><span class="p">##*</span><span class="si">${</span><span class="nv">texlive_bin_path</span><span class="si">}</span><span class="p">:*</span><span class="si">}</span><span class="s2">"</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="cl"> <span class="nb">export</span> <span class="nv">PATH</span><span class="o">=</span><span class="s2">"</span><span class="nv">$PATH</span><span class="s2">:</span><span class="nv">$texlive_bin_path</span><span class="s2">"</span>
</span></span><span class="line"><span class="cl"><span class="k">fi</span>
</span></span><span class="line"><span class="cl"><span class="nb">unset</span> texlive_path texlive_bin_path
</span></span></code></pre></div><p>と追記しておけばいいかな。
一応,動作確認しておく。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ lualatex -v
</span></span><span class="line"><span class="cl">This is LuaHBTeX, Version 1.13.2 (TeX Live 2021)
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Execute 'luahbtex --credits' for credits and version details.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">There is NO warranty. Redistribution of this software is covered by
</span></span><span class="line"><span class="cl">the terms of the GNU General Public License, version 2 or (at your option)
</span></span><span class="line"><span class="cl">any later version. For more information about these matters, see the file
</span></span><span class="line"><span class="cl">named COPYING and the LuaTeX source.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">LuaTeX is Copyright 2021 Taco Hoekwater and the LuaTeX Team.
</span></span></code></pre></div><p>マニュアルに関しては <code>texdoc</code> コマンドを使って</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ texdoc luatex
</span></span></code></pre></div><p>などとすれば対応する PDF ファイルが開く。
便利!</p>
<h2>自動実行可能な外部コマンドの指定</h2>
<p>とりあえず <code>shell_escape_commands</code> の値を変更しておく。
インストール直後は</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ kpsewhich -var-value=shell_escape_commands
</span></span><span class="line"><span class="cl">bibtex,bibtex8,extractbb,gregorio,kpsewhich,makeindex,repstopdf,texosquery-jre8,
</span></span></code></pre></div><p>となっているので <code>/usr/ocal/texlive/texmf-local/web2c/texmf.cnf</code> ファイルを作成し以下を記述する。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">shell_escape_commands = \
</span></span><span class="line"><span class="cl">bibtex,bibtex8,pbibtex,jbibtex,\
</span></span><span class="line"><span class="cl">extractbb,\
</span></span><span class="line"><span class="cl">gregorio,\
</span></span><span class="line"><span class="cl">kpsewhich,\
</span></span><span class="line"><span class="cl">makeindex,mendex,\
</span></span><span class="line"><span class="cl">repstopdf,epspdf,\
</span></span><span class="line"><span class="cl">texosquery-jre8,\
</span></span></code></pre></div><p>これで <code>shell_escape_commands</code> の値が上書きされて</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ kpsewhich -var-value=shell_escape_commands
</span></span><span class="line"><span class="cl">bibtex,bibtex8,pbibtex,jbibtex,extractbb,gregorio,kpsewhich,makeindex,mendex,repstopdf,epspdf,texosquery-jre8,
</span></span></code></pre></div><p>となる。</p>
<p>設定を変更したら <code>mktexlsr</code> で状態を更新しておくこと。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ mktexlsr
</span></span><span class="line"><span class="cl">mktexlsr: Updating /usr/local/texlive/2021/texmf-config/ls-R...
</span></span><span class="line"><span class="cl">mktexlsr: Updating /usr/local/texlive/2021/texmf-dist/ls-R...
</span></span><span class="line"><span class="cl">mktexlsr: Updating /usr/local/texlive/2021/texmf-var/ls-R...
</span></span><span class="line"><span class="cl">mktexlsr: Updating /usr/local/texlive/texmf-local/ls-R...
</span></span><span class="line"><span class="cl">mktexlsr: Done.
</span></span></code></pre></div><h2>LuaLaTeX でなんか出力してみる</h2>
<p>そうだ。
プログラムコードを出してみよう。</p>
<ul>
<li><a href="https://text.baldanders.info/remark/2017/10/writing-code-with-lualatex/">LuaLaTeX でコードを書いてみる</a></li>
</ul>
<p>その前に <a href="https://ctan.org/tex-archive/macros/latex/contrib/listings" title="CTAN: /tex-archive/macros/latex/contrib/listings"><code>listings</code></a> パッケージで Go コードの syntax highlight が効くよう <a href="https://github.com/julienc91/listings-golang" title="julienc91/listings-golang: Golang support for the listings package in LaTeX"><code>listings-golang</code></a> を取ってくる。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ cd /usr/local/texlive/texmf-local/tex/latex/
</span></span><span class="line"><span class="cl">$ git clone git@github.com:julienc91/listings-golang.git
</span></span><span class="line"><span class="cl">$ mktexlsr
</span></span></code></pre></div><p>そうそう。
$\mathrm{Lua\LaTeX}$ を使うならフォントキャッシュも念の為にアップデートしておくか。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ luaotfload-tool -fu
</span></span></code></pre></div><p>用意したテキストはこんな感じ。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-latex" data-lang="latex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="nb">{</span>jlreq<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="na">[jis2004,deluxe]</span><span class="nb">{</span>luatexja-preset<span class="nb">}</span> <span class="c">% Japanese fonts
</span></span></span><span class="line"><span class="cl"><span class="c"></span><span class="k">\setmonofont</span><span class="na">[AutoFakeSlant,BoldItalicFeatures={FakeSlant},Scale=MatchLowercase]</span><span class="nb">{</span>Inconsolatazi4<span class="nb">}</span> <span class="c">% use Inconsolata
</span></span></span><span class="line"><span class="cl"><span class="c"></span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="nb">{</span>graphicx,xcolor<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="c">% \usepackage{listings}
</span></span></span><span class="line"><span class="cl"><span class="c"></span><span class="k">\usepackage</span><span class="nb">{</span>listings-golang<span class="nb">}</span> <span class="c">% import this package after listings
</span></span></span><span class="line"><span class="cl"><span class="c"></span><span class="k">\lstset</span><span class="nb">{</span>
</span></span><span class="line"><span class="cl"> frame=single,
</span></span><span class="line"><span class="cl"> basicstyle=<span class="k">\small\ttfamily</span>,
</span></span><span class="line"><span class="cl"> tabsize=4,
</span></span><span class="line"><span class="cl"> commentstyle=<span class="k">\color</span><span class="nb">{</span>darkgray<span class="nb">}</span>,
</span></span><span class="line"><span class="cl"> keywordstyle=<span class="k">\color</span><span class="nb">{</span>brown<span class="nb">}</span><span class="k">\bfseries</span>,
</span></span><span class="line"><span class="cl"> stringstyle=<span class="k">\color</span><span class="nb">{</span>blue<span class="nb">}</span>,
</span></span><span class="line"><span class="cl"> showstringspaces=false
</span></span><span class="line"><span class="cl"><span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\section</span><span class="nb">{</span>Go 言語による Hello World<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>lstlisting<span class="nb">}</span>[language=Golang]
</span></span><span class="line"><span class="cl">package main
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">import "fmt"
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">func main() <span class="nb">{</span>
</span></span><span class="line"><span class="cl"> for i := 0; i < 10; i++ <span class="nb">{</span>
</span></span><span class="line"><span class="cl"> fmt.Println("Hello, world") //Hello, 世界
</span></span><span class="line"><span class="cl"> <span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>lstlisting<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\section</span><span class="nb">{</span>シェルスクリプト<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>lstlisting<span class="nb">}</span>[language=sh]
</span></span><span class="line"><span class="cl">#!/bin/sh
</span></span><span class="line"><span class="cl">for i in `seq 100`; do
</span></span><span class="line"><span class="cl"> j="<span class="s">$</span><span class="nb">i"
</span></span></span><span class="line"><span class="cl"><span class="nb"> if </span><span class="o">[</span><span class="nb"> `expr </span><span class="s">$</span>i <span class="c">% 3` == 0 ]; then echo -n 'Fizz'; j=''; fi
</span></span></span><span class="line"><span class="cl"><span class="c"></span> if [ `expr <span class="s">$</span><span class="nb">i </span><span class="c">% 5` == 0 ]; then echo -n 'Buzz'; j=''; fi
</span></span></span><span class="line"><span class="cl"><span class="c"></span><span class="nb"> echo "</span><span class="s">$</span>j"
</span></span><span class="line"><span class="cl">done
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>lstlisting<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span></code></pre></div><p>へっへっへ。
<code>jlreq</code> ドキュメントクラスを使ってみたぜ。</p>
<p>これを処理した結果は以下の通り。</p>
<figure style='margin:0 auto;text-align:center;'><a href="./sample.pdf"><img src="./sample.png" srcset="./sample.png 1252w" sizes="(min-width:600px) 500px, 80vw" alt="sample.pdf" loading="lazy"></a><figcaption><div><a href="./sample.pdf">sample.pdf</a></div></figcaption>
</figure>
<p>うんうん。
こんなもんだろう。</p>
<h2><a href="https://code.visualstudio.com/" title="Visual Studio Code - Code Editing. Redefined">VS Code</a> に <a href="https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop" title="LaTeX Workshop - Visual Studio Marketplace">LaTeX Workshop</a> を導入する</h2>
<p>『<a href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1" title="[改訂第8版]LaTeX2ε美文書作成入門 | 奥村晴彦, 黒木裕介 |本 | 通販 | Amazon">LaTeX2ε美文書作成入門</a>』でも紹介されていた <a href="https://code.visualstudio.com/" title="Visual Studio Code - Code Editing. Redefined">VS Code</a> 用の <a href="https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop" title="LaTeX Workshop - Visual Studio Marketplace">LaTeX Workshop</a> を導入してみた。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ code --install-extension James-Yu.latex-workshop
</span></span></code></pre></div><p>たとえば,以下の内容で <code>.latexmkrc</code> ファイルを用意しておく。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-perl" data-lang="perl"><span class="line"><span class="cl"><span class="ch">#!/usr/bin/env perl</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># LaTeX commands</span>
</span></span><span class="line"><span class="cl"><span class="nv">$pdflatex</span> <span class="o">=</span> <span class="s">'lualatex %O -synctex=1 %S'</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$latex</span> <span class="o">=</span> <span class="s">'uplatex %O -synctex=1 %S'</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$latex_silent_switch</span> <span class="o">=</span> <span class="s">'-interaction=batchmode -c-style-errors'</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># bibTeX commands</span>
</span></span><span class="line"><span class="cl"><span class="nv">$bibtex</span> <span class="o">=</span> <span class="s">'upbibtex %O %B'</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$biber</span> <span class="o">=</span> <span class="s">'biber %O --bblencoding=utf8 -u -U --output_safechars %B'</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$makeindex</span> <span class="o">=</span> <span class="s">'mendex %O -o %D %S'</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Device Driver</span>
</span></span><span class="line"><span class="cl"><span class="nv">$dvipdf</span> <span class="o">=</span> <span class="s">'dvipdfmx %O -z9 -V 7 -o %D %S'</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$dvips</span> <span class="o">=</span> <span class="s">'dvips %O -z -f %S | convbkmk -u > %D'</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$ps2pdf</span> <span class="o">=</span> <span class="s">'ps2pdf14 -dPDFA -dPDFACompatibilityPolicy=1 -sProcessColorModel=DeviceCMYK %O %S %D'</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Typeset mode (generate a PDF)</span>
</span></span><span class="line"><span class="cl"><span class="nv">$pdf_mode</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="c1"># 0: do not generate a pdf , 1: using $pdflatex , 2: using $ps2pdf , 3: using $dvipdf</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Other configuration</span>
</span></span><span class="line"><span class="cl"><span class="nv">$pvc_view_file_via_temporary</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$max_repeat</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
</span></span></code></pre></div><p>したら $\mathrm{\LaTeX}$ テキストを保存するたびに上の設定でタイプセットが自動実行されて PDF まで作ってしまうわけですよ。
めっさ便利。</p>
<h2>ブックマーク</h2>
<ul>
<li>
<p><a href="http://www.tug.org/texlive/acquire-netinstall.html">Installing TeX Live over the Internet - TeX Users Group</a></p>
</li>
<li>
<p><a href="https://texwiki.texjp.org/">TeX Wiki</a></p>
</li>
<li>
<p><a href="https://text.baldanders.info/remark/2019/04/install-texlive-in-ubuntu/">TeX Live を Ubuntu に(APT を使わずに)導入する</a></p>
</li>
<li>
<p><a href="https://text.baldanders.info/remark/2019/06/upgrade-texlive-from-2018-to-2019/">TeX Live 2018 から 2019 へのアップグレード</a></p>
</li>
<li>
<p><a href="https://text.baldanders.info/remark/2020/04/upgrade-texlive-2020/">TeX Live 2020 へのアップグレード</a></p>
</li>
</ul>
<h2>参考図書</h2>
<div class="hreview">
<div class="photo"><a href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1"><img src="https://m.media-amazon.com/images/I/41xmBlTiwlL._SL160_.jpg" width="126" alt="photo"></a></div>
<dl>
<dt class="item"><a class="fn url" href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1">[改訂第8版]LaTeX2ε美文書作成入門</a></dt>
<dd>奥村晴彦 (著), 黒木裕介 (著)</dd>
<dd>技術評論社 2020-11-14</dd>
<dd>大型本</dd>
<dd>4297117126 (ASIN), 9784297117122 (EAN), 4297117126 (ISBN)</dd>
<dd>評価<abbr class="rating fa-sm" title="5"> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i></abbr></dd>
</dl>
<p class="description">2020年末に第8版が出てたのに気付かなかったよ。可能なら紙の本も買って常に側に置いておくのが吉。<a href="https://gihyo.jp/book/2020/978-4-297-11712-2">版元</a>には PDF 版もある。</p>
<p class="powered-by">reviewed by <a href='#maker' class='reviewer'>Spiegel</a> on <abbr class="dtreviewed" title="2021-09-05">2021-09-05</abbr> (powered by <a href="https://affiliate.amazon.co.jp/assoc_credentials/home">PA-APIv5</a>)</p>
</div> <!-- LaTeX2ε美文書作成入門 -->
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>電子署名の検証で「<code>*警告*: この鍵は信用できる署名で証明されていません!</code>」と表示されているが,気にしなくてよい。その前の「<code>"TeX Live Distribution <tex-live@tug.org>"からの正しい署名</code>」が表示されていればOK。警告が出るのはインポートした公開鍵に自鍵で署名したり有効度を設定したりしてないからだが,直接手渡しされた鍵でもないのに安易に信用するのは危険であると言っておこう。もちろん何らかの手段で鍵と所有者が確定できるのであれば署名するなり有効度を設定するなりすればよい。 <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
改訂第8版『LaTeX2ε美文書作成入門』を眺める
tag:text.Baldanders.info,2021-09-05:/remark/2021/09/latex-primer/
2021-09-05T08:42:03+00:00
2021-09-05T09:54:36+00:00
2020年11月に出てたの? 完全に見落としてたよ orz
Spiegel
https://baldanders.info/profile/
<p>Twitter の TL を見て気が付いた。
あれ? 『<a href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1" title="[改訂第8版]LaTeX2ε美文書作成入門 | 奥村晴彦, 黒木裕介 |本 | 通販 | Amazon">LaTeX2ε美文書作成入門</a>』の第8版って出てるの? 完全に見落としてたよ <code>orz</code></p>
<p>『<a href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1" title="[改訂第8版]LaTeX2ε美文書作成入門 | 奥村晴彦, 黒木裕介 |本 | 通販 | Amazon">LaTeX2ε美文書作成入門</a>』は Kindle 版もあるし<a href="https://gihyo.jp/book/2020/978-4-297-11712-2" title="[改訂第8版]LaTeX2ε美文書作成入門:書籍案内|技術評論社">版元</a>で買えば PDF 版もあるんだけど,今回は紙の本を買った。
この手のリファレンス本は,一覧性という観点では,まだ紙のほうが有利。
デジタル版が好みなら PDF 版を買うのがいいだろう。
悪いが,この手の本で Kindle 版はない。</p>
<p>第7版からの3年間で大きく変わったことといえば $\mathrm{Lua\LaTeX}$ 日本語環境の台頭だろう。
序文でも</p>
<figure>
<blockquote><q>本書も $\mathrm{Lua\LaTeX}$ と新しい jleq ドキュメントクラスと原ノ味で組版しました</q></blockquote>
<figcaption><div><q><a href="https://www.amazon.co.jp/dp/B08MZ98Z1Q?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1">[改訂第8版]LaTeX2ε美文書作成入門</a></q>より</div></figcaption>
</figure>
<p>と書かれている。
えっ,これ原ノ味フォントなの? そういや巻末に原ノ味フォントの全グリフが載ってるな(笑)</p>
<p>入力環境(第2章)についても真っ先に <a href="https://cloudlatex.io/" title="Cloud LaTeX | Build your own LaTeX environment, in seconds">Cloud LaTeX</a> が紹介されているし<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>(これは第7版でもそうか),コラム内とはいえ VS Code 用の <a href="https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop" title="LaTeX Workshop - Visual Studio Marketplace">LaTeX Workshop</a> が紹介されていたりする。
また jleq ドキュメントクラスについても14章で詳しく解説している。
時代が変わったんだねぇ。</p>
<p>グラフィック周りについては第7版に引き続き付録Dで <a href="https://github.com/pgf-tikz" title="pgf-tikz">$\mathrm{Ti}k\mathrm{Z}$/PGF</a> を詳しく解説している。</p>
<figure>
<blockquote><q>$\mathrm{Ti}k\mathrm{Z}$ に慣れると <code>picture</code> 環境は使いたくなくなります</q></blockquote>
<figcaption><div><q><a href="https://www.amazon.co.jp/dp/B08MZ98Z1Q?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1">[改訂第8版]LaTeX2ε美文書作成入門</a></q>より</div></figcaption>
</figure>
<p>とか書かれてあって,ちょっと笑ってしまう。</p>
<p>第8版では R, gnuplot 以外に Python を使った例を挙げている。
ちなみに Go 言語でも <a href="https://github.com/gonum/plot" title="gonum/plot: A repository for plotting and visualizing data">gonum.org/v1/plot</a> パッケージで $\mathrm{Ti}k\mathrm{Z}$ 出力をサポートしている。
また,みんな大好き <a href="https://graphviz.org/doc/info/lang.html" title="DOT Language | Graphviz">DOT 言語</a>でも <a href="https://dot2tex.readthedocs.io/" title="dot2tex - A Graphviz to LaTeX converter — dot2tex 2.11.3 documentation">dot2tex</a> というツール(Python 製)を使うと $\mathrm{Ti}k\mathrm{Z}$ 形式に変換してくれるらしい。
もっとも <a href="https://dot2tex.readthedocs.io/" title="dot2tex - A Graphviz to LaTeX converter — dot2tex 2.11.3 documentation">dot2tex</a> には <a href="https://dot2tex.readthedocs.io/en/latest/tipsandtricks.html#the-dot2texi-latex-package"><code>dot2texi</code> $\mathrm{\LaTeX}$ パッケージ</a>もあるようなので,こっちのほうが便利かもしれないが。
あと <a href="https://plantuml.com/" title="Open-source tool that uses simple textual descriptions to draw beautiful UML diagrams.">PlantUML</a> でもベータ版ながら <a href="https://plantuml.com/ja/latex">$\mathrm{Ti}k\mathrm{Z}$ 形式に対応</a>しているようだ。</p>
<p>ぶっちゃけ <a href="https://text.baldanders.info/remark/2020/06/pdfa-with-luatex/" title="LuaLaTeX で PDF/A を構成する">PDF を最終出力とする</a>のなら $\mathrm{Lua\LaTeX}$ で必要十分だよな。
まぁ,論文を書くとなると各学会用のドキュメントクラスを使わないといけないので簡単ではないだろうが。</p>
<p>最近は $\mathrm{Lua\LaTeX}$ を直にゴリゴリ書く機会は無くなったが『<a href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1" title="[改訂第8版]LaTeX2ε美文書作成入門 | 奥村晴彦, 黒木裕介 |本 | 通販 | Amazon">LaTeX2ε美文書作成入門</a>』を眺めていると色々遊びたくなってくる。
今の仕事が落ち着いたら試してみたいところである。</p>
<h2>ブックマーク</h2>
<ul>
<li><a href="https://texwiki.texjp.org/">TeX Wiki</a></li>
<li><a href="https://qiita.com/moinslut/items/bc1d1b1e13cb38377406">LaTeX Workshopってなに?どうやって使うの?調べてみた! - Qiita</a></li>
<li><a href="https://www.mynote-jp.com/entry/TikZ-examples-2D-graph">TikZ実例集〜2Dグラフ編 - Notes_JP</a></li>
<li><a href="https://www.mynote-jp.com/entry/TikZ-examples">TikZ実例集〜3D編 - Notes_JP</a></li>
</ul>
<h2>参考図書</h2>
<div class="hreview">
<div class="photo"><a href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1"><img src="https://m.media-amazon.com/images/I/41xmBlTiwlL._SL160_.jpg" width="126" alt="photo"></a></div>
<dl>
<dt class="item"><a class="fn url" href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1">[改訂第8版]LaTeX2ε美文書作成入門</a></dt>
<dd>奥村晴彦 (著), 黒木裕介 (著)</dd>
<dd>技術評論社 2020-11-14</dd>
<dd>大型本</dd>
<dd>4297117126 (ASIN), 9784297117122 (EAN), 4297117126 (ISBN)</dd>
<dd>評価<abbr class="rating fa-sm" title="5"> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i></abbr></dd>
</dl>
<p class="description">2020年末に第8版が出てたのに気付かなかったよ。可能なら紙の本も買って常に側に置いておくのが吉。<a href="https://gihyo.jp/book/2020/978-4-297-11712-2">版元</a>には PDF 版もある。</p>
<p class="powered-by">reviewed by <a href='#maker' class='reviewer'>Spiegel</a> on <abbr class="dtreviewed" title="2021-09-05">2021-09-05</abbr> (powered by <a href="https://affiliate.amazon.co.jp/assoc_credentials/home">PA-APIv5</a>)</p>
</div> <!-- LaTeX2ε美文書作成入門 -->
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://cloudlatex.io/" title="Cloud LaTeX | Build your own LaTeX environment, in seconds">Cloud LaTeX</a> 連携用の <a href="https://marketplace.visualstudio.com/items?itemName=cloudlatex.cloudlatex" title="Cloud LaTeX - Visual Studio Marketplace">VS Code 拡張機能</a>があるんだな。 <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
LuaLaTeX でも履歴書を書きたい!
tag:text.Baldanders.info,2020-06-11:/remark/2020/06/resume-with-lualatex/
2020-06-11T07:52:45+00:00
2021-09-05T08:45:39+00:00
後方互換性が崩れるので pull request を投げていいか思案中。
Spiegel
https://baldanders.info/profile/
<div class="box"><p><strong>【2020-07-02 追記】</strong>
<a href="https://github.com/shigio/rireki-style" title="Style file for writing resume">shigio/rireki-style</a> 側で $\mathrm{Lua\LaTeX}$ でも組版できるよう対応していただきました。
サンプル <code>rireki.tex</code> ファイルの最初にある</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-latex" data-lang="latex"><span class="line"><span class="cl"><span class="c">%\lualatextrue
</span></span></span></code></pre></div><p>のコメントを解除すると $\mathrm{Lua\LaTeX}$ 対応になる。</p>
<p>感謝!</p>
</div>
<p><a href="https://text.baldanders.info/remark/2018/11/resume-in-latex/" title="LaTeX で履歴書を書こう">2018年の記事</a>で</p>
<ul>
<li><a href="https://www.tamacom.com/rireki-j.html">履歴書スタイルファイル</a></li>
<li><a href="https://github.com/shigio/rireki-style">shigio/rireki-style: Style file for writing resume.</a></li>
</ul>
<p>を紹介した。</p>
<p>その後いろいろ試してみて,サンプルの <code>rireki.tex</code> の最初の</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-latex" data-lang="latex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="nb">{</span>jarticle<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="nb">{</span>rireki<span class="nb">}</span>
</span></span><span class="line"><span class="cl">...
</span></span></code></pre></div><p>の部分を</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-latex" data-lang="latex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="na">[b5j]</span><span class="nb">{</span>ltjsarticle<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="na">[deluxe,nfssonly]</span><span class="nb">{</span>luatexja-preset<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="nb">{</span>rireki<span class="nb">}</span>
</span></span><span class="line"><span class="cl">...
</span></span></code></pre></div><p>と書き換えれば一応 $\mathrm{Lua\LaTeX}$ でも通ることが分かったのだが,この状態では顔写真を</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-latex" data-lang="latex"><span class="line"><span class="cl"><span class="k">\顔</span>写真<span class="nb">{</span>photo.jpg<span class="nb">}</span>
</span></span></code></pre></div><p>と指定しても上手く貼り付けられない。</p>
<p>しょうがないので <code>rireki.sty</code> を眺めていたら冒頭部分に</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-latex" data-lang="latex"><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="na">[dvipdfmx]</span><span class="nb">{</span>graphicx<span class="nb">}</span>
</span></span></code></pre></div><p>とか書かれていた。</p>
<p>ドライバが <code>dvipdfmx</code> 決め打ちか。
そりゃあ $\mathrm{Lua\LaTeX}$ で上手くいかんわな。</p>
<p>そこで <code>rireki.sty</code> の <code>graphicx</code> パッケージの記述をコメントアウトして <code>rireki.tex</code> を</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-latex" data-lang="latex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="na">[b5j]</span><span class="nb">{</span>ltjsarticle<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="na">[deluxe,nfssonly]</span><span class="nb">{</span>luatexja-preset<span class="nb">}</span>
</span></span><span class="line hl"><span class="cl"><span class="k">\usepackage</span><span class="na">[luatex]</span><span class="nb">{</span>graphicx<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="nb">{</span>rireki<span class="nb">}</span>
</span></span><span class="line"><span class="cl">...
</span></span></code></pre></div><p>としたら<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> 問題なく顔写真を貼り付けられた。
これでますます $\mathrm{p\LaTeX}$/$\mathrm{up\LaTeX}$ は「要らない子」になるね(笑)</p>
<p>なお,今回改変した <code>rireki.sty</code> を使って $\mathrm{p\LaTeX}$/$\mathrm{up\LaTeX}$ で処理する場合は</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-latex" data-lang="latex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="na">[uplatex,b5j]</span><span class="nb">{</span>jsarticle<span class="nb">}</span>
</span></span><span class="line hl"><span class="cl"><span class="k">\usepackage</span><span class="na">[dvipdfmx]</span><span class="nb">{</span>graphicx<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="nb">{</span>rireki<span class="nb">}</span>
</span></span><span class="line"><span class="cl">...
</span></span></code></pre></div><p>などとすればOK<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>。</p>
<p>ちなみに</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-perl" data-lang="perl"><span class="line"><span class="cl"><span class="ch">#!/usr/bin/env perl</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># LaTeX commands</span>
</span></span><span class="line"><span class="cl"><span class="nv">$pdflualatex</span> <span class="o">=</span> <span class="s">'lualatex %O -synctex=1 %S'</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$latex</span> <span class="o">=</span> <span class="s">'uplatex %O -synctex=1 %S'</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Device Driver</span>
</span></span><span class="line"><span class="cl"><span class="nv">$dvipdf</span> <span class="o">=</span> <span class="s">'dvipdfmx %O -z9 -p jisb5 -V 7 -o %D %S'</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Typeset mode (generate a PDF)</span>
</span></span><span class="line"><span class="cl"><span class="nv">$pdf_mode</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span> <span class="c1"># 0: do not generate a pdf , 1: using $pdflatex , 2: using $ps2pdf , 3: using $dvipdf , 4: using $pdflualatex</span>
</span></span></code></pre></div><p>という内容で <code>.latexmkrc</code> ファイルを作成すれば</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-perl" data-lang="perl"><span class="line"><span class="cl"><span class="nv">$pdf_mode</span> <span class="o">=</span> <span class="mi">3</span>
</span></span></code></pre></div><p>で $\mathrm{p\LaTeX}$/$\mathrm{up\LaTeX}$ 用,</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-perl" data-lang="perl"><span class="line"><span class="cl"><span class="nv">$pdf_mode</span> <span class="o">=</span> <span class="mi">4</span>
</span></span></code></pre></div><p>で $\mathrm{Lua\LaTeX}$ 用の設定になる。
あとは</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ latexmk
</span></span></code></pre></div><p>で <code>*.tex</code> ファイルを探して勝手に全部処理してくれる。</p>
<p>ところで,私が PDF 文書の紙出力に利用している<a href="http://www.printing.ne.jp/">ネットプリント</a>が 2020-06-15 から値上げするらしいのだが。
今は求職活動で履歴書乱発中なんだよ。
とほほ <code>orz</code></p>
<h2>ブックマーク</h2>
<ul>
<li><a href="http://doratex.hatenablog.jp/entry/20160610/1465560005">pdfTeX による見開きPDFの結合・分割 - TeX Alchemist Online</a></li>
<li><a href="http://www2.japanriver.or.jp/search_kasen/search_help/refer_year.htm">西暦・元号対照表</a></li>
</ul>
<h2>参考図書</h2>
<div class="hreview">
<div class="photo"><a href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1"><img src="https://m.media-amazon.com/images/I/41xmBlTiwlL._SL160_.jpg" width="126" alt="photo"></a></div>
<dl>
<dt class="item"><a class="fn url" href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1">[改訂第8版]LaTeX2ε美文書作成入門</a></dt>
<dd>奥村晴彦 (著), 黒木裕介 (著)</dd>
<dd>技術評論社 2020-11-14</dd>
<dd>大型本</dd>
<dd>4297117126 (ASIN), 9784297117122 (EAN), 4297117126 (ISBN)</dd>
<dd>評価<abbr class="rating fa-sm" title="5"> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i></abbr></dd>
</dl>
<p class="description">2020年末に第8版が出てたのに気付かなかったよ。可能なら紙の本も買って常に側に置いておくのが吉。<a href="https://gihyo.jp/book/2020/978-4-297-11712-2">版元</a>には PDF 版もある。</p>
<p class="powered-by">reviewed by <a href='#maker' class='reviewer'>Spiegel</a> on <abbr class="dtreviewed" title="2021-09-05">2021-09-05</abbr> (powered by <a href="https://affiliate.amazon.co.jp/assoc_credentials/home">PA-APIv5</a>)</p>
</div> <!-- LaTeX2ε美文書作成入門 -->
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>ドライバ指定を省略して <code>\usepackage{graphicx}</code> でも可。 <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:2">
<p><a href="https://github.com/shigio/rireki-style/issues/3">Issue</a> で提案したところ,対応していただけました。感謝! <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
LuaLaTeX で PDF/A を構成する
tag:text.Baldanders.info,2020-06-09:/remark/2020/06/pdfa-with-luatex/
2020-06-08T15:14:11+00:00
2021-09-05T08:45:39+00:00
pdfx パッケージを使って PDF/A-2u を構成してみる。
Spiegel
https://baldanders.info/profile/
<p>今回は $\mathrm{Lua\LaTeX}$ で PDF/A を構成してみる。</p>
<h2>PDF/A とは</h2>
<p>PDF/A とは自己完結性と永続性を考慮した PDF 構成で, ISO 19005 シリーズとして定義されている。
PDF/A の種別は大まかに</p>
<ul>
<li>PDF/A-1 : ISO 19005-1 (PDF 1.4 相当)
<ul>
<li>PDF/A-1a : PDF/A-1 レベルA</li>
<li>PDF/A-1b : PDF/A-1 レベルB</li>
</ul>
</li>
<li>PDF/A-2 : ISO 19005-2 (PDF 1.7 相当)
<ul>
<li>PDF/A-2a : PDF/A-2 レベルA</li>
<li>PDF/A-2b : PDF/A-2 レベルB</li>
<li>PDF/A-2u : PDF/A-2 レベルU</li>
</ul>
</li>
<li>PDF/A-3 : ISO 19005-3 (PDF/A-2 拡張)
<ul>
<li>PDF/A-3a : PDF/A-3 レベルA</li>
<li>PDF/A-3b : PDF/A-3 レベルB</li>
<li>PDF/A-3u : PDF/A-3 レベルU</li>
</ul>
</li>
</ul>
<p>といった感じに分かれている。</p>
<p>まず PDF/A-1 については</p>
<ul>
<li>カラーの再現性の保証</li>
<li>フォント埋め込み</li>
<li>XMPメタデータの埋め込み</li>
</ul>
<p>が要求され,逆に暗号化によるアクセス制限やコードの埋め込み等は禁止されている。</p>
<p>PDF/A-2 では PDF/A 文書の添付や圧縮機能の一部などが許容されている。
更に PDF/A-3 では任意のドキュメント・データの埋め込みが許容されているが,さすがにこれは自己完結性の観点からは要らない機能と言えるだろう。</p>
<p>これらの条件に加えてレベルUでは ToUnicode CMap による Unicode 対応が要求され(テキスト抽出等に必要),最高レベルのAではタグによる論理構造の埋め込みも要求される。</p>
<p>論理構造の埋め込みはちょっと辛いし(論理構造をきちんと設計するのは大変)そもそも今回使用する <code>pdfx</code> パッケージではレベルAの要求を完全には満たせないらしいので,レベルBまたはUの PDF/A を構成することを考える。</p>
<h2>最初の LuaLaTeX テキスト</h2>
<p>手始めに以下の $\mathrm{Lua\LaTeX}$ テキストを用意してみる。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-latex" data-lang="latex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="nb">{</span>ltjsarticle<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="na">[deluxe,nfssonly]</span><span class="nb">{</span>luatexja-preset<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\renewcommand</span><span class="nb">{</span><span class="k">\emph</span><span class="nb">}</span>[1]<span class="nb">{</span><span class="k">\textsf</span><span class="nb">{</span><span class="k">\textgt</span><span class="nb">{</span>#1<span class="nb">}}}</span> <span class="c">% 強調をゴシック体と Sans Serif に変更する
</span></span></span><span class="line"><span class="cl"><span class="c"></span>
</span></span><span class="line"><span class="cl"><span class="k">\title</span><span class="nb">{</span><span class="k">\emph</span><span class="nb">{</span>はじめてのLua<span class="k">\TeX</span>-ja<span class="nb">}}</span>
</span></span><span class="line"><span class="cl"><span class="k">\author</span><span class="nb">{</span>Spiegel<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\date</span><span class="nb">{</span>2020-06-08<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\maketitle</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\section</span><span class="nb">{</span>はじめてのLua<span class="k">\TeX</span>-ja<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">ちゃんとLua<span class="k">\TeX</span>-jaで日本語が出るかな?
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\subsection</span><span class="nb">{</span>出たかな?<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">長い文章を入力するとちゃんと右端のところで折り返されるかな?
</span></span><span class="line"><span class="cl">大丈夫そうな気がするけど.ちょっと不安だけど何事も挑戦だよね.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span></code></pre></div><p>これを処理した結果がこんな感じ。</p>
<figure style='margin:0 auto;text-align:center;'><a href="./output.png"><img src="./output.png" srcset="./output.png 815w" sizes="(min-width:600px) 500px, 80vw" alt="" loading="lazy"></a></figure>
<p>ちなみに <code>pdfinfo</code> で中身を見ると,こんな感じになっている<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ pdfinfo sample.pdf
</span></span><span class="line"><span class="cl">Creator: TeX
</span></span><span class="line"><span class="cl">Producer: LuaTeX-1.12.0
</span></span><span class="line"><span class="cl">CreationDate: Mon Jun 8 20:36:09 2020 JST
</span></span><span class="line"><span class="cl">ModDate: Mon Jun 8 20:36:09 2020 JST
</span></span><span class="line"><span class="cl">Tagged: no
</span></span><span class="line"><span class="cl">UserProperties: no
</span></span><span class="line"><span class="cl">Suspects: no
</span></span><span class="line"><span class="cl">Form: none
</span></span><span class="line"><span class="cl">JavaScript: no
</span></span><span class="line"><span class="cl">Pages: 1
</span></span><span class="line"><span class="cl">Encrypted: no
</span></span><span class="line"><span class="cl">Page size: 595.276 x 841.89 pts (A4)
</span></span><span class="line"><span class="cl">Page rot: 0
</span></span><span class="line"><span class="cl">File size: 26856 bytes
</span></span><span class="line"><span class="cl">Optimized: no
</span></span><span class="line"><span class="cl">PDF version: 1.5
</span></span></code></pre></div><p>PDF version が 1.5 である点に注目。</p>
<h2>pdfx パッケージとメタデータの追加</h2>
<p>PDF/A を構成するために <code>pdfx</code> パッケージとメタデータを追加する。
こんな感じ。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-latex" data-lang="latex"><span class="line hl"><span class="cl"><span class="c">% XMPメタデータ
</span></span></span><span class="line hl"><span class="cl"><span class="c"></span><span class="k">\RequirePackage</span><span class="nb">{</span>filecontents<span class="nb">}</span>
</span></span><span class="line hl"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>filecontents*<span class="nb">}{</span><span class="k">\jobname</span>.xmpdata<span class="nb">}</span>
</span></span><span class="line hl"><span class="cl"> <span class="k">\Title</span><span class="nb">{</span>はじめてのLuaTeX-ja<span class="nb">}</span>
</span></span><span class="line hl"><span class="cl"> <span class="k">\Subject</span><span class="nb">{</span>ちゃんとLuaTeX-jaで日本語が出るかな?<span class="nb">}</span>
</span></span><span class="line hl"><span class="cl"> <span class="k">\Author</span><span class="nb">{</span>Spiegel<span class="nb">}</span>
</span></span><span class="line hl"><span class="cl"><span class="k">\end</span><span class="nb">{</span>filecontents*<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="nb">{</span>ltjsarticle<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="na">[deluxe,nfssonly]</span><span class="nb">{</span>luatexja-preset<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\renewcommand</span><span class="nb">{</span><span class="k">\emph</span><span class="nb">}</span>[1]<span class="nb">{</span><span class="k">\textsf</span><span class="nb">{</span><span class="k">\textgt</span><span class="nb">{</span>#1<span class="nb">}}}</span> <span class="c">% 強調をゴシック体と Sans Serif に変更する
</span></span></span><span class="line"><span class="cl"><span class="c"></span>
</span></span><span class="line hl"><span class="cl"><span class="k">\usepackage</span><span class="na">[a-2u]</span><span class="nb">{</span>pdfx<span class="nb">}</span> <span class="c">% PDF/A-2u を構成
</span></span></span><span class="line hl"><span class="cl"><span class="c"></span><span class="k">\pdfvariable</span> omitcidset=1 <span class="c">% LuaTeX で PDF/A-2 を作る際に必要
</span></span></span><span class="line"><span class="cl"><span class="c"></span>
</span></span><span class="line"><span class="cl"><span class="k">\title</span><span class="nb">{</span><span class="k">\emph</span><span class="nb">{</span>はじめてのLua<span class="k">\TeX</span>-ja<span class="nb">}}</span>
</span></span><span class="line"><span class="cl"><span class="k">\author</span><span class="nb">{</span>Spiegel<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\date</span><span class="nb">{</span>2020-06-08<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span><span class="line"><span class="cl">...
</span></span></code></pre></div><p>XMPメタデータの指定を <code>\documentclass</code> の前に記述するのがポイント。</p>
<p>これを処理して中身を見るとこんな感じになった。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ pdfinfo sample.pdf
</span></span><span class="line hl"><span class="cl">Title: はじめてのLuaTeX-ja
</span></span><span class="line hl"><span class="cl">Subject: ちゃんとLuaTeX-jaで日本語が出るかな?
</span></span><span class="line hl"><span class="cl">Author: Spiegel
</span></span><span class="line"><span class="cl">Creator: LaTeX with hyperref
</span></span><span class="line"><span class="cl">Producer: LuaTeX
</span></span><span class="line"><span class="cl">CreationDate: Mon Jun 8 20:36:09 2020 JST
</span></span><span class="line"><span class="cl">ModDate: Mon Jun 8 20:36:09 2020 JST
</span></span><span class="line"><span class="cl">Tagged: no
</span></span><span class="line"><span class="cl">UserProperties: no
</span></span><span class="line"><span class="cl">Suspects: no
</span></span><span class="line"><span class="cl">Form: none
</span></span><span class="line"><span class="cl">JavaScript: no
</span></span><span class="line"><span class="cl">Pages: 1
</span></span><span class="line"><span class="cl">Encrypted: no
</span></span><span class="line"><span class="cl">Page size: 595.276 x 841.89 pts (A4)
</span></span><span class="line"><span class="cl">Page rot: 0
</span></span><span class="line"><span class="cl">File size: 40669 bytes
</span></span><span class="line"><span class="cl">Optimized: no
</span></span><span class="line hl"><span class="cl">PDF version: 1.4
</span></span><span class="line hl"><span class="cl">PDF subtype: PDF/A-2u:2010
</span></span><span class="line hl"><span class="cl"> Title: ISO 19005 - Electronic document file format for long-term preservation (PDF/A)
</span></span><span class="line hl"><span class="cl"> Abbreviation: PDF/A-2
</span></span><span class="line hl"><span class="cl"> Subtitle: Part 2: Use of ISO 32000-1
</span></span><span class="line hl"><span class="cl"> Standard: ISO 19005-2
</span></span><span class="line hl"><span class="cl"> Conformance: Level U, Unicode support
</span></span></code></pre></div><p>Title, Subject, および Author のメタデータが追加され, PDF version が 1.4 の PDF/A-2u として構成されているのが分かる。</p>
<h3>pdfx パッケージのオプション</h3>
<p><code>pdfx</code> パッケージでは PDF/E や PDF/X 等も構成できるが,ここでは PDF/A のオプションに限って紹介しておく。</p>
<table>
<thead>
<tr>
<th>オプション</th>
<th>構成</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>a-1a</code></td>
<td>PDF/A-1a : ただし不完全</td>
</tr>
<tr>
<td><code>a-1b</code></td>
<td>PDF/A-1b</td>
</tr>
<tr>
<td><code>a-2a</code></td>
<td>PDF/A-2a : ただし不完全</td>
</tr>
<tr>
<td><code>a-2b</code></td>
<td>PDF/A-2b</td>
</tr>
<tr>
<td><code>a-2u</code></td>
<td>PDF/A-2u</td>
</tr>
<tr>
<td><code>a-3a</code></td>
<td>PDF/A-3a : ただし不完全</td>
</tr>
<tr>
<td><code>a-3b</code></td>
<td>PDF/A-3b</td>
</tr>
<tr>
<td><code>a-3u</code></td>
<td>PDF/A-3u</td>
</tr>
</tbody>
</table>
<p>レベルAは使わないほうがいいだろう(笑) 一般的には最小構成の PDF/A-1b で十分なようだ。
ただし <code>pdfx</code> パッケージはレベルB指定でも ToUnicode CMap を埋め込んだままにするらしいので,今回のように,敢えて PDF/A-2u にする手もある。</p>
<h3>pdfx パッケージで設定可能な XMP メタデータ項目</h3>
<p><code>filecontents</code> 環境</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-latex" data-lang="latex"><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>filecontents*<span class="nb">}{</span><span class="k">\jobname</span>.xmpdata<span class="nb">}</span>
</span></span><span class="line"><span class="cl"> ...
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>filecontents*<span class="nb">}</span>
</span></span></code></pre></div><p>内に記述する XMP メタデータ項目のうち,主なものは以下の通り。</p>
<table>
<thead>
<tr>
<th>項目名</th>
<th>XMP 要素</th>
<th>備考</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>\Author</code></td>
<td><code>dc:creator</code></td>
<td><code>\sep</code> で複数指定可能</td>
</tr>
<tr>
<td><code>\Title</code></td>
<td><code>dc:title</code></td>
<td></td>
</tr>
<tr>
<td><code>\Language</code></td>
<td><code>dc:language</code></td>
<td><code>ja-JP</code> など,<code>\sep</code> で複数指定可能</td>
</tr>
<tr>
<td><code>\Keywords</code></td>
<td><code>dc:subject</code></td>
<td><code>\sep</code> で複数指定可能</td>
</tr>
<tr>
<td><code>\Publisher</code></td>
<td><code>dc:publisher</code></td>
<td><code>\sep</code> で複数指定可能</td>
</tr>
<tr>
<td><code>\Subject</code></td>
<td><code>dc:description</code></td>
<td></td>
</tr>
</tbody>
</table>
<p>著作権情報を載せる場合には以下の項目も使える<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>。</p>
<table>
<thead>
<tr>
<th>項目名</th>
<th>XMP 要素</th>
<th>備考</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>\Copyright</code></td>
<td><code>dc:rights</code></td>
<td>利用規約等</td>
</tr>
<tr>
<td><code>\CopyrightURL</code></td>
<td><code>xmpRights:WebStatement</code></td>
<td></td>
</tr>
<tr>
<td><code>\Copyrighted</code></td>
<td><code>xmpRights:Marked</code></td>
<td>公有の場合は <code>False</code> をセットする</td>
</tr>
<tr>
<td><code>\Owner</code></td>
<td><code>xmpRights:Owner</code></td>
<td>著作権者が別にいる場合,<code>\sep</code> で複数指定可能</td>
</tr>
<tr>
<td><code>\CertificateURL</code></td>
<td><code>xmpRights:Certificate</code></td>
<td></td>
</tr>
<tr>
<td><code>\Date</code></td>
<td><code>dc:date</code></td>
<td><code>YYYY-MM-DD</code> または <code>YYYY-MM</code></td>
</tr>
<tr>
<td><code>\Relation</code></td>
<td><code>dc:relation</code></td>
<td></td>
</tr>
<tr>
<td><code>\URLlink</code></td>
<td><code>dc:identifier</code></td>
<td></td>
</tr>
</tbody>
</table>
<p>その他,設定可能な項目については <a href="https://www.ctan.org/pkg/pdfx"><code>pdfx</code> パッケージのドキュメント</a>を参照のこと。</p>
<p>なお <code>filecontents</code> 環境の内容は <code>*.xmpdata</code> ファイルに吐き出されるが,既にファイルがある場合は上書き保存されないため,メタデータを変更したらこのファイルを削除してから再処理する必要がある。
もし <code>.latexmkrc</code> ファイルでビルドの制御を行っているなら</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-perl" data-lang="perl"><span class="line"><span class="cl"><span class="nv">$clean_ext</span> <span class="o">=</span> <span class="s">"xmpdata"</span><span class="p">;</span>
</span></span></code></pre></div><p>の記述を追加することで</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ latexmk -c
</span></span></code></pre></div><p>コマンドで,他の一時ファイルと共に <code>*.xmpdata</code> ファイルも削除してくれる。</p>
<p>実際に PDF ファイルに埋め込まれる XMP メタデータの内容は <code>pdfa.xmpi</code> に出力されているので参考になると思う。
また,すでに生成済みの PDF に対しては</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ pdfinfo -meta sample.pdf
</span></span></code></pre></div><p>で XMP メタデータを抽出できる。</p>
<h2>日本語の ToUnicode CMap はなくても大丈夫(らしい)</h2>
<p>レベルUの要件として PDF に ToUnicode CMap が埋め込まれている必要があるが,<a href="https://github.com/trueroad/HaranoAjiFonts" title="trueroad/HaranoAjiFonts: 原ノ味フォント">原ノ味フォント</a>のような Adobe-Japan1 フォントについては例外のようだ。</p>
<p>試しに <a href="https://github.com/trueroad/pdf-rm-tuc" title="trueroad/pdf-rm-tuc: Remove ToUnicode CMap from PDF"><code>pdf-rm-tuc</code></a> コマンドで<a href="https://github.com/trueroad/HaranoAjiFonts" title="trueroad/HaranoAjiFonts: 原ノ味フォント">原ノ味フォント</a>の ToUnicode CMap を削除してみる<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ pdf-rm-tuc --newline-before-endstream sample.pdf sample-tuc.pdf
</span></span></code></pre></div><p>PDF/A ドキュメントを処理する場合は <code>--newline-before-endstream</code> オプションが必須になるらしいので注意。</p>
<p>これで</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ pdffonts sample-tuc.pdf
</span></span><span class="line"><span class="cl">name type encoding emb sub uni object ID
</span></span><span class="line"><span class="cl">------------------------------------ ----------------- ---------------- --- --- --- ---------
</span></span><span class="line"><span class="cl">JKVWEI+LMRoman10-Regular CID Type 0C Identity-H yes yes yes 22 0
</span></span><span class="line hl"><span class="cl">IECCEF+HaranoAjiMincho-Regular CID Type 0C Identity-H yes yes no 23 0
</span></span><span class="line"><span class="cl">XKBUGM+LMSans17-Regular CID Type 0C Identity-H yes yes yes 24 0
</span></span><span class="line hl"><span class="cl">JYWTWW+HaranoAjiGothic-Regular CID Type 0C Identity-H yes yes no 25 0
</span></span><span class="line"><span class="cl">RHMEBC+LMRoman12-Regular CID Type 0C Identity-H yes yes yes 26 0
</span></span><span class="line"><span class="cl">RHDCZK+LMSans12-Regular CID Type 0C Identity-H yes yes yes 27 0
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">$ pdfinfo sample-tuc.pdf
</span></span><span class="line"><span class="cl">Title: はじめてのLuaTeX-ja
</span></span><span class="line"><span class="cl">Subject: ちゃんとLuaTeX-jaで日本語が出るかな?
</span></span><span class="line"><span class="cl">Author: Spiegel
</span></span><span class="line"><span class="cl">Creator: LaTeX with hyperref
</span></span><span class="line"><span class="cl">Producer: LuaTeX
</span></span><span class="line"><span class="cl">CreationDate: Mon Jun 8 20:36:09 2020 JST
</span></span><span class="line"><span class="cl">ModDate: Mon Jun 8 20:36:09 2020 JST
</span></span><span class="line"><span class="cl">Tagged: no
</span></span><span class="line"><span class="cl">UserProperties: no
</span></span><span class="line"><span class="cl">Suspects: no
</span></span><span class="line"><span class="cl">Form: none
</span></span><span class="line"><span class="cl">JavaScript: no
</span></span><span class="line"><span class="cl">Pages: 1
</span></span><span class="line"><span class="cl">Encrypted: no
</span></span><span class="line"><span class="cl">Page size: 595.276 x 841.89 pts (A4)
</span></span><span class="line"><span class="cl">Page rot: 0
</span></span><span class="line"><span class="cl">File size: 39154 bytes
</span></span><span class="line"><span class="cl">Optimized: no
</span></span><span class="line"><span class="cl">PDF version: 1.4
</span></span><span class="line"><span class="cl">PDF subtype: PDF/A-2u:2010
</span></span><span class="line"><span class="cl"> Title: ISO 19005 - Electronic document file format for long-term preservation (PDF/A)
</span></span><span class="line"><span class="cl"> Abbreviation: PDF/A-2
</span></span><span class="line"><span class="cl"> Subtitle: Part 2: Use of ISO 32000-1
</span></span><span class="line"><span class="cl"> Standard: ISO 19005-2
</span></span><span class="line"><span class="cl"> Conformance: Level U, Unicode support
</span></span></code></pre></div><p>のように PDF/A-2u を維持しつつ<a href="https://github.com/trueroad/HaranoAjiFonts" title="trueroad/HaranoAjiFonts: 原ノ味フォント">原ノ味フォント</a>の ToUnicode CMap を削除することができた。
念のため,この PDF ファイルを <a href="https://verapdf.org/" title="veraPDF | Industry Supported PDF/A Validation">veraPDF</a> で検査してみたが “PDF/A-2U validation profile” でちゃんとパスしたので本当に問題ないのだろう。</p>
<p>さらに <a href="https://github.com/trueroad/pdf-rm-tuc" title="trueroad/pdf-rm-tuc: Remove ToUnicode CMap from PDF"><code>pdf-rm-tuc</code></a> コマンドに <code>--linearize</code> および <code>--object-streams=generate</code> オプションを付けて実行すると</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ pdf-rm-tuc --newline-before-endstream --linearize --object-streams=generate sample.pdf sample-tuc.pdf
</span></span></code></pre></div><p>PDF version 1.5 のドキュメントとして出力される。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ pdfinfo sample-tuc.pdf
</span></span><span class="line"><span class="cl">Title: はじめてのLuaTeX-ja
</span></span><span class="line"><span class="cl">Subject: ちゃんとLuaTeX-jaで日本語が出るかな?
</span></span><span class="line"><span class="cl">Author: Spiegel
</span></span><span class="line"><span class="cl">Creator: LaTeX with hyperref
</span></span><span class="line"><span class="cl">Producer: LuaTeX
</span></span><span class="line"><span class="cl">CreationDate: Mon Jun 8 20:36:09 2020 JST
</span></span><span class="line"><span class="cl">ModDate: Mon Jun 8 20:36:09 2020 JST
</span></span><span class="line"><span class="cl">Tagged: no
</span></span><span class="line"><span class="cl">UserProperties: no
</span></span><span class="line"><span class="cl">Suspects: no
</span></span><span class="line"><span class="cl">Form: none
</span></span><span class="line"><span class="cl">JavaScript: no
</span></span><span class="line"><span class="cl">Pages: 1
</span></span><span class="line"><span class="cl">Encrypted: no
</span></span><span class="line"><span class="cl">Page size: 595.276 x 841.89 pts (A4)
</span></span><span class="line"><span class="cl">Page rot: 0
</span></span><span class="line"><span class="cl">File size: 34742 bytes
</span></span><span class="line hl"><span class="cl">Optimized: yes
</span></span><span class="line hl"><span class="cl">PDF version: 1.5
</span></span><span class="line"><span class="cl">PDF subtype: PDF/A-2u:2010
</span></span><span class="line"><span class="cl"> Title: ISO 19005 - Electronic document file format for long-term preservation (PDF/A)
</span></span><span class="line"><span class="cl"> Abbreviation: PDF/A-2
</span></span><span class="line"><span class="cl"> Subtitle: Part 2: Use of ISO 32000-1
</span></span><span class="line"><span class="cl"> Standard: ISO 19005-2
</span></span><span class="line"><span class="cl"> Conformance: Level U, Unicode support
</span></span></code></pre></div><p>よーし,うむうむ,よーし。</p>
<h2>ブックマーク</h2>
<ul>
<li><a href="https://www.antenna.co.jp/pdf/reference/PDFA.htm">PDF/Aとはなにか | アンテナハウス PDF資料室</a></li>
<li><a href="https://ja.wikipedia.org/wiki/PDF/A">PDF/A - Wikipedia</a></li>
</ul>
<h2>参考図書</h2>
<div class="hreview">
<div class="photo"><a href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1"><img src="https://m.media-amazon.com/images/I/41xmBlTiwlL._SL160_.jpg" width="126" alt="photo"></a></div>
<dl>
<dt class="item"><a class="fn url" href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1">[改訂第8版]LaTeX2ε美文書作成入門</a></dt>
<dd>奥村晴彦 (著), 黒木裕介 (著)</dd>
<dd>技術評論社 2020-11-14</dd>
<dd>大型本</dd>
<dd>4297117126 (ASIN), 9784297117122 (EAN), 4297117126 (ISBN)</dd>
<dd>評価<abbr class="rating fa-sm" title="5"> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i></abbr></dd>
</dl>
<p class="description">2020年末に第8版が出てたのに気付かなかったよ。可能なら紙の本も買って常に側に置いておくのが吉。<a href="https://gihyo.jp/book/2020/978-4-297-11712-2">版元</a>には PDF 版もある。</p>
<p class="powered-by">reviewed by <a href='#maker' class='reviewer'>Spiegel</a> on <abbr class="dtreviewed" title="2021-09-05">2021-09-05</abbr> (powered by <a href="https://affiliate.amazon.co.jp/assoc_credentials/home">PA-APIv5</a>)</p>
</div> <!-- LaTeX2ε美文書作成入門 -->
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><code>pdfinfo</code> および <code>pdffonts</code> は <a href="https://poppler.freedesktop.org/">Poppler</a> のコマンド。 Windows 版 <a href="http://www.tug.org/texlive/" title="TeX Live - TeX Users Group">TeX Live</a> には既定で同梱されているらしい。他のプラットフォームについては「<a href="https://texwiki.texjp.org/?Poppler">Poppler - TeX Wiki</a>」を参考に導入すればいいだろう。 <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:2">
<p>基本的に © マークや “Copyright” の文言は不要。その代わり著作(権)者名と公開年と許諾条件を表記するとよい(他のメタデータで代替できるのであればそれも不要だが)。 CC Licenses のようなライセンス・ツールを使うのであれば <code>\CopyrightURL</code> 項目に(コモンズ証などの)許諾条件を記した Web ページの URL をセットすればよい。なお CC Licenses について詳しくは拙文「<a href="https://text.baldanders.info/cc-licenses/">改訂3版: CC Licenses について</a>」を参考にどうぞ。 PDF/A はアクセス制限を禁止するので CC Licenses と相性がいいよね♪ <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:3">
<p><a href="https://github.com/trueroad/pdf-rm-tuc" title="trueroad/pdf-rm-tuc: Remove ToUnicode CMap from PDF"><code>pdf-rm-tuc</code></a> コマンドの導入については拙文「<a href="https://text.baldanders.info/remark/2020/06/remove-tounicode-cmap-from-pdf/">LuaTeX で生成した PDF から ToUnicode CMap を除去する</a>」を参考にどうぞ。 <a href="#fnref:3" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
LuaTeX で生成した PDF から ToUnicode CMap を除去する
tag:text.Baldanders.info,2020-06-08:/remark/2020/06/remove-tounicode-cmap-from-pdf/
2020-06-08T08:31:44+00:00
2021-09-05T08:45:39+00:00
原ノ味フォントの作者が pdf-rm-tuc というツールを公開されている。ありがたや。
Spiegel
https://baldanders.info/profile/
<p><a href="https://text.baldanders.info/remark/2020/04/haranoaji-fonts-with-texlive-2020/" title="TeX Live 2020 で原ノ味フォントを使う">以前に紹介</a>した<a href="https://github.com/trueroad/HaranoAjiFonts" title="trueroad/HaranoAjiFonts: 原ノ味フォント">原ノ味フォント</a>だが, $\mathrm{Lua\LaTeX}$ で組版 & PDF 出力する際に Adobe-Identity-0 フォントとして埋め込まれてしまうそうで,フォントの性能を上手く活かしきれてないらしい。
しかも</p>
<figure>
<blockquote><q>LuaTeX はフォントの cmap テーブルから逆変換で ToUnicode CMap を生成しているようで、縦書き用グリフを使った場合や異字体を使った場合など、テキスト抽出すると意図しない結果になることがあります</q></blockquote>
<figcaption><div><q><a href="https://github.com/trueroad/pdf-rm-tuc/blob/master/README.ja.md">PDF から ToUnicode CMap を削除するツール</a></q>より</div></figcaption>
</figure>
<p>そこで<a href="https://github.com/trueroad/HaranoAjiFonts" title="trueroad/HaranoAjiFonts: 原ノ味フォント">原ノ味フォント</a>の作者が <a href="https://github.com/trueroad/pdf-rm-tuc" title="trueroad/pdf-rm-tuc: Remove ToUnicode CMap from PDF"><code>pdf-rm-tuc</code></a> というツールを公開されている。</p>
<ul>
<li><a href="https://github.com/trueroad/pdf-rm-tuc">trueroad/pdf-rm-tuc: Remove ToUnicode CMap from PDF</a></li>
</ul>
<p>このツールを使うと</p>
<figure>
<blockquote><q>PDF から原ノ味フォントの ToUnicode CMap を削除し、原ノ味フォントの ROS を Adobe-Identity-0 から 元の Adobe-Japan1-7 に変更します。 これによってテキスト抽出で意図しない結果になることを防げると考えています</q></blockquote>
<figcaption><div><q><a href="https://github.com/trueroad/pdf-rm-tuc/blob/master/README.ja.md">PDF から ToUnicode CMap を削除するツール</a></q>より</div></figcaption>
</figure>
<p>更に言うと PDF ファイルのサイズがちょびっとだけ小さくなる。
ありがたや <code>m(_ _)m</code></p>
<h2><a href="https://github.com/trueroad/pdf-rm-tuc" title="trueroad/pdf-rm-tuc: Remove ToUnicode CMap from PDF">pdf-rm-tuc</a> のビルドとインストール</h2>
<p><a href="https://github.com/trueroad/pdf-rm-tuc" title="trueroad/pdf-rm-tuc: Remove ToUnicode CMap from PDF"><code>pdf-rm-tuc</code></a> はソースコードのみの公開なので GCC を使って自前でビルドする必要がある<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>。
ここでは <a href="https://www.ubuntu.com/" title="The leading operating system for PCs, IoT devices, servers and the cloud | Ubuntu">Ubuntu</a> プラットフォームを前提に紹介する。</p>
<h3>事前準備</h3>
<p>たまに GCC が入ってないことがあるので,入ってなければ APT でインストールしておく。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ sudo apt install build-essential
</span></span></code></pre></div><p>更に <a href="https://github.com/trueroad/pdf-rm-tuc" title="trueroad/pdf-rm-tuc: Remove ToUnicode CMap from PDF"><code>pdf-rm-tuc</code></a> の GitHub リポジトリを clone して直接ビルドする場合は Autoconf および Automake が必要になる。
もし入ってなければ,これもインストールしておこう。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ sudo apt install autoconf automake
</span></span></code></pre></div><p>更に更にビルドの際に lib<a href="https://github.com/qpdf/qpdf" title="qpdf/qpdf: Primary QPDF source code and documentation">qpdf</a> が必要らしいので,これもインストールしておく。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ sudo apt install libqpdf-dev
</span></span></code></pre></div><p>これで準備完了。</p>
<h3>ビルドとインストール</h3>
<p>では,ビルドからインストールまで一気にやってしまおう。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ git clone https://github.com/trueroad/pdf-rm-tuc.git
</span></span><span class="line"><span class="cl">$ cd pdf-rm-tuc
</span></span><span class="line"><span class="cl">$ ./autogen.sh
</span></span><span class="line"><span class="cl">$ mkdir build
</span></span><span class="line"><span class="cl">$ cd build
</span></span><span class="line"><span class="cl">$ ../configure
</span></span><span class="line"><span class="cl">$ make
</span></span><span class="line"><span class="cl">$ make check # TeX Live 2020 が導入済みであること
</span></span><span class="line"><span class="cl">$ sudo make install
</span></span><span class="line"><span class="cl">$ pdf-rm-tuc -V
</span></span><span class="line"><span class="cl">Remove ToUnicode CMap from PDF 1.0.0
</span></span><span class="line"><span class="cl">Copyright (C) 2019 Masamichi Hosoda. All rights reserved.
</span></span><span class="line"><span class="cl">License: BSD-2-Clause
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">https://github.com/trueroad/pdf-rm-tuc
</span></span></code></pre></div><p>インストールが成功すれば <a href="https://github.com/trueroad/pdf-rm-tuc" title="trueroad/pdf-rm-tuc: Remove ToUnicode CMap from PDF"><code>pdf-rm-tuc</code></a> コマンドが以下に置かれる。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ which pdf-rm-tuc
</span></span><span class="line"><span class="cl">/usr/local/bin/pdf-rm-tuc
</span></span></code></pre></div><h2><a href="https://github.com/trueroad/pdf-rm-tuc" title="trueroad/pdf-rm-tuc: Remove ToUnicode CMap from PDF">pdf-rm-tuc</a> を試してみる</h2>
<p>入力テキストは以下の通り。
<a href="http://www.tug.org/texlive/" title="TeX Live - TeX Users Group">TeX Live</a> 2020 が導入されていることが前提ね。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-latex" data-lang="latex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="nb">{</span>ltjsarticle<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="na">[deluxe]</span><span class="nb">{</span>luatexja-preset<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="nb">{</span>luatexja-otf<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">{</span><span class="k">\mcfamily\ltseries</span> ☂ は夜更け過ぎに ☃ へとかわるだろう。(明朝体・細字)<span class="nb">}</span><span class="k">\par</span>
</span></span><span class="line"><span class="cl"><span class="nb">{</span><span class="k">\mcfamily</span> ☂ は夜更け過ぎに ☃ へとかわるだろう。(明朝体・中字)<span class="nb">}</span><span class="k">\par</span>
</span></span><span class="line"><span class="cl"><span class="nb">{</span><span class="k">\mcfamily\bfseries</span> ☂ は夜更け過ぎに ☃ へとかわるだろう。(明朝体・太字)<span class="nb">}</span><span class="k">\par</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">{</span><span class="k">\gtfamily</span> ☂ は夜更け過ぎに ☃ へとかわるだろう。(ゴシック体・中字)<span class="nb">}</span><span class="k">\par</span>
</span></span><span class="line"><span class="cl"><span class="nb">{</span><span class="k">\gtfamily\bfseries</span> ☂ は夜更け過ぎに ☃ へとかわるだろう。(ゴシック体・太字)<span class="nb">}</span><span class="k">\par</span>
</span></span><span class="line"><span class="cl"><span class="nb">{</span><span class="k">\gtfamily\ebseries</span> ☂ は夜更け過ぎに ☃ へとかわるだろう。(ゴシック体・極太)<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span></code></pre></div><p>これを組版すると以下のような結果になる。</p>
<figure style='margin:0 auto;text-align:center;'><a href="https://text.baldanders.info/remark/2020/04/haranoaji-fonts-with-texlive-2020/lualatex-sample.png"><img src="https://text.baldanders.info/remark/2020/04/haranoaji-fonts-with-texlive-2020/lualatex-sample.png" srcset="https://text.baldanders.info/remark/2020/04/haranoaji-fonts-with-texlive-2020/lualatex-sample.png 1388w" sizes="(min-width:600px) 500px, 80vw" alt="" loading="lazy"></a></figure>
<p>このときのフォント情報はこんな風になっている<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ pdffonts lualatex-sample.pdf
</span></span><span class="line"><span class="cl">name type encoding emb sub uni object ID
</span></span><span class="line"><span class="cl">------------------------------------ ----------------- ---------------- --- --- --- ---------
</span></span><span class="line"><span class="cl">OLUZKZ+HaranoAjiMincho-Light CID Type 0C Identity-H yes yes yes 4 0
</span></span><span class="line"><span class="cl">PTNBJH+HaranoAjiMincho-Regular CID Type 0C Identity-H yes yes yes 5 0
</span></span><span class="line"><span class="cl">BMAPJQ+HaranoAjiMincho-Bold CID Type 0C Identity-H yes yes yes 6 0
</span></span><span class="line"><span class="cl">HOSFGF+HaranoAjiGothic-Regular CID Type 0C Identity-H yes yes yes 7 0
</span></span><span class="line"><span class="cl">ULINFN+HaranoAjiGothic-Bold CID Type 0C Identity-H yes yes yes 8 0
</span></span><span class="line"><span class="cl">PJPUYK+HaranoAjiGothic-Heavy CID Type 0C Identity-H yes yes yes 9 0
</span></span><span class="line"><span class="cl">JFRMQG+LMRoman10-Regular CID Type 0C Identity-H yes yes yes 10 0
</span></span></code></pre></div><p><code>uni</code> の項目が ToUnicode CMap の有無を示すもので,<a href="https://github.com/trueroad/HaranoAjiFonts" title="trueroad/HaranoAjiFonts: 原ノ味フォント">原ノ味フォント</a>の全てに ToUnicode CMap があるのが分かる。</p>
<p>では <a href="https://github.com/trueroad/pdf-rm-tuc" title="trueroad/pdf-rm-tuc: Remove ToUnicode CMap from PDF"><code>pdf-rm-tuc</code></a> を実行してみよう。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ pdf-rm-tuc lualatex-sample.pdf lualatex-sample-notuc.pdf
</span></span></code></pre></div><p>実行結果は以下の通り。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ pdffonts lualatex-sample-notuc.pdf
</span></span><span class="line"><span class="cl">name type encoding emb sub uni object ID
</span></span><span class="line"><span class="cl">------------------------------------ ----------------- ---------------- --- --- --- ---------
</span></span><span class="line"><span class="cl">JFRMQG+LMRoman10-Regular CID Type 0C Identity-H yes yes yes 10 0
</span></span><span class="line"><span class="cl">PTNBJH+HaranoAjiMincho-Regular CID Type 0C Identity-H yes yes no 5 0
</span></span><span class="line"><span class="cl">OLUZKZ+HaranoAjiMincho-Light CID Type 0C Identity-H yes yes no 4 0
</span></span><span class="line"><span class="cl">BMAPJQ+HaranoAjiMincho-Bold CID Type 0C Identity-H yes yes no 6 0
</span></span><span class="line"><span class="cl">HOSFGF+HaranoAjiGothic-Regular CID Type 0C Identity-H yes yes no 7 0
</span></span><span class="line"><span class="cl">ULINFN+HaranoAjiGothic-Bold CID Type 0C Identity-H yes yes no 8 0
</span></span><span class="line"><span class="cl">PJPUYK+HaranoAjiGothic-Heavy CID Type 0C Identity-H yes yes no 9 0
</span></span></code></pre></div><p><a href="https://github.com/trueroad/HaranoAjiFonts" title="trueroad/HaranoAjiFonts: 原ノ味フォント">原ノ味フォント</a>の <code>uni</code> 項目が全て <code>no</code> になっていることが確認できた。
よーし,うむうむ,よーし。</p>
<h2>注意事項</h2>
<ul>
<li>$\mathrm{up\LaTeX}$ 等で組版したものを <code>dvipdfmx</code> で PDF に出力する場合は Adobe-Japan1 フォントであれば ToUnicode CMap の生成・埋め込みはしないので <a href="https://github.com/trueroad/pdf-rm-tuc" title="trueroad/pdf-rm-tuc: Remove ToUnicode CMap from PDF"><code>pdf-rm-tuc</code></a> は不要</li>
<li>PDF ビュア側で Adobe-Japan1-UCS2 等の ToUnicode CMap を持っていない場合は PDF 側の ToUnicode CMap を削除すると日本語のテキスト抽出が上手く行かないらしい。 <a href="https://www.ubuntu.com/" title="The leading operating system for PCs, IoT devices, servers and the cloud | Ubuntu">Ubuntu</a> に標準で入ってる <a href="https://wiki.gnome.org/Apps/Evince">Evince</a> は画面から普通にコピペできたけど,大丈夫ってこと?</li>
<li>PDF/A を構成する場合,適合レベルによっては ToUnicode CMap を削除すると拙い場合があるのだが <a href="https://text.baldanders.info/remark/2020/06/pdfa-with-luatex/" title="LuaLaTeX で PDF/A を構成する">Adobe-Japan1 フォントについては例外</a>らしい? <a href="https://verapdf.org/" title="veraPDF | Industry Supported PDF/A Validation">veraPDF</a> 等の Validator で確認したほうがいいかも</li>
</ul>
<h2>ブックマーク</h2>
<ul>
<li><a href="https://github.com/trueroad/tr-TeXConf2019">trueroad/tr-TeXConf2019: TeXConf 2019 一般講演「原ノ味フォントと ToUnicode CMap」関連資料</a></li>
</ul>
<h2>参考図書</h2>
<div class="hreview">
<div class="photo"><a href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1"><img src="https://m.media-amazon.com/images/I/41xmBlTiwlL._SL160_.jpg" width="126" alt="photo"></a></div>
<dl>
<dt class="item"><a class="fn url" href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1">[改訂第8版]LaTeX2ε美文書作成入門</a></dt>
<dd>奥村晴彦 (著), 黒木裕介 (著)</dd>
<dd>技術評論社 2020-11-14</dd>
<dd>大型本</dd>
<dd>4297117126 (ASIN), 9784297117122 (EAN), 4297117126 (ISBN)</dd>
<dd>評価<abbr class="rating fa-sm" title="5"> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i></abbr></dd>
</dl>
<p class="description">2020年末に第8版が出てたのに気付かなかったよ。可能なら紙の本も買って常に側に置いておくのが吉。<a href="https://gihyo.jp/book/2020/978-4-297-11712-2">版元</a>には PDF 版もある。</p>
<p class="powered-by">reviewed by <a href='#maker' class='reviewer'>Spiegel</a> on <abbr class="dtreviewed" title="2021-09-05">2021-09-05</abbr> (powered by <a href="https://affiliate.amazon.co.jp/assoc_credentials/home">PA-APIv5</a>)</p>
</div> <!-- LaTeX2ε美文書作成入門 -->
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Windows であれば <a href="https://text.baldanders.info/remark/2016/03/gcc-msys2-1/" title="MSYS2 による gcc 開発環境の構築 ― MSYS2 のインストールから初期化処理まで">MSYS2 等の環境</a>が必要になるかもしれない。あるいは <a href="http://www.tug.org/texlive/" title="TeX Live - TeX Users Group">TeX Live</a> ひっくるめて WSL2 に引っ越すか(笑) <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:2">
<p><code>pdffonts</code> は <a href="https://poppler.freedesktop.org/">Poppler</a> のコマンドのひとつ。 Windows 版 <a href="http://www.tug.org/texlive/" title="TeX Live - TeX Users Group">TeX Live</a> には既定で同梱されているらしい。他のプラットフォームについては「<a href="https://texwiki.texjp.org/?Poppler">Poppler - TeX Wiki</a>」を参考に導入すればいいだろう。 <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
TeX Live 2020 で原ノ味フォントを使う
tag:text.Baldanders.info,2020-04-17:/remark/2020/04/haranoaji-fonts-with-texlive-2020/
2020-04-17T05:34:30+00:00
2021-09-05T08:45:39+00:00
TeX Live 2020 で原ノ味フォントが正式に組み込まれ日本語の既定フォントになったようだ。
Spiegel
https://baldanders.info/profile/
<p><a href="https://github.com/trueroad/HaranoAjiFonts" title="trueroad/HaranoAjiFonts: 原ノ味フォント">原ノ味フォント</a>は Adobe と Google が共同開発している「源ノ」フォントからの派生で, $\mathrm{\TeX}$/$\mathrm{\LaTeX}$ において日本語を扱いやすいようチューニングされているらしい。
ちなみに「源ノ」フォントと同じく SIL Open Font License 1.1 の下に提供されている。
ありがたや。</p>
<p><a href="http://www.tug.org/texlive/" title="TeX Live - TeX Users Group">TeX Live</a> 2020 で<a href="https://github.com/trueroad/HaranoAjiFonts" title="trueroad/HaranoAjiFonts: 原ノ味フォント">原ノ味フォント</a>が正式に組み込まれ日本語の既定フォントになったようだ。
ただし <a href="https://text.baldanders.info/remark/2020/04/upgrade-texlive-2020/" title="TeX Live 2020 へのアップグレード">2019 およびそれ以前からアップグレードした</a>場合は</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ kanji-config-updmap status
</span></span><span class="line"><span class="cl">CURRENT family for ja: ipaex (variant: <empty>)
</span></span><span class="line"><span class="cl">Standby family : haranoaji
</span></span><span class="line"><span class="cl">Standby family : ipa
</span></span></code></pre></div><p>のように以前の設定を引き継いでいるため,<a href="https://github.com/trueroad/HaranoAjiFonts" title="trueroad/HaranoAjiFonts: 原ノ味フォント">原ノ味フォント</a>を使うなら手動で設定変更する必要がある<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ kanji-config-updmap-sys --jis2004 haranoaji
</span></span></code></pre></div><p>これで設定が</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ kanji-config-updmap status
</span></span><span class="line"><span class="cl">CURRENT family for ja: haranoaji (variant: -04)
</span></span><span class="line"><span class="cl">Standby family : haranoaji
</span></span><span class="line"><span class="cl">Standby family : ipa
</span></span><span class="line"><span class="cl">Standby family : ipaex
</span></span></code></pre></div><p>となった。</p>
<h2>upLaTeX による組版</h2>
<p>まずは $\mathrm{up\LaTeX}$ で組版を行い,フォントの違いを調べてみる。</p>
<h3>入力テキスト</h3>
<p>$\mathrm{up\LaTeX}$ 用に入力テキストを用意する。
こんな感じ。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-latex" data-lang="latex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="na">[uplatex,a4paper]</span><span class="nb">{</span>jsarticle<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="na">[deluxe]</span><span class="nb">{</span>otf<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">{</span><span class="k">\mcfamily\ltseries</span> ☂ は夜更け過ぎに ☃ へとかわるだろう。(明朝体・細字)<span class="nb">}</span><span class="k">\par</span>
</span></span><span class="line"><span class="cl"><span class="nb">{</span><span class="k">\mcfamily</span> ☂ は夜更け過ぎに ☃ へとかわるだろう。(明朝体・中字)<span class="nb">}</span><span class="k">\par</span>
</span></span><span class="line"><span class="cl"><span class="nb">{</span><span class="k">\mcfamily\bfseries</span> ☂ は夜更け過ぎに ☃ へとかわるだろう。(明朝体・太字)<span class="nb">}</span><span class="k">\par</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">{</span><span class="k">\gtfamily</span> ☂ は夜更け過ぎに ☃ へとかわるだろう。(ゴシック体・中字)<span class="nb">}</span><span class="k">\par</span>
</span></span><span class="line"><span class="cl"><span class="nb">{</span><span class="k">\gtfamily\bfseries</span> ☂ は夜更け過ぎに ☃ へとかわるだろう。(ゴシック体・太字)<span class="nb">}</span><span class="k">\par</span>
</span></span><span class="line"><span class="cl"><span class="nb">{</span><span class="k">\gtfamily\ebseries</span> ☂ は夜更け過ぎに ☃ へとかわるだろう。(ゴシック体・極太)<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span></code></pre></div><p>これを <code>uplatex</code> コマンドで処理する。</p>
<h3>組版結果(<a href="https://ipafont.ipa.go.jp/" title="IPAexフォント/IPAフォント">IPA</a>ex フォント使用)</h3>
<p>まずは <a href="https://ipafont.ipa.go.jp/" title="IPAexフォント/IPAフォント">IPA</a>ex フォントで組版した結果がこちら。</p>
<figure style='margin:0 auto;text-align:center;'><a href="./ipaex-sample.png"><img src="./ipaex-sample.png" srcset="./ipaex-sample.png 1381w" sizes="(min-width:600px) 500px, 80vw" alt="upLaTeX 出力結果(IPAex フォント使用)" loading="lazy"></a><figcaption><div><a href="./ipaex-sample.png">upLaTeX 出力結果(IPAex フォント使用)</a></div></figcaption>
</figure>
<p><a href="https://ipafont.ipa.go.jp/" title="IPAexフォント/IPAフォント">IPA</a>ex フォントはウェイトのバリエーションがないためこんな感じになる。</p>
<h3>組版結果(<a href="https://github.com/trueroad/HaranoAjiFonts" title="trueroad/HaranoAjiFonts: 原ノ味フォント">原ノ味フォント</a>使用)</h3>
<p><a href="https://github.com/trueroad/HaranoAjiFonts" title="trueroad/HaranoAjiFonts: 原ノ味フォント">原ノ味フォント</a>を使った組版結果がこちら。</p>
<figure style='margin:0 auto;text-align:center;'><a href="./haranoaji-sample.png"><img src="./haranoaji-sample.png" srcset="./haranoaji-sample.png 1391w" sizes="(min-width:600px) 500px, 80vw" alt="upLaTeX 出力結果(原ノ味フォント使用)" loading="lazy"></a><figcaption><div><a href="./haranoaji-sample.png">upLaTeX 出力結果(原ノ味フォント使用)</a></div></figcaption>
</figure>
<p>各ウェイト毎にフォントが対応しているのが分かるだろうか。
あと,絵文字の字形が違うんだけど,いいのか?</p>
<h2>LuaLaTeX による組版</h2>
<p>今度は $\mathrm{Lua\LaTeX}$ で試してみる。</p>
<h3>入力テキスト</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-latex" data-lang="latex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="nb">{</span>ltjsarticle<span class="nb">}</span>
</span></span><span class="line hl"><span class="cl"><span class="k">\usepackage</span><span class="na">[haranoaji,deluxe]</span><span class="nb">{</span>luatexja-preset<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="nb">{</span>luatexja-otf<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">{</span><span class="k">\mcfamily\ltseries</span> ☂ は夜更け過ぎに ☃ へとかわるだろう。(明朝体・細字)<span class="nb">}</span><span class="k">\par</span>
</span></span><span class="line"><span class="cl"><span class="nb">{</span><span class="k">\mcfamily</span> ☂ は夜更け過ぎに ☃ へとかわるだろう。(明朝体・中字)<span class="nb">}</span><span class="k">\par</span>
</span></span><span class="line"><span class="cl"><span class="nb">{</span><span class="k">\mcfamily\bfseries</span> ☂ は夜更け過ぎに ☃ へとかわるだろう。(明朝体・太字)<span class="nb">}</span><span class="k">\par</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">{</span><span class="k">\gtfamily</span> ☂ は夜更け過ぎに ☃ へとかわるだろう。(ゴシック体・中字)<span class="nb">}</span><span class="k">\par</span>
</span></span><span class="line"><span class="cl"><span class="nb">{</span><span class="k">\gtfamily\bfseries</span> ☂ は夜更け過ぎに ☃ へとかわるだろう。(ゴシック体・太字)<span class="nb">}</span><span class="k">\par</span>
</span></span><span class="line"><span class="cl"><span class="nb">{</span><span class="k">\gtfamily\ebseries</span> ☂ は夜更け過ぎに ☃ へとかわるだろう。(ゴシック体・極太)<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span></code></pre></div><p>2行目の <code>luatexja-preset</code> パッケージの指定で<a href="https://github.com/trueroad/HaranoAjiFonts" title="trueroad/HaranoAjiFonts: 原ノ味フォント">原ノ味フォント</a>を指定してるのがお分かりだろうか<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>。
これを <code>lualatex</code> コマンドで処理する。</p>
<h3>組版結果(<a href="https://github.com/trueroad/HaranoAjiFonts" title="trueroad/HaranoAjiFonts: 原ノ味フォント">原ノ味フォント</a>使用)</h3>
<p>組版結果はこちら。</p>
<figure style='margin:0 auto;text-align:center;'><a href="./lualatex-sample.png"><img src="./lualatex-sample.png" srcset="./lualatex-sample.png 1388w" sizes="(min-width:600px) 500px, 80vw" alt="LuaLaTeX 出力結果(原ノ味フォント使用)" loading="lazy"></a><figcaption><div><a href="./lualatex-sample.png">LuaLaTeX 出力結果(原ノ味フォント使用)</a></div></figcaption>
</figure>
<p>$\mathrm{up\LaTeX}$ と同等の出力になっている。
よーし,うむうむ,よーし。</p>
<h2>ブックマーク</h2>
<ul>
<li>
<p><a href="https://www.preining.info/blog/2020/04/tex-live-2020-released/">TeX Live 2020 released | There and back again</a></p>
</li>
<li>
<p><a href="https://qiita.com/trueroad/items/5030c9460da71065a721">LuaTeXで原ノ味フォントを使う - Qiita</a></p>
</li>
<li>
<p><a href="https://text.baldanders.info/remark/2017/10/using-source-han-fonts-by-japanese-tex/">TeX 日本語環境で「源ノ」フォントを使ってみた</a></p>
</li>
<li>
<p><a href="https://text.baldanders.info/remark/2015/luatex-ja/">LuaTeX-ja に関する覚え書き</a></p>
</li>
<li>
<p><a href="https://text.baldanders.info/remark/2020/06/remove-tounicode-cmap-from-pdf/">LuaTeX で生成した PDF から ToUnicode CMap を除去する</a></p>
</li>
</ul>
<h2>参考図書</h2>
<div class="hreview">
<div class="photo"><a href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1"><img src="https://m.media-amazon.com/images/I/41xmBlTiwlL._SL160_.jpg" width="126" alt="photo"></a></div>
<dl>
<dt class="item"><a class="fn url" href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1">[改訂第8版]LaTeX2ε美文書作成入門</a></dt>
<dd>奥村晴彦 (著), 黒木裕介 (著)</dd>
<dd>技術評論社 2020-11-14</dd>
<dd>大型本</dd>
<dd>4297117126 (ASIN), 9784297117122 (EAN), 4297117126 (ISBN)</dd>
<dd>評価<abbr class="rating fa-sm" title="5"> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i></abbr></dd>
</dl>
<p class="description">2020年末に第8版が出てたのに気付かなかったよ。可能なら紙の本も買って常に側に置いておくのが吉。<a href="https://gihyo.jp/book/2020/978-4-297-11712-2">版元</a>には PDF 版もある。</p>
<p class="powered-by">reviewed by <a href='#maker' class='reviewer'>Spiegel</a> on <abbr class="dtreviewed" title="2021-09-05">2021-09-05</abbr> (powered by <a href="https://affiliate.amazon.co.jp/assoc_credentials/home">PA-APIv5</a>)</p>
</div> <!-- LaTeX2ε美文書作成入門 -->
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>全体設定では <code>kanji-config-updmap-sys</code> コマンドを,ユーザ毎の設定では <code>kanji-config-updmap-user</code> コマンドで使い分ける。当然ながらユーザ毎の設定のほうが優先されるのでご注意を。 <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:2">
<p><a href="http://www.tug.org/texlive/" title="TeX Live - TeX Users Group">TeX Live</a> 2020 の $\mathrm{Lua\LaTeX}$ では <code>luatexja-preset</code> パッケージの既定が<a href="https://github.com/trueroad/HaranoAjiFonts" title="trueroad/HaranoAjiFonts: 原ノ味フォント">原ノ味フォント</a>になっているようで,フォントを指定しない場合は<a href="https://github.com/trueroad/HaranoAjiFonts" title="trueroad/HaranoAjiFonts: 原ノ味フォント">原ノ味フォント</a>で組版される。 <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
数式用フォントで遊ぶ
tag:text.Baldanders.info,2017-10-05:/remark/2017/10/math-fonts/
2017-10-04T21:58:54+00:00
2021-09-05T08:45:39+00:00
数式用フォントに OpenType フォントを指定する場合は unicode-math パッケージを使う。
Spiegel
https://baldanders.info/profile/
<p><a href="https://text.baldanders.info/remark/2017/09/install-tex-live-2017-for-windows/">TeX Live 2017 インストール</a>後の「$\mathrm{\TeX}$ で遊ぼう」第四弾は</p>
<ul>
<li>数式用フォントで遊ぼう</li>
</ul>
<p>である。</p>
<h2>既定状態での数式表示</h2>
<p>$\mathrm{\TeX}$ および $\mathrm{\LaTeX}$ は元々が数式表現に優れている。
これは $\mathrm{Lua\TeX}$, $\mathrm{Lua\LaTeX}$ でも同じで,たとえばプリアンブルに特に何も書かなくても(『<a href="https://www.amazon.co.jp/exec/obidos/ASIN/4774187054/baldandersinf-22/" title="Amazon | [改訂第7版]LaTeX2ε美文書作成入門 | 奥村 晴彦, 黒木 裕介 通販">LaTeX2ε美文書作成入門</a>』より引用)</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tex" data-lang="tex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="na">[fleqn]</span><span class="nb">{</span>ltjsarticle<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">``?`!`But aren't Kafka's <span class="k">\emph</span><span class="nb">{</span>Schlo<span class="nb">{</span><span class="k">\ss</span><span class="nb">}}</span> and <span class="nb">{</span><span class="k">\AE</span><span class="nb">}</span>sop's <span class="nb">{</span><span class="k">\OE</span><span class="nb">}</span>uvres
</span></span><span class="line"><span class="cl">often na<span class="k">\"</span><span class="nb">{</span><span class="k">\i</span><span class="nb">}</span>ve vis-<span class="k">\`</span>a-vis the d<span class="nb">{</span><span class="k">\ae</span><span class="nb">}</span>monic ph<span class="nb">{</span><span class="k">\oe</span><span class="nb">}</span>nix's
</span></span><span class="line"><span class="cl">official r<span class="k">\^</span>ole in fluffy souffl<span class="k">\'</span>es!?''
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="sb">\[</span><span class="nb">
</span></span></span><span class="line"><span class="cl"><span class="nb"> </span><span class="nv">\left</span><span class="o">(</span><span class="nb"> </span><span class="nv">\int</span><span class="nb">_</span><span class="m">0</span><span class="nb">^</span><span class="nv">\infty</span><span class="nb"> </span><span class="nv">\frac</span><span class="nb">{</span><span class="nv">\sin</span><span class="nb"> x}{</span><span class="nv">\sqrt</span><span class="nb"> x} dx </span><span class="nv">\right</span><span class="o">)</span><span class="nb">^</span><span class="m">2</span><span class="nb"> </span><span class="o">=</span><span class="nb">
</span></span></span><span class="line"><span class="cl"><span class="nb"> </span><span class="nv">\sum</span><span class="nb">_{k</span><span class="o">=</span><span class="m">0</span><span class="nb">}^</span><span class="nv">\infty</span><span class="nb"> </span><span class="nv">\frac</span><span class="nb">{</span><span class="o">(</span><span class="m">2</span><span class="nb">k</span><span class="o">)!</span><span class="nb">}{</span><span class="m">2</span><span class="nb">^{</span><span class="m">2</span><span class="nb">k}</span><span class="o">(</span><span class="nb">k</span><span class="o">!)</span><span class="nb">^</span><span class="m">2</span><span class="nb">} </span><span class="nv">\frac</span><span class="nb">{</span><span class="m">1</span><span class="nb">}{</span><span class="m">2</span><span class="nb">k</span><span class="o">+</span><span class="m">1</span><span class="nb">} </span><span class="o">=</span><span class="nb">
</span></span></span><span class="line"><span class="cl"><span class="nb"> </span><span class="nv">\prod</span><span class="nb">_{k</span><span class="o">=</span><span class="m">1</span><span class="nb">}^</span><span class="nv">\infty</span><span class="nb"> </span><span class="nv">\frac</span><span class="nb">{</span><span class="m">4</span><span class="nb">k^</span><span class="m">2</span><span class="nb">}{</span><span class="m">4</span><span class="nb">k^</span><span class="m">2</span><span class="o">-</span><span class="m">1</span><span class="nb">} </span><span class="o">=</span><span class="nb">
</span></span></span><span class="line"><span class="cl"><span class="nb"> </span><span class="nv">\frac</span><span class="nb">{</span><span class="nv">\pi</span><span class="nb">}{</span><span class="m">2</span><span class="nb">}
</span></span></span><span class="line"><span class="cl"><span class="nb"></span><span class="s">\]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span></code></pre></div><p>以下のような感じで適切に組んでくれる。</p>
<figure style='margin:0 auto;text-align:center;'><a href="https://photo.baldanders.info/flickr/37446584446/"><img src="https://photo.baldanders.info/flickr/image/37446584446_m.png" srcset="https://photo.baldanders.info/flickr/image/37446584446_m.png 500w" sizes="(min-width:600px) 500px, 80vw" alt="equation (1)" loading="lazy"></a><figcaption><div><a href="https://photo.baldanders.info/flickr/37446584446/">equation (1)</a></div></figcaption>
</figure>
<p>もう少し変わった式やシンボルを使う場合には <code>amsmath</code> および <code>amssymb</code> パッケージを使って(同じく『<a href="https://www.amazon.co.jp/exec/obidos/ASIN/4774187054/baldandersinf-22/" title="Amazon | [改訂第7版]LaTeX2ε美文書作成入門 | 奥村 晴彦, 黒木 裕介 通販">LaTeX2ε美文書作成入門</a>』より引用)</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tex" data-lang="tex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="na">[fleqn]</span><span class="nb">{</span>ltjsarticle<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="nb">{</span>amsmath,amssymb<span class="nb">}</span> <span class="c">% amsmath packages
</span></span></span><span class="line"><span class="cl"><span class="c"></span>
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\subsection*</span><span class="nb">{</span>連分数(amsmathパッケージ)<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>equation<span class="nb">}</span>
</span></span><span class="line"><span class="cl"> b<span class="nb">_</span>0 + <span class="k">\cfrac</span><span class="nb">{</span>c<span class="nb">_</span>1<span class="nb">}{</span>b<span class="nb">_</span>1 +
</span></span><span class="line"><span class="cl"> <span class="k">\cfrac</span><span class="nb">{</span>c<span class="nb">_</span>2<span class="nb">}{</span>b<span class="nb">_</span>2 +
</span></span><span class="line"><span class="cl"> <span class="k">\cfrac</span><span class="nb">{</span>c<span class="nb">_</span>3<span class="nb">}{</span>b<span class="nb">_</span>3 +
</span></span><span class="line"><span class="cl"> <span class="k">\cfrac</span><span class="nb">{</span>c<span class="nb">_</span>4<span class="nb">}{</span>b<span class="nb">_</span>4 + <span class="k">\cdots</span><span class="nb">}}}}</span>
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>equation<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\subsection*</span><span class="nb">{</span>黒板文字(amssybパッケージ)<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s">$</span><span class="nv">\mathbb</span><span class="nb">{ABCDEFGHIJELMN}</span><span class="s">$</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span></code></pre></div><p>このように記述すれば,タイプセットの結果は</p>
<figure style='margin:0 auto;text-align:center;'><a href="https://photo.baldanders.info/flickr/36825338243/"><img src="https://photo.baldanders.info/flickr/image/36825338243_m.png" srcset="https://photo.baldanders.info/flickr/image/36825338243_m.png 500w" sizes="(min-width:600px) 500px, 80vw" alt="equation (2)" loading="lazy"></a><figcaption><div><a href="https://photo.baldanders.info/flickr/36825338243/">equation (2)</a></div></figcaption>
</figure>
<p>こんな感じになる。
ちなみに本文の欧文書体は Latin Modern,数式は Computer Modern で,<code>amssymb</code> パッケージで提供される黒板太文字は AMSFonts と呼ばれるものだ<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>。</p>
<h2>本文の欧文書体を OpenType フォントに変更する</h2>
<p>$\mathrm{Lua\LaTeX}$ で本文の書体を OpenType フォントに変更するのはとても簡単になった。
本文の和文フォントを変更する方法は<a href="https://text.baldanders.info/remark/2017/10/using-source-han-fonts-by-japanese-tex/" title="TeX 日本語環境で「源ノ」フォントを使ってみた">前々回に紹介した</a>が,たとえば欧文書体として $\mathrm{\TeX}$ Gyre をセットする場合は</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tex" data-lang="tex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="na">[fleqn]</span><span class="nb">{</span>ltjsarticle<span class="nb">}</span>
</span></span><span class="line hl"><span class="cl"><span class="k">\usepackage</span><span class="na">[no-math,sourcehan]</span><span class="nb">{</span>luatexja-preset<span class="nb">}</span> <span class="c">% Japanese fonts
</span></span></span><span class="line"><span class="cl"><span class="c"></span>
</span></span><span class="line"><span class="cl"><span class="c">% Import fonts
</span></span></span><span class="line hl"><span class="cl"><span class="c"></span><span class="k">\setmainfont</span><span class="na">[Scale=MatchLowercase]</span><span class="nb">{</span>TeXGyreTermes<span class="nb">}</span>
</span></span><span class="line hl"><span class="cl"><span class="k">\setsansfont</span><span class="na">[Scale=MatchLowercase]</span><span class="nb">{</span>TeXGyreHeros<span class="nb">}</span>
</span></span><span class="line hl"><span class="cl"><span class="k">\setmonofont</span><span class="na">[AutoFakeSlant,BoldItalicFeatures={FakeSlant},Scale=MatchLowercase]</span><span class="nb">{</span>Inconsolatazi4<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>document<span class="nb">}</span></span></span></code></pre></div>
<p>のように指定する。
欧文フォントの指定には <code>fontspec</code> パッケージが必要だが,和文フォント設定用の <code>luatexja-preset</code> パッケージに含まれているため,改めて <code>fontspec</code> パッケージを明示する必要はない。</p>
<p>ちなみにタイプライタ文字には <a href="http://levien.com/type/myfonts/inconsolata.html">Inconsolata</a> を指定している<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>。</p>
<p>書体を選択する場合は本文の書体と後述する数式用の書体があまりかけ離れないようバランスをとることが重要である。
『<a href="https://www.amazon.co.jp/exec/obidos/ASIN/4774187054/baldandersinf-22/" title="Amazon | [改訂第7版]LaTeX2ε美文書作成入門 | 奥村 晴彦, 黒木 裕介 通販">LaTeX2ε美文書作成入門</a>』には欧文書体についてかなりページを割いて解説されているので,一読することをお薦めする。</p>
<h2>数式用の書体を変更する</h2>
<h3>既存のパッケージを使う(Concrete + Euler の場合)</h3>
<p>たとえば,数学好きに人気の高い Concrete + Euler フォントの組み合わだが,これは既存のパッケージを使ったほうがよさそうである(<a href="#opt">後述</a>)。
フォントの指定も従来通り。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tex" data-lang="tex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="na">[fleqn]</span><span class="nb">{</span>ltjsarticle<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c">% Import fonts
</span></span></span><span class="line hl"><span class="cl"><span class="c"></span><span class="k">\usepackage</span><span class="nb">{</span>ccfonts,eulervm<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="sb">\[</span><span class="nb">
</span></span></span><span class="line"><span class="cl"><span class="nb"> </span><span class="nv">\left</span><span class="o">(</span><span class="nb"> </span><span class="nv">\int</span><span class="nb">_</span><span class="m">0</span><span class="nb">^</span><span class="nv">\infty</span><span class="nb"> </span><span class="nv">\frac</span><span class="nb">{</span><span class="nv">\sin</span><span class="nb"> x}{</span><span class="nv">\sqrt</span><span class="nb"> x} dx </span><span class="nv">\right</span><span class="o">)</span><span class="nb">^</span><span class="m">2</span><span class="nb"> </span><span class="o">=</span><span class="nb">
</span></span></span><span class="line"><span class="cl"><span class="nb"> </span><span class="nv">\sum</span><span class="nb">_{k</span><span class="o">=</span><span class="m">0</span><span class="nb">}^</span><span class="nv">\infty</span><span class="nb"> </span><span class="nv">\frac</span><span class="nb">{</span><span class="o">(</span><span class="m">2</span><span class="nb">k</span><span class="o">)!</span><span class="nb">}{</span><span class="m">2</span><span class="nb">^{</span><span class="m">2</span><span class="nb">k}</span><span class="o">(</span><span class="nb">k</span><span class="o">!)</span><span class="nb">^</span><span class="m">2</span><span class="nb">} </span><span class="nv">\frac</span><span class="nb">{</span><span class="m">1</span><span class="nb">}{</span><span class="m">2</span><span class="nb">k</span><span class="o">+</span><span class="m">1</span><span class="nb">} </span><span class="o">=</span><span class="nb">
</span></span></span><span class="line"><span class="cl"><span class="nb"> </span><span class="nv">\prod</span><span class="nb">_{k</span><span class="o">=</span><span class="m">1</span><span class="nb">}^</span><span class="nv">\infty</span><span class="nb"> </span><span class="nv">\frac</span><span class="nb">{</span><span class="m">4</span><span class="nb">k^</span><span class="m">2</span><span class="nb">}{</span><span class="m">4</span><span class="nb">k^</span><span class="m">2</span><span class="o">-</span><span class="m">1</span><span class="nb">} </span><span class="o">=</span><span class="nb">
</span></span></span><span class="line"><span class="cl"><span class="nb"> </span><span class="nv">\frac</span><span class="nb">{</span><span class="nv">\pi</span><span class="nb">}{</span><span class="m">2</span><span class="nb">}
</span></span></span><span class="line"><span class="cl"><span class="nb"></span><span class="s">\]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>document<span class="nb">}</span></span></span></code></pre></div>
<p>結果は以下の通り。</p>
<figure style='margin:0 auto;text-align:center;'><a href="https://photo.baldanders.info/flickr/37464960082/"><img src="https://photo.baldanders.info/flickr/image/37464960082_m.png" srcset="https://photo.baldanders.info/flickr/image/37464960082_m.png 500w" sizes="(min-width:600px) 500px, 80vw" alt="equation (Concrete + Euler)" loading="lazy"></a><figcaption><div><a href="https://photo.baldanders.info/flickr/37464960082/">equation (Concrete + Euler)</a></div></figcaption>
</figure>
<h3>OpenType フォントを使う(unicode-math パッケージ)</h3>
<p>数式用の書体に OpenType フォントを指定する場合は <a href="https://github.com/wspr/unicode-math" title="wspr/unicode-math: XeLaTeX/LuaLaTeX package for using unicode/OpenType maths fonts"><code>unicode-math</code></a> パッケージを使うのが便利だ。
たとえば <a href="https://ctan.org/pkg/tex-gyre-math-pagella" title="CTAN: Package tex-gyre-math-pagella">$\mathrm{\TeX}$ Gyre Pagella Math</a> を使う場合は以下のように指定する<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tex" data-lang="tex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="na">[fleqn]</span><span class="nb">{</span>ltjsarticle<span class="nb">}</span>
</span></span><span class="line hl"><span class="cl"><span class="k">\usepackage</span><span class="nb">{</span>unicode-math<span class="nb">}</span> <span class="c">% using unicode/OpenType maths fonts
</span></span></span><span class="line"><span class="cl"><span class="c"></span>
</span></span><span class="line"><span class="cl"><span class="c">% Import fonts
</span></span></span><span class="line hl"><span class="cl"><span class="c"></span><span class="k">\setmathfont</span><span class="nb">{</span>TeXGyrePagella-Math<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="sb">\[</span><span class="nb">
</span></span></span><span class="line"><span class="cl"><span class="nb"> </span><span class="nv">\left</span><span class="o">(</span><span class="nb"> </span><span class="nv">\int</span><span class="nb">_</span><span class="m">0</span><span class="nb">^</span><span class="nv">\infty</span><span class="nb"> </span><span class="nv">\frac</span><span class="nb">{</span><span class="nv">\sin</span><span class="nb"> x}{</span><span class="nv">\sqrt</span><span class="nb"> x} dx </span><span class="nv">\right</span><span class="o">)</span><span class="nb">^</span><span class="m">2</span><span class="nb"> </span><span class="o">=</span><span class="nb">
</span></span></span><span class="line"><span class="cl"><span class="nb"> </span><span class="nv">\sum</span><span class="nb">_{k</span><span class="o">=</span><span class="m">0</span><span class="nb">}^</span><span class="nv">\infty</span><span class="nb"> </span><span class="nv">\frac</span><span class="nb">{</span><span class="o">(</span><span class="m">2</span><span class="nb">k</span><span class="o">)!</span><span class="nb">}{</span><span class="m">2</span><span class="nb">^{</span><span class="m">2</span><span class="nb">k}</span><span class="o">(</span><span class="nb">k</span><span class="o">!)</span><span class="nb">^</span><span class="m">2</span><span class="nb">} </span><span class="nv">\frac</span><span class="nb">{</span><span class="m">1</span><span class="nb">}{</span><span class="m">2</span><span class="nb">k</span><span class="o">+</span><span class="m">1</span><span class="nb">} </span><span class="o">=</span><span class="nb">
</span></span></span><span class="line"><span class="cl"><span class="nb"> </span><span class="nv">\prod</span><span class="nb">_{k</span><span class="o">=</span><span class="m">1</span><span class="nb">}^</span><span class="nv">\infty</span><span class="nb"> </span><span class="nv">\frac</span><span class="nb">{</span><span class="m">4</span><span class="nb">k^</span><span class="m">2</span><span class="nb">}{</span><span class="m">4</span><span class="nb">k^</span><span class="m">2</span><span class="o">-</span><span class="m">1</span><span class="nb">} </span><span class="o">=</span><span class="nb">
</span></span></span><span class="line"><span class="cl"><span class="nb"> </span><span class="nv">\frac</span><span class="nb">{</span><span class="nv">\pi</span><span class="nb">}{</span><span class="m">2</span><span class="nb">}
</span></span></span><span class="line"><span class="cl"><span class="nb"></span><span class="s">\]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>document<span class="nb">}</span></span></span></code></pre></div>
<p>結果は以下の通り。</p>
<figure style='margin:0 auto;text-align:center;'><a href="https://photo.baldanders.info/flickr/23644212118/"><img src="https://photo.baldanders.info/flickr/image/23644212118_m.png" srcset="https://photo.baldanders.info/flickr/image/23644212118_m.png 500w" sizes="(min-width:600px) 500px, 80vw" alt="equation (TeXGyrePagella-Math)" loading="lazy"></a><figcaption><div><a href="https://photo.baldanders.info/flickr/23644212118/">equation (TeXGyrePagella-Math)</a></div></figcaption>
</figure>
<p>他の書体も紹介しよう。
<a href="https://ctan.org/pkg/asana-math" title="CTAN: Package asana-math">Asana Math</a> を利用する場合は,以下のように指定する。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tex" data-lang="tex"><span class="line"><span class="cl"><span class="k">\setmathfont</span><span class="nb">{</span>Asana-Math<span class="nb">}</span>
</span></span></code></pre></div><p>結果は以下の通り。</p>
<figure style='margin:0 auto;text-align:center;'><a href="https://photo.baldanders.info/flickr/23644821888/"><img src="https://photo.baldanders.info/flickr/image/23644821888_m.png" srcset="https://photo.baldanders.info/flickr/image/23644821888_m.png 500w" sizes="(min-width:600px) 500px, 80vw" alt="equation (Asana-Math)" loading="lazy"></a><figcaption><div><a href="https://photo.baldanders.info/flickr/23644821888/">equation (Asana-Math)</a></div></figcaption>
</figure>
<p><a href="https://github.com/khaledhosny/euler-otf" title="khaledhosny/euler-otf: An abandoned OpenType/Unicode math port of AMS Euler font">Neo Euler</a> を利用する場合は,<a href="#elr-inst">フォントを取得</a>して以下のように指定する。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tex" data-lang="tex"><span class="line"><span class="cl"><span class="k">\setmathfont</span><span class="nb">{</span>Neo Euler<span class="nb">}</span>[math-style=upright]
</span></span></code></pre></div><p><code>math-style</code> オプションについては<a href="#opt">後述</a>する。
結果は以下の通り。</p>
<figure style='margin:0 auto;text-align:center;'><a href="https://photo.baldanders.info/flickr/37239500550/"><img src="https://photo.baldanders.info/flickr/image/37239500550_m.png" srcset="https://photo.baldanders.info/flickr/image/37239500550_m.png 500w" sizes="(min-width:600px) 500px, 80vw" alt="equation (Neo Euler)" loading="lazy"></a><figcaption><div><a href="https://photo.baldanders.info/flickr/37239500550/">equation (Neo Euler)</a></div></figcaption>
</figure>
<p><a href="http://www.stixfonts.org/" title="STIX Fonts Project Website">STIX</a> については <a href="http://www.tug.org/texlive/" title="TeX Live - TeX Users Group">TeX Live</a> 2017 に収録されているものはデザインがイマイチな気がする。
なので<a href="#stx2-inst">バージョン2を取得</a>して以下のように指定する。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tex" data-lang="tex"><span class="line"><span class="cl"><span class="k">\setmathfont</span><span class="nb">{</span>STIX Two Math<span class="nb">}</span>
</span></span></code></pre></div><p>結果は以下の通り。</p>
<figure style='margin:0 auto;text-align:center;'><a href="https://photo.baldanders.info/flickr/36788335984/"><img src="https://photo.baldanders.info/flickr/image/36788335984_m.png" srcset="https://photo.baldanders.info/flickr/image/36788335984_m.png 500w" sizes="(min-width:600px) 500px, 80vw" alt="equation (STIX2 Math)" loading="lazy"></a><figcaption><div><a href="https://photo.baldanders.info/flickr/36788335984/">equation (STIX2 Math)</a></div></figcaption>
</figure>
<p><a href="http://www.stixfonts.org/" title="STIX Fonts Project Website">STIX</a> の fork とも言える(?) <a href="https://github.com/khaledhosny/xits" title="khaledhosny/xits: XITS - OpenType implementation of STIX fonts with math support">XITS</a> を利用する場合は,以下のように指定する。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tex" data-lang="tex"><span class="line"><span class="cl"><span class="k">\setmathfont</span><span class="nb">{</span>XITS-Math<span class="nb">}</span>
</span></span></code></pre></div><p>結果は以下の通り。</p>
<figure style='margin:0 auto;text-align:center;'><a href="https://photo.baldanders.info/flickr/37450915146/"><img src="https://photo.baldanders.info/flickr/image/37450915146_m.png" srcset="https://photo.baldanders.info/flickr/image/37450915146_m.png 500w" sizes="(min-width:600px) 500px, 80vw" alt="equation (XITS Math)" loading="lazy"></a><figcaption><div><a href="https://photo.baldanders.info/flickr/37450915146/">equation (XITS Math)</a></div></figcaption>
</figure>
<h2 id="opt">unicode-math パッケージのオプション</h2>
<p><code>unicode-math</code> パッケージのオプションはいくつかあるが,今回はよく使うと思われるものについて紹介する。</p>
<p><code>math-style</code>, <code>bold-style</code>, <code>sans-style</code> 各オプションは数式の文字や記号のスタイルを指定する。
具体的には ラテン小文字,ラテン大文字,ギリシア小文字,ギリシア大文字 それぞれに対して「立体(upright)」または「斜体(slant)」の組み合わせを指定する。</p>
<p>数式全体(<code>math-style</code>)のスタイル設定は以下の通り。</p>
<table>
<thead>
<tr>
<th style="text-align:left"><code>math-style</code></th>
<th style="text-align:center">L小文字</th>
<th style="text-align:center">L大文字</th>
<th style="text-align:center">G小文字</th>
<th style="text-align:center">G大文字</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><code>ISO</code></td>
<td style="text-align:center">斜体</td>
<td style="text-align:center">斜体</td>
<td style="text-align:center">斜体</td>
<td style="text-align:center">斜体</td>
</tr>
<tr>
<td style="text-align:left"><code>TeX</code></td>
<td style="text-align:center">斜体</td>
<td style="text-align:center">斜体</td>
<td style="text-align:center">斜体</td>
<td style="text-align:center">立体</td>
</tr>
<tr>
<td style="text-align:left"><code>french</code></td>
<td style="text-align:center">斜体</td>
<td style="text-align:center">立体</td>
<td style="text-align:center">立体</td>
<td style="text-align:center">立体</td>
</tr>
<tr>
<td style="text-align:left"><code>upright</code></td>
<td style="text-align:center">立体</td>
<td style="text-align:center">立体</td>
<td style="text-align:center">立体</td>
<td style="text-align:center">立体</td>
</tr>
</tbody>
</table>
<p><code>\symbf</code> 指定時(<code>bold-style</code>)のスタイル設定は以下の通り。</p>
<table>
<thead>
<tr>
<th style="text-align:left"><code>bold-style</code></th>
<th style="text-align:center">L小文字</th>
<th style="text-align:center">L大文字</th>
<th style="text-align:center">G小文字</th>
<th style="text-align:center">G大文字</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><code>ISO</code></td>
<td style="text-align:center">斜体</td>
<td style="text-align:center">斜体</td>
<td style="text-align:center">斜体</td>
<td style="text-align:center">斜体</td>
</tr>
<tr>
<td style="text-align:left"><code>TeX</code></td>
<td style="text-align:center">立体</td>
<td style="text-align:center">立体</td>
<td style="text-align:center">斜体</td>
<td style="text-align:center">立体</td>
</tr>
<tr>
<td style="text-align:left"><code>upright</code></td>
<td style="text-align:center">立体</td>
<td style="text-align:center">立体</td>
<td style="text-align:center">立体</td>
<td style="text-align:center">立体</td>
</tr>
</tbody>
</table>
<p><code>\symsf</code> 指定時(<code>sans-style</code>)のスタイル設定は以下の通り。</p>
<table>
<thead>
<tr>
<th style="text-align:left"><code>sans-style</code></th>
<th style="text-align:center">L小文字</th>
<th style="text-align:center">L大文字</th>
<th style="text-align:center">G小文字</th>
<th style="text-align:center">G大文字</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><code>italic</code></td>
<td style="text-align:center">斜体</td>
<td style="text-align:center">斜体</td>
<td style="text-align:center">斜体</td>
<td style="text-align:center">斜体</td>
</tr>
<tr>
<td style="text-align:left"><code>upright</code></td>
<td style="text-align:center">立体</td>
<td style="text-align:center">立体</td>
<td style="text-align:center">立体</td>
<td style="text-align:center">立体</td>
</tr>
</tbody>
</table>
<p>オプションの指定方法は以下の通り。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tex" data-lang="tex"><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="na">[math-style=ISO,bold-style=ISO]</span><span class="nb">{</span>unicode-math<span class="nb">}</span>
</span></span></code></pre></div><p>または</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tex" data-lang="tex"><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="nb">{</span>unicode-math<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\unimathsetup</span><span class="nb">{</span><span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span> math-style=ISO,<span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span> bold-style=ISO<span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span><span class="nb">}</span>
</span></span></code></pre></div><p>フォント指定時にオプションを指定することもできる。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tex" data-lang="tex"><span class="line"><span class="cl"><span class="k">\setmathfont</span><span class="nb">{</span>Neo Euler<span class="nb">}</span>[math-style=upright]
</span></span></code></pre></div><h3>Neo Euler 書体について</h3>
<p><a href="https://github.com/khaledhosny/euler-otf" title="khaledhosny/euler-otf: An abandoned OpenType/Unicode math port of AMS Euler font">Neo Euler</a> のギリシア文字には斜体がないようで, <code>math-style</code> の値を <code>ISO</code> または <code>TeX</code> に設定するとギリシア文字が表示されない。</p>
<figure style='margin:0 auto;text-align:center;'><a href="https://photo.baldanders.info/flickr/23648392388/"><img src="https://photo.baldanders.info/flickr/image/23648392388_m.png" srcset="https://photo.baldanders.info/flickr/image/23648392388_m.png 500w" sizes="(min-width:600px) 500px, 80vw" alt="equation (Neo Euler 2)" loading="lazy"></a><figcaption><div><a href="https://photo.baldanders.info/flickr/23648392388/">equation (Neo Euler 2)</a></div></figcaption>
</figure>
<p>他にも AMSFonts にあるシンボル(先程の黒板太文字とか)が存在しなかったりするようだ。
Euler フォントに関しては,使うのであれば, OpenType ではなく既存のパッケージを使うほうが簡単だろう。</p>
<h2 id="elr-inst">【付録1】 euler.otf ファイルのインストール</h2>
<p><code>euler.otf</code> ファイルは <a href="http://www.tug.org/texlive/" title="TeX Live - TeX Users Group">TeX Live</a> 2017 には収録されていないため手動でインストールする必要がある。</p>
<p>といっても簡単で,まず <code>{$TEXMFLOCAL}/fonts/opentype/public/</code> フォルダを作成し,そこに <a href="https://github.com/khaledhosny/euler-otf" title="khaledhosny/euler-otf: An abandoned OpenType/Unicode math port of AMS Euler font"><code>euler-otf</code></a> リポジトリを <code>git clone</code> すればOK。
ちなみに <code>$TEXMFLOCAL</code> の場所は <code>kpsewhich</code> コマンドで調べられる。
いつもの場所だね。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ kpsewhich -var-value=TEXMFLOCAL
</span></span><span class="line"><span class="cl">C:/texlive/texmf-local
</span></span></code></pre></div><p>コピーできたら <code>mktexlsr</code> コマンドを実行して <code>ls-R</code> を更新し,さらに <code>luaotfload-tool</code> も実行すること。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ mktexlsr
</span></span><span class="line"><span class="cl">mktexlsr: Updating C:/texlive/texmf-local/ls-R...
</span></span><span class="line"><span class="cl">mktexlsr: Updated C:/texlive/texmf-local/ls-R.
</span></span><span class="line"><span class="cl">mktexlsr: Updating C:/texlive/2017/texmf-config/ls-R...
</span></span><span class="line"><span class="cl">mktexlsr: Updated C:/texlive/2017/texmf-config/ls-R.
</span></span><span class="line"><span class="cl">mktexlsr: Updating C:/texlive/2017/texmf-var/ls-R...
</span></span><span class="line"><span class="cl">mktexlsr: Updated C:/texlive/2017/texmf-var/ls-R.
</span></span><span class="line"><span class="cl">mktexlsr: Updating C:/texlive/2017/texmf-dist/ls-R...
</span></span><span class="line"><span class="cl">mktexlsr: Updated C:/texlive/2017/texmf-dist/ls-R.
</span></span><span class="line"><span class="cl">mktexlsr: Done.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">$ luaotfload-tool --update
</span></span></code></pre></div><p>ちゃんとインストールできたか確認も忘れずに。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ luaotfload-tool --fuzzy --find="neo euler"
</span></span><span class="line"><span class="cl">luaotfload | resolve : Font "neo euler" found!
</span></span><span class="line"><span class="cl">luaotfload | resolve : Resolved file name "c:/texlive/texmf-local/fonts/opentype/public/euler-otf/euler.otf"
</span></span></code></pre></div><h2 id="stx2-inst">【付録2】 STIX2 のインストール</h2>
<p><a href="http://www.stixfonts.org/" title="STIX Fonts Project Website">STIX</a> バージョン2(zip ファイル)をダウンロード<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup> し, <code>Fonts/OTF/</code> フォルダにある以下のファイルを <code>{$TEXMFLOCAL}/fonts/opentype/public/STIX2/</code> フォルダにコピーする。</p>
<ul>
<li><code>STIX2Math.otf</code></li>
<li><code>STIX2Text-Bold.otf</code></li>
<li><code>STIX2Text-BoldItalic.otf</code></li>
<li><code>STIX2Text-Italic.otf</code></li>
<li><code>STIX2Text-Regular.otf</code></li>
</ul>
<p>コピーできたら <code>mktexlsr</code> コマンドを実行して <code>ls-R</code> を更新し,さらに <code>luaotfload-tool</code> も実行すること。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ mktexlsr
</span></span><span class="line"><span class="cl">mktexlsr: Updating C:/texlive/texmf-local/ls-R...
</span></span><span class="line"><span class="cl">mktexlsr: Updated C:/texlive/texmf-local/ls-R.
</span></span><span class="line"><span class="cl">mktexlsr: Updating C:/texlive/2017/texmf-config/ls-R...
</span></span><span class="line"><span class="cl">mktexlsr: Updated C:/texlive/2017/texmf-config/ls-R.
</span></span><span class="line"><span class="cl">mktexlsr: Updating C:/texlive/2017/texmf-var/ls-R...
</span></span><span class="line"><span class="cl">mktexlsr: Updated C:/texlive/2017/texmf-var/ls-R.
</span></span><span class="line"><span class="cl">mktexlsr: Updating C:/texlive/2017/texmf-dist/ls-R...
</span></span><span class="line"><span class="cl">mktexlsr: Updated C:/texlive/2017/texmf-dist/ls-R.
</span></span><span class="line"><span class="cl">mktexlsr: Done.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">$ luaotfload-tool --update
</span></span></code></pre></div><p>ちゃんとインストールできたか確認も忘れずに。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ luaotfload-tool --fuzzy --find="stix two math"
</span></span><span class="line"><span class="cl">luaotfload | resolve : Font "stix two math" found!
</span></span><span class="line"><span class="cl">luaotfload | resolve : Resolved file name "c:/texlive/texmf-local/fonts/opentype/public/stix2/stix2math.otf"
</span></span></code></pre></div><h2>ブックマーク</h2>
<ul>
<li><span><a href="http://mirrors.ibiblio.org/CTAN/macros/latex/contrib/unicode-math/unicode-math.pdf">Experimental Unicode mathematical typesetting: The unicode-math package <sup><i class="far fa-file-pdf"></i></sup></a></span></li>
<li><a href="https://org-technology.com/posts/lualatex-unicode-math.html">LuaLaTeX で unicode-math を使う場合の書体変更コマンド | org-技術</a></li>
</ul>
<h2 id="books">参考図書</h2>
<div class="hreview">
<div class="photo"><a href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1"><img src="https://m.media-amazon.com/images/I/41xmBlTiwlL._SL160_.jpg" width="126" alt="photo"></a></div>
<dl>
<dt class="item"><a class="fn url" href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1">[改訂第8版]LaTeX2ε美文書作成入門</a></dt>
<dd>奥村晴彦 (著), 黒木裕介 (著)</dd>
<dd>技術評論社 2020-11-14</dd>
<dd>大型本</dd>
<dd>4297117126 (ASIN), 9784297117122 (EAN), 4297117126 (ISBN)</dd>
<dd>評価<abbr class="rating fa-sm" title="5"> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i></abbr></dd>
</dl>
<p class="description">2020年末に第8版が出てたのに気付かなかったよ。可能なら紙の本も買って常に側に置いておくのが吉。<a href="https://gihyo.jp/book/2020/978-4-297-11712-2">版元</a>には PDF 版もある。</p>
<p class="powered-by">reviewed by <a href='#maker' class='reviewer'>Spiegel</a> on <abbr class="dtreviewed" title="2021-09-05">2021-09-05</abbr> (powered by <a href="https://affiliate.amazon.co.jp/assoc_credentials/home">PA-APIv5</a>)</p>
</div> <!-- LaTeX2ε美文書作成入門 -->
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><code>amsmath</code> および <code>amssymb</code> パッケージは AMS (AmericanMathenatical Society; 米国数学会) が数学論文記述用に開発した $\mathrm{\TeX}$ 用のパッケージ及び文字・記号がベースになっていて,このうちの文字・記号のコレクションが AMSFonts と呼ばれている。 AMSFonts は <code>amssymb</code> パッケージを指定することで使用できる。また $\mathrm{\TeX}$ 用の OpenType フォントには AMSFonts を収録したものもある。 <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:2">
<p>前回の「<a href="https://text.baldanders.info/remark/2017/10/writing-code-with-lualatex/">LuaLaTeX でコードを書いてみる</a>」を参照のこと。 <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:3">
<p><code>amsmath</code> パッケージを併用する場合は <a href="https://github.com/wspr/unicode-math" title="wspr/unicode-math: XeLaTeX/LuaLaTeX package for using unicode/OpenType maths fonts"><code>unicode-math</code></a> パッケージの前に<code>amsmath</code> パッケージを指定しないとタイプセット時にエラーになる。なお <code>amssymb</code> パッケージは必要ない。 <a href="#fnref:3" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:4">
<p>ダウンロード・ページは広告だらけで且つ<a href="http://gigazine.net/news/20150722-sourceforge/" title="オープンソースソフトウェアの老舗サイト「SourceForge」はいかにして堕ちていったのか - GIGAZINE">色々と悪名高い SourceForge</a> なのでご注意を。 <a href="#fnref:4" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
LuaLaTeX でコードを書いてみる
tag:text.Baldanders.info,2017-10-04:/remark/2017/10/writing-code-with-lualatex/
2017-10-04T09:19:51+00:00
2021-09-05T08:45:39+00:00
とりあえず Go 言語による以下のコードを LuaLaTeX で書くことを考える。
Spiegel
https://baldanders.info/profile/
<p>(なんか,すっかりシリーズ化しちゃったなぁ。別 section にすべきだったか?)</p>
<p>さて,<a href="https://text.baldanders.info/remark/2017/09/install-tex-live-2017-for-windows/">TeX Live 2017 インストール</a>後の「$\mathrm{\TeX}$ で遊ぼう」第三弾は</p>
<ul>
<li>$\mathrm{Lua\LaTeX}$ でコードを書いてみる</li>
</ul>
<p>である。
といっても $\mathrm{Lua\LaTeX}$ 特有の部分は少ないと思うので,後半のフォント指定以外は $\mathrm{p\LaTeX}$ とかでもいけるだろう。</p>
<p>とりあえず <a href="https://golang.org/" title="The Go Programming Language">Go 言語</a>による以下のコードを $\mathrm{Lua\LaTeX}$ で書くことを考える。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"fmt"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p"><</span> <span class="mi">10</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"Hello, world"</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>安直に <code>verbatim</code> 環境を使う手もあるが,世の中には <a href="https://ctan.org/tex-archive/macros/latex/contrib/listings" title="CTAN: /tex-archive/macros/latex/contrib/listings"><code>listings</code></a> パッケージなる便利なものがあるらしい。
これを使ってまずは</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tex" data-lang="tex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="nb">{</span>ltjsarticle<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="na">[no-math,sourcehan]</span><span class="nb">{</span>luatexja-preset<span class="nb">}</span> <span class="c">% Japanese fonts
</span></span></span><span class="line"><span class="cl"><span class="c"></span>
</span></span><span class="line hl"><span class="cl"><span class="k">\usepackage</span><span class="nb">{</span>listings<span class="nb">}</span>
</span></span><span class="line hl"><span class="cl"><span class="k">\lstset</span><span class="nb">{</span>
</span></span><span class="line hl"><span class="cl"> frame=single,
</span></span><span class="line hl"><span class="cl"> basicstyle=<span class="k">\small\ttfamily</span>,
</span></span><span class="line hl"><span class="cl"> tabsize=4
</span></span><span class="line hl"><span class="cl"><span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\section</span><span class="nb">{</span>Go 言語による Hello World<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line hl"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>lstlisting<span class="nb">}</span>
</span></span><span class="line"><span class="cl">package main
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">import "fmt"
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">func main() <span class="nb">{</span>
</span></span><span class="line"><span class="cl"> for i := 0; i < 10; i++ <span class="nb">{</span>
</span></span><span class="line"><span class="cl"> fmt.Println("Hello, world")
</span></span><span class="line"><span class="cl"> <span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="nb">}</span>
</span></span><span class="line hl"><span class="cl"><span class="k">\end</span><span class="nb">{</span>lstlisting<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>document<span class="nb">}</span></span></span></code></pre></div>
<p>と書いてみる。
結果はこんな感じ。</p>
<figure style='margin:0 auto;text-align:center;'><a href="https://photo.baldanders.info/flickr/37440154426/"><img src="https://photo.baldanders.info/flickr/image/37440154426_m.png" srcset="https://photo.baldanders.info/flickr/image/37440154426_m.png 500w" sizes="(min-width:600px) 500px, 80vw" alt="code with LuaLaTeX (1)" loading="lazy"></a><figcaption><div><a href="https://photo.baldanders.info/flickr/37440154426/">code with LuaLaTeX (1)</a></div></figcaption>
</figure>
<p>悪かないけど,キーワードの強調表示くらい欲しいよね。
<a href="https://ctan.org/tex-archive/macros/latex/contrib/listings" title="CTAN: /tex-archive/macros/latex/contrib/listings"><code>listings</code></a> パッケージでは <code>language=C++</code> みたいな感じに言語を指定できるらしい。
じゃあ,ってんで早速 <code>language=Go</code> とかやってみたんだけど「知らんがな」って怒られた。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">! Package Listings Error: Couldn't load requested language.
</span></span></code></pre></div><p>んー。
ってことは誰か <a href="https://golang.org/" title="The Go Programming Language">Go 言語</a>用の補助パッケージを作ってくれていれば… というわけで探したらありましたよ。</p>
<ul>
<li><a href="https://github.com/julienc91/listings-golang">julienc91/listings-golang: Golang support for the listings package in LaTeX</a></li>
</ul>
<p>神!!!</p>
<p>というわけで,ここにある <code>listings-golang.sty</code> を取ってきて作業フォルダに置けばいいんだけど,折角なら定常的に使いたいので,以下のフォルダを掘って,そこにリポジトリを git clone してしまった。</p>
<ul>
<li><code>{$TEXMFLOCAL}/tex/latex/</code></li>
</ul>
<p>ちなみに <code>$TEXMFLOCAL</code> の場所は <code>kpsewhich</code> コマンドで調べられる。
いつもの場所だね。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ kpsewhich -var-value=TEXMFLOCAL
</span></span><span class="line"><span class="cl">C:/texlive/texmf-local
</span></span></code></pre></div><p><code>mktexlsr</code> コマンドで <code>ls-R</code> を更新するのも忘れずに。</p>
<p>では,先程の文書を <a href="https://github.com/julienc91/listings-golang" title="julienc91/listings-golang: Golang support for the listings package in LaTeX"><code>listings-golang</code></a> パッケージを使って以下のように書き換える<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tex" data-lang="tex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="nb">{</span>ltjsarticle<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="na">[no-math,sourcehan]</span><span class="nb">{</span>luatexja-preset<span class="nb">}</span> <span class="c">% Japanese fonts
</span></span></span><span class="line"><span class="cl"><span class="c"></span>
</span></span><span class="line hl"><span class="cl"><span class="k">\usepackage</span><span class="nb">{</span>graphicx,xcolor<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="nb">{</span>listings<span class="nb">}</span>
</span></span><span class="line hl"><span class="cl"><span class="k">\usepackage</span><span class="nb">{</span>listings-golang<span class="nb">}</span> <span class="c">% import this package after listings
</span></span></span><span class="line"><span class="cl"><span class="c"></span><span class="k">\lstset</span><span class="nb">{</span>
</span></span><span class="line"><span class="cl"> frame=single,
</span></span><span class="line"><span class="cl"> basicstyle=<span class="k">\small\ttfamily</span>,
</span></span><span class="line"><span class="cl"> tabsize=4,
</span></span><span class="line hl"><span class="cl"> keywordstyle=<span class="k">\color</span><span class="nb">{</span>red<span class="nb">}</span>,
</span></span><span class="line hl"><span class="cl"> stringstyle=<span class="k">\color</span><span class="nb">{</span>blue<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\section</span><span class="nb">{</span>Go 言語による Hello World<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line hl"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>lstlisting<span class="nb">}</span>[language=Golang]
</span></span><span class="line"><span class="cl">package main
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">import "fmt"
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">func main() <span class="nb">{</span>
</span></span><span class="line"><span class="cl"> for i := 0; i < 10; i++ <span class="nb">{</span>
</span></span><span class="line"><span class="cl"> fmt.Println("Hello, world")
</span></span><span class="line"><span class="cl"> <span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>lstlisting<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>document<span class="nb">}</span></span></span></code></pre></div>
<p>結果はこんな感じ。</p>
<figure style='margin:0 auto;text-align:center;'><a href="https://photo.baldanders.info/flickr/37488315861/"><img src="https://photo.baldanders.info/flickr/image/37488315861_m.png" srcset="https://photo.baldanders.info/flickr/image/37488315861_m.png 500w" sizes="(min-width:600px) 500px, 80vw" alt="code with LuaLaTeX (2)" loading="lazy"></a><figcaption><div><a href="https://photo.baldanders.info/flickr/37488315861/">code with LuaLaTeX (2)</a></div></figcaption>
</figure>
<p>おっとお。
原色は派手すぎたか。
まぁ,ここでは分かりやすさ優先ってことで。</p>
<p>実は <a href="https://github.com/julienc91/listings-golang" title="julienc91/listings-golang: Golang support for the listings package in LaTeX"><code>listings-golang</code></a> パッケージの中身はそれほど難しくなくて(でも自分でやれって言われたらやっぱり面倒くさいんだけど)</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tex" data-lang="tex"><span class="line"><span class="cl"><span class="c">%% Golang definition for listings
</span></span></span><span class="line"><span class="cl"><span class="c">%% http://github.io/julienc91/lstlistings-golang
</span></span></span><span class="line"><span class="cl"><span class="c">%%
</span></span></span><span class="line"><span class="cl"><span class="c"></span><span class="k">\RequirePackage</span><span class="nb">{</span>listings<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\lstdefinelanguage</span><span class="nb">{</span>Golang<span class="nb">}</span><span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span> <span class="nb">{</span>morekeywords=[1]<span class="nb">{</span>package,import,func,type,struct,return,defer,panic,<span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span> recover,select,var,const,iota,<span class="nb">}</span>,<span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span> morekeywords=[2]<span class="nb">{</span>string,uint,uint8,uint16,uint32,uint64,int,int8,int16,<span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span> int32,int64,bool,float32,float64,complex64,complex128,byte,rune,uintptr,<span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span> error,interface<span class="nb">}</span>,<span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span> morekeywords=[3]<span class="nb">{</span>map,slice,make,new,nil,len,cap,copy,close,true,false,<span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span> delete,append,real,imag,complex,chan,<span class="nb">}</span>,<span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span> morekeywords=[4]<span class="nb">{</span>for,break,continue,range,goto,switch,case,fallthrough,if,<span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span> else,default,<span class="nb">}</span>,<span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span> morekeywords=[5]<span class="nb">{</span>Println,Printf,Error,<span class="nb">}</span>,<span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span> sensitive=true,<span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span> morecomment=[l]<span class="nb">{</span>//<span class="nb">}</span>,<span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span> morecomment=[s]<span class="nb">{</span>/*<span class="nb">}{</span>*/<span class="nb">}</span>,<span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span> morestring=[b]',<span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span> morestring=[b]",<span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span> morestring=[s]<span class="nb">{</span>`<span class="nb">}{</span>`<span class="nb">}</span>,<span class="c">%
</span></span></span><span class="line"><span class="cl"><span class="c"></span><span class="nb">}</span>
</span></span></code></pre></div><p>という感じでキーワードと文字列とコメントの3つの定義でできている。
このようにして <a href="https://ctan.org/tex-archive/macros/latex/contrib/listings" title="CTAN: /tex-archive/macros/latex/contrib/listings"><code>listings</code></a> パッケージが対応していない言語にも対応できる。</p>
<p>最後に,やっぱタイプライタ文字なら <a href="http://levien.com/type/myfonts/inconsolata.html">Inconsolata</a> だよね,ってことで,タイプライタ文字を以下のように変更する<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tex" data-lang="tex"><span class="line"><span class="cl"><span class="k">\documentclass</span><span class="nb">{</span>ltjsarticle<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="na">[no-math,sourcehan]</span><span class="nb">{</span>luatexja-preset<span class="nb">}</span> <span class="c">% Japanese fonts
</span></span></span><span class="line hl"><span class="cl"><span class="c"></span><span class="k">\setmonofont</span><span class="na">[AutoFakeSlant,BoldItalicFeatures={FakeSlant},Scale=MatchLowercase]</span><span class="nb">{</span>Inconsolatazi4<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="nb">{</span>graphicx,xcolor<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="nb">{</span>listings<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\usepackage</span><span class="nb">{</span>listings-golang<span class="nb">}</span> <span class="c">% import this package after listings
</span></span></span><span class="line"><span class="cl"><span class="c"></span><span class="k">\lstset</span><span class="nb">{</span>
</span></span><span class="line"><span class="cl"> frame=single,
</span></span><span class="line"><span class="cl"> basicstyle=<span class="k">\small\ttfamily</span>,
</span></span><span class="line"><span class="cl"> tabsize=4,
</span></span><span class="line"><span class="cl"> keywordstyle=<span class="k">\color</span><span class="nb">{</span>red<span class="nb">}</span>,
</span></span><span class="line"><span class="cl"> stringstyle=<span class="k">\color</span><span class="nb">{</span>blue<span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>document<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\section</span><span class="nb">{</span>Go 言語による Hello World<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\begin</span><span class="nb">{</span>lstlisting<span class="nb">}</span>[language=Golang]
</span></span><span class="line"><span class="cl">package main
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">import "fmt"
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">func main() <span class="nb">{</span>
</span></span><span class="line"><span class="cl"> for i := 0; i < 10; i++ <span class="nb">{</span>
</span></span><span class="line"><span class="cl"> fmt.Println("Hello, world")
</span></span><span class="line"><span class="cl"> <span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="nb">}</span>
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>lstlisting<span class="nb">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">\end</span><span class="nb">{</span>document<span class="nb">}</span></span></span></code></pre></div>
<p>昔の $\mathrm{Lua\TeX}$-ja では,欧文フォントと和文フォントが干渉するので,指定の順番とかうるさかったが,エラく簡単になったものである。</p>
<p>結果はこんな感じ。</p>
<figure style='margin:0 auto;text-align:center;'><a href="https://photo.baldanders.info/flickr/37441473856/"><img src="https://photo.baldanders.info/flickr/image/37441473856_m.png" srcset="https://photo.baldanders.info/flickr/image/37441473856_m.png 500w" sizes="(min-width:600px) 500px, 80vw" alt="code with LuaLaTeX (3)" loading="lazy"></a><figcaption><div><a href="https://photo.baldanders.info/flickr/37441473856/">code with LuaLaTeX (3)</a></div></figcaption>
</figure>
<p>数字のゼロに斜線が入っているのがお分かりだろうか。
以前は<a href="http://d.hatena.ne.jp/zrbabbler/20130421/1366560678" title="LaTeX の inconsolata がアレなので何とかする - マクロツイーター">ゼロやバッククォート等の表示で苦労してた</a>気がするが,最近のものなら問題ないようだ。</p>
<p>ちなみに,フォント指定にある <code>AutoFakeSlant</code> や <code>BoldItalicFeatures={FakeSlant}</code> といった記述は斜体の定義である。
<a href="http://levien.com/type/myfonts/inconsolata.html">Inconsolata</a> フォントには斜体やイタリック体はないので $\mathrm{Lua\LaTeX}$ 内部で擬似的な斜体を作るよう指示しているのだ。</p>
<h2>ブックマーク</h2>
<ul>
<li><a href="http://turgure.hatenablog.com/entry/2016/08/19/183501">LaTeXでソースコードを書く - しがないプログラマ(仮)のブログ</a></li>
<li><a href="http://www.biwako.shiga-u.ac.jp/sensei/kumazawa/tex/listings.html">listings.sty: LaTeX パッケージ</a> : <code>\lstset</code> について簡単な解説</li>
</ul>
<h2>参考図書</h2>
<div class="hreview">
<div class="photo"><a href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1"><img src="https://m.media-amazon.com/images/I/41xmBlTiwlL._SL160_.jpg" width="126" alt="photo"></a></div>
<dl>
<dt class="item"><a class="fn url" href="https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1">[改訂第8版]LaTeX2ε美文書作成入門</a></dt>
<dd>奥村晴彦 (著), 黒木裕介 (著)</dd>
<dd>技術評論社 2020-11-14</dd>
<dd>大型本</dd>
<dd>4297117126 (ASIN), 9784297117122 (EAN), 4297117126 (ISBN)</dd>
<dd>評価<abbr class="rating fa-sm" title="5"> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i></abbr></dd>
</dl>
<p class="description">2020年末に第8版が出てたのに気付かなかったよ。可能なら紙の本も買って常に側に置いておくのが吉。<a href="https://gihyo.jp/book/2020/978-4-297-11712-2">版元</a>には PDF 版もある。</p>
<p class="powered-by">reviewed by <a href='#maker' class='reviewer'>Spiegel</a> on <abbr class="dtreviewed" title="2021-09-05">2021-09-05</abbr> (powered by <a href="https://affiliate.amazon.co.jp/assoc_credentials/home">PA-APIv5</a>)</p>
</div> <!-- LaTeX2ε美文書作成入門 -->
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://github.com/julienc91/listings-golang" title="julienc91/listings-golang: Golang support for the listings package in LaTeX"><code>listings-golang</code></a> パッケージは <code>\RequirePackage</code> コマンドで <a href="https://ctan.org/tex-archive/macros/latex/contrib/listings" title="CTAN: /tex-archive/macros/latex/contrib/listings"><code>listings</code></a> パッケージを内部で呼び出しているため,記述上は <a href="https://ctan.org/tex-archive/macros/latex/contrib/listings" title="CTAN: /tex-archive/macros/latex/contrib/listings"><code>listings</code></a> パッケージを置き換えることができる。のだが,今回は README にしたがっている。 <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:2">
<p>厳密に言うと,今回使うのはオリジナルの <a href="http://levien.com/type/myfonts/inconsolata.html">Inconsolata</a> を改良した zi4 版である。 <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>