LaTeXでシナリオ同人誌:マクロを使ってエネミーデータ表示

前回の見出し表示が上手くいって、LaTeXさんのこと、思っていたよりいい子なのかもしれないと感じてきました。
というところでLaTeXさんのさらなるチャームポイント、マクロについてです。

マクロとは

Q. 色々言ってるけど、マクロって言葉、ちゃんと定義わかって使ってる?
A. ( 'ω')……。

煩雑な操作をまとめて自動化したりするもの、ではあるのですが、マクロマクロって言ってもExcelなのかプログラムなのかとかで微妙に言ってることが違うような気がしてよくわからん。
LaTeX界ではどうなのか、図書館まで走ってきました。

LaTeXの命令のことを一般的にコマンド(command)といいますが,このような自前の命令のことを特にマクロ(macro)ということがあります.
(奥村晴彦著「[改訂版]LaTeX2ε 美文書作成入門」より)

なるほど!
前回無理やり画像表示させるために作った\chapgraphもマクロで間違いなかったようです。よかった。

どうしてマクロを使いたいか

このページの「LaTeX におけるマクロのメリット」にだいたい書いてあります。
私はすぐ「仕様決定した後だけどここをちょっと変えたい」と言い出す病気を患っているので、メンテナンス性の高さは心強く……。あと、大事なことなんですが、使いこなすとなんか格好いいです。

エネミーデータ表示用のマクロを作る

というわけで、要素が多くてごちゃごちゃしそうなエネミーデータを、すっきり記述・表示できるマクロを作ってみます。

LaTeXでは、
\newcommand{\命令の名前}[引数の数]{命令の内容}
で自作コマンド(マクロ)を作ることができます。引数は#1、#2、…でそのまま参照されます。

インセインのエネミーデータの要素は以下の8つほど。改行位置は、インセインルールブックの表示に準じています。

1:名前/2:脅威度/3:属性/4:生命力
5:好奇心/6:特技
7:アビリティ
8:解説

厳密には、アビリティの内容を詳しく分割してもよいのですが、その辺をきちんとしようとすると\newcommandでは引数周りの機能が足りないので、今回は割愛です。ここだけは強制改行\\を使って、強引に複数行を表示していきます。

とりあえず、8つの引数を持った\insEnemというマクロを作成。最初に作っておいた自作パッケージ、insdata.styに内容を書き込んでmain.texから呼び出します。

insdata.sty内の記述↓

%\insEnem{1:名前}{2:脅威度}{3:属性}{4:生命力}{5:好奇心}{6:特技}{7:アビリティ}{8:解説}
\newcommand{\insEnem}[8]
{
\begin{tabular}{|lr|}
 \hline
   \large \bfseries #1 & \ecap{脅威度}#2 \ecap{属性}#3 \ecap{生命力}#4 \\ \hline
   \ecap{好奇心}#5 & \ecap{特技}#6 \\ \hline
   \multicolumn{2}{|l|}{
       \begin{tabular}{l}\ecap{アビリティ} \\#7\end{tabular}
   } \\ \hline
   \multicolumn{2}{|l|}{\ecap{解説}\footnotesize#8} \\ \hline
  \end{tabular}
}

\newcommand{\ecap}[1]{\footnotesize #1:\normalsize}

noteのコード表示がLaTeXに対応していなくて色分けが見づらいですな!

引数として渡された値を、適当に表の上で表示させています。
アビリティの部分は、任意の場所で改行したいので、セルの中にもう一つtabularを入れ子にして対処。
「脅威度」「属性」などの文字の書式だけ変えたいので、見やすいように\ecapというマクロを別に作って\insEnem内で使っています。コマンド名のセンスがないのですが、たぶんEnemy data Captionってことなんでしょう……意味があっているかはわかりません。

main.tex内の記述↓

%\insEnem{1:名前}{2:脅威度}{3:属性}{4:生命力}{5:好奇心}{6:特技}{7:アビリティ}{8:解説}

\insEnem{こむだ}{1}{怪異}{6}{技術}{《焼却》《電子機器》《機械》《終末》}
{【基本攻撃】攻撃《終末》\\
【トリック】攻撃《機械》\\
【大暴れ】攻撃《焼却》}
{そらとぶ牛骨。カレンダーをよく燃やす。}

本文の記述は(比較的)すっきり。

出力結果↓

画像1

できました!

ただし、このままだと解説などを長く書いた場合に表がはみ出してしまいます。ちゃんとtable環境使うかなんとかしないといけません。
もうちょっと公式の表示にも寄せていきたいところです。

やる気がなくなってきたので今日はここまで。
こうやってマクロを作っておけば、いずれやる気が復活したときに\newcommand{\insEnem}の中身をいじれば良いので楽ちんです。

まとめ

なんか……最近、LaTeXちゃん可愛くない……? これが恋……?

もう少し見た目をいい感じにしたいので、次回はtcolorboxパッケージを使っていきます。マニュアルを読んでいるのですが、このパッケージつよい。

いいなと思ったら応援しよう!