Help us understand the problem. What is going on with this article?

LaTeXで年賀状を作る

はじめに

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

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

成物果

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

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

使い方

次のような手順で、すごく簡単に: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}$を使う人がいれば、それと同じような感覚で使えるのは利点だと思う。

参考

yyu
暗号やプログラム言語の記事をよく書きます。 I'm interested in Programming and Cryptography.
https://twitter.com/_yyu_
recruitmp
結婚・カーライフ・進学の情報サイトや『スタディサプリ』などの学びを支援するサービスなど、ライフイベント領域に関わるサービスを提供するリクルートグループの中核企業
http://www.recruit-mp.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした