LaTeX + TikZ で年賀状を作る(2016年版)
概要
LaTeX上で動く描画用のパッケージであるTikZを利用して年賀状を作った例。
LaTeX + TikZ による年賀状
文書処理システムであるLaTeXと、LaTeX上で動く描画用のパッケージであるTikZを使って、2016年用の年賀状を作ってみた。

年賀状の中央にある青みがかった正三角形は、TikZ で描かれている。この正三角形は、2016個の球によって構成されている。2016個の球を1つ1つ人手で並べていくと大変な手間がかかるが、TikZ で簡単なループを組むことによって、一気に2016個の球を描くことに成功している。なお、2016個の球がちょうど正三角形を構成する背景については、「(西暦)2016(年)も(平成)28(年)も三角数かつ六角数」を参照のこと。
uplatex + dvipdfmx を用いて、上記の2016年の年賀状を出力したPDFを用意したので、印刷などで必要な方はこのPDFをダウンロードしてください。
ソースコード
上記の年賀状を出力するためのLaTeXのソースコードは以下の通りである ((2016年1月4日追記:年賀状の中の三角形の図を描くにあたっては、Stack Exchange の Triangular numbers in TikZ という質問とそれに対する回答を参考にした)) 。
\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