LaTeX + TikZ による年賀状
文書処理システムであるLaTeXと、LaTeX上で動く描画用のパッケージであるTikZを使って、2016年用の年賀状を作ってみた。
年賀状の中央にある青みがかった正三角形は、TikZ で描かれている。この正三角形は、2016個の球によって構成されている。2016個の球を1つ1つ人手で並べていくと大変な手間がかかるが、TikZ で簡単なループを組むことによって、一気に2016個の球を描くことに成功している。なお、2016個の球がちょうど正三角形を構成する背景については、「(西暦)2016(年)も(平成)28(年)も三角数かつ六角数」を参照のこと。
uplatex + dvipdfmx を用いて、上記の2016年の年賀状を出力したPDFを用意したので、印刷などで必要な方はこのPDFをダウンロードしてください。
ソースコード
上記の年賀状を出力するためのLaTeXのソースコードは以下の通りである [1] 。
\documentclass[uplatex]{jsarticle} % 和文の多書体を使うために。 \usepackage[expert, deluxe]{otf} % 紙のサイズや余白の調整のために。 % geometryパッケージにdvipdfmxオプションはないので, % 代わりにdvipdfmオプションを使う。 \usepackage[dvipdfm]{geometry} % 図の出力のために。 \usepackage[dvipdfmx]{graphicx} \usepackage{tikz} % 紙のサイズを10.0cm×14.8cmに設定し, % 余白を上下左右ともに1.0cmにする。 \geometry{paperwidth=10.0cm, paperheight=14.8cm, margin=1.0cm} % 段落始めのインデントをしないようにする。 \setlength\parindent{0pt} % ページ番号などを表示しないようにする。 \pagestyle{empty} % 正三角形状に球を並べて % 図を描くための命令の定義 %% 図を構成する球の半径の定義 \newlength\radius \pgfmathsetlength{\radius}{0.05cm} %% 図を描く命令の本体 \newcommand\drawballs[1]{% \foreach \y [evaluate=\y as \yy using #1+1-\y] in {1,...,#1} {% \foreach \x in {1,...,\yy} {% \shade[ball color=blue!\yy] ({(2*\x-2+\y)*\radius},{sqrt(3)*\y*\radius}) circle (\radius); }; }% } % 本文の始まり \begin{document} \begin{center} % フォントサイズ変更,太ゴシックにする {\fontsize{50pt}{60pt}\usekanji{JY2}{hgt}{bx}{n} 謹賀新年} % 「謹賀新年」と図の間の水平方向の空白 \vspace{0.3cm} % 63段からなる図を描く \begin{tikzpicture} \drawballs{63} \end{tikzpicture} % 図と「2016」の間の水平方向の空白 \vspace{0.3cm} % フォントサイズ変更,フォントをURW Groteskにする {\fontsize{42pt}{45pt}\usefont{T1}{ugq}{b}{n} 2016} % 「2016」と最後の文章の間の水平方向の空白 \vfill 上に描かれている三角形は,上の段から順に, $1, 2, \dots, 62, 63$ 個の球から構成されています。 よって,この三角形には,$1 + 2 + \cdots + 62 + 63$ 個, すなわち,{\usefont{T1}{ugq}{b}{n} 2016} 個の球があることになります。 今年を表す数はこんな楽しげな性質を持っています。 あなたの2016年が良きものになりますように。 \end{center} \end{document}
このソースを適当な.texファイルに保存して、uplatex でDVIに変換し、dvipdfmx でPDFに変換すれば、先に挙げたような年賀状がPDF形式で出力される。例えば、nenga-2016.tex というファイルに保存した場合、以下のようなコマンドで、nenga-2016.pdf というPDFが出力されるはずだ。
uplatex nenga-2016 dvipdfmx nenga-2016
脚注
- 2016年1月4日追記:年賀状の中の三角形の図を描くにあたっては、Stack Exchange の Triangular numbers in TikZ という質問とそれに対する回答を参考にした [↩]