はじめに
急に年賀状を用意しないといけない!という時どういったツールをつかうとよいだろうか?PowerPointなどのスライド作成ソフトで作ったり、あるいは専用のツールを購入するという手もあるかもしれない。この記事では、フリーソフトウェアである$\mathrm{\LaTeX}$を利用して美しい年賀状をつくる方法を紹介する。この方法は$\mathrm{\LaTeX}$とjletteraddressクラス、さらにそれをコンパイルする環境をDockerで作成したことによって、特に$\mathrm{\LaTeX}$の知識がなくとも勘で年賀状を出力できるのが利点である。また著者の知るかぎり年賀状を作るソフトウェアは数式やソースコードの出力に対応しているとは言えないだろうが、$\mathrm{\LaTeX}$では既存の$\mathrm{\LaTeX}$資産を利用できるため年賀状に数式やソースコードを容易に埋め込むことができるうえ、個人の論文や同人誌など他の$\mathrm{\LaTeX}$文書からデータを流用できるという利点もある。
上記のGitHubリポジトリにコードの一覧がある。この記事について疑問や改善点を見つけた場合は、気軽にコメントなどで教えてほしい。
Overleaf版
@QFTloverさんがOverleafに移植してくれました!
もう年賀状シーズンは終わりましたが、@_yyu_ さんのLaTeX年賀状テンプレをOverleafに移植しました。
— T duality (@QFTlover) January 4, 2022
許可を得てGalleryに公開しているので誰でもオンラインで簡単に使えます。(compilerはlatexにしてください)
完成形は引RTのようになります。(詰め込みすぎて少し切れた)https://t.co/Anqy1J3p49 https://t.co/uWAhBnh5g6
成物果
このような年賀状を出力できる。
あとはこれを編集して印刷するだけ!
使い方
次のような手順で、すごく簡単にのような年賀状を得ることができる。なおDockerとdocker-compose
が必要である。
git clone https://github.com/y-yu/new-year-letter.git
cd new-year-letter
docker-compose up
いったんこれでletter.pdf
を得ることができる。あとは好みにあわせてletter.tex
を書き換えていけばよい。
本文の編集
$\mathrm{\LaTeX}$ファイルの編集というとキツい印象があるかもしれないが、実はサンプルは非常にシンプルに書かれている。
\documentclass{jletteraddress}
\usepackage{amsmath}
\usepackage[papersize={100mm, 148mm}, margin=0mm]{geometry}
\newcommand{\bra}[1]{\mathinner{\left\langle{#1}\right|}}
\newcommand{\ket}[1]{\mathinner{\left|{#1}\right\rangle}}
\newcommand{\braket}[2]{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
\sendername{吉村 優}
\senderaddressa{茨城県つくば市天王台1-1-1}
\senderaddressb{筑波大学第三エリア3C212}
\senderpostcode{3058573}
\renewcommand{\baselinestretch}{1.2}
\begin{document}
\pagestyle{empty}
\addaddress
{山田 太郎}{様}
{1138654}
{東京都文京区本郷7-3-1}
{}
\newpage
\newgeometry{
top=10mm,
left=10mm,
right=10mm,
bottom=5mm
}
\begin{abstract}
\footnotesize
この文章では、新年の挨拶を述べるための手紙である``年賀状''を作る方法について述べる。
従来の年賀状を作成するソフトウェアは数式やソースコードの埋め込みが貧弱であったが、
我々はそれを解決す方法として組版ソフト\LaTeX を利用する方法を示す。
In this paper, we describe how to make a letter to hello new year.
For conventional softwares that makes those letter,
it's difficult to write mathmatical expressions or
programming source code.
We show how we solve that problem with \LaTeX.
\end{abstract}
\section*{Introduction}
年賀状は年の始めに互いに送信する手紙のことである。
近年はLINEなどに対抗するため、年賀状に次のような複雑な数式を埋め込みたい
ニーズが存在する。
{\scriptsize
\begin{align*}
\left|\braket{+}{\varphi_{0 \oplus b, 0 \oplus b}}\right|^2 &= \left\{
\begin{array}{l}
\left|\braket{+}{\alpha\ket{0} + \beta\ket{1}}\right|^2 = \left|\frac{1}{\sqrt{2}}(\alpha + \beta)\right|^2 \\
\left|\braket{+}{\beta\ket{0} + \alpha\ket{1}}\right|^2 = \left|\frac{1}{\sqrt{2}}(\beta + \alpha)\right|^2
\end{array}
\right\} \\
&= \frac{(\alpha + \beta)^2}{2}
\end{align*}
}
\noindent
この文章ではこのような複雑な数式を埋め込むために\LaTeX を
利用した解決方法について述べる。
\begin{flushright}
\tiny This letter was generated by \LaTeX.
\end{flushright}
\end{document}
下記にざっくりどういった意味なのか解説していく。
-
\sender○○○
系のコマンドが差出人の情報を示す -
\baselinestretch
は行間をデフォルトの1.2倍へ広げている(これは好み) -
\addaddress
は宛先情報 -
\newgeometry
で余白の設定
という感じで、あとは適当にabstract
とかを消していじってみてdocker-compose up
してコンパイルしていけばOKである。これはこの記事の著者というよりもjletteraddressがすごいので、このように簡単になっている。
まとめ
このようにjletteraddressを使えば$\mathrm{\LaTeX}$で簡単に年賀状を作ることができる。ただ$\mathrm{\LaTeX}$のコンパイルは慣れていないと大変であるため、著者の貢献としてそこをDockerで隠蔽した。普段、論文や同人誌の執筆などで$\mathrm{\LaTeX}$を使う人がいれば、それと同じような感覚で使えるのは利点だと思う。