LoginSignup
92
46

More than 1 year has passed since last update.

LaTeXで年賀状を作る

Last updated at Posted at 2019-12-17

はじめに

急に年賀状を用意しないといけない!という時どういったツールをつかうとよいだろうか?PowerPointなどのスライド作成ソフトで作ったり、あるいは専用のツールを購入するという手もあるかもしれない。この記事では、フリーソフトウェアである$\mathrm{\LaTeX}$を利用して美しい年賀状をつくる方法を紹介する。この方法は$\mathrm{\LaTeX}$とjletteraddressクラス、さらにそれをコンパイルする環境をDockerで作成したことによって、特に$\mathrm{\LaTeX}$の知識がなくとも勘で年賀状を出力できるのが利点である。また著者の知るかぎり年賀状を作るソフトウェアは数式やソースコードの出力に対応しているとは言えないだろうが、$\mathrm{\LaTeX}$では既存の$\mathrm{\LaTeX}$資産を利用できるため年賀状に数式やソースコードを容易に埋め込むことができるうえ、個人の論文や同人誌など他の$\mathrm{\LaTeX}$文書からデータを流用できるという利点もある。

上記のGitHubリポジトリにコードの一覧がある。この記事について疑問や改善点を見つけた場合は、気軽にコメントなどで教えてほしい。

Overleaf版

@QFTloverさんがOverleafに移植してくれました!

成物果

このような年賀状を出力できる。

あとはこれを編集して印刷するだけ!

使い方

次のような手順で、すごく簡単に:point_up:のような年賀状を得ることができる。なおDockerdocker-composeが必要である。

  1. git clone https://github.com/y-yu/new-year-letter.git
  2. cd new-year-letter
  3. docker-compose up

いったんこれでletter.pdfを得ることができる。あとは好みにあわせてletter.texを書き換えていけばよい。

本文の編集

$\mathrm{\LaTeX}$ファイルの編集というとキツい印象があるかもしれないが、実はサンプルは非常にシンプルに書かれている。

letter.tex
\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}$を使う人がいれば、それと同じような感覚で使えるのは利点だと思う。

参考

92
46
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
92
46