いものやま。

雑多な知識の寄せ集め

TeXで同人誌を作ってみた。(奥付)

f:id:yamaimo0625:20190918075457j:plain

同人誌を作るときに必要となるのが奥付。
これはその同人誌を発行したのが誰か分かるようにし、何かあったときに問い合わせが出来るようにするため。
印刷所を使う場合、印刷所の名前も入れることになる。

仕様

今回、奥付は次のようにすることにした:

  • 連絡先は著書紹介にまとめ、奥付の近くに配置
  • 奥付は偶数ページに配置
  • 著者紹介は奇数ページでも偶数ページでもOK(偶数ページの場合は奥付と一緒のページ)

ページ配置

上記の仕様を満たすために、次のようなコードを書いた:

% 著者紹介 + 奥付

\clearpage

% ページスタイルなし
\thispagestyle{empty}

% 著者紹介とか連絡先とか

% 奥付は偶数ページに載せる
\makeatletter%
    \ifodd\c@page%
        \hbox{}\newpage\thispagestyle{empty}%
    \fi%
\makeatother

% 下寄せ
\vspace*{\fill} % *をつけるとページ先頭でも入る。

% 奥付

まず\clearpageで改ページしておいて\thispagestyleでページスタイルをemptyにしておく。
これはページ番号とか柱とか出したくないから。

そして、著者紹介とか連絡先を書く。

そのあとが肝心で、\ifodd\c@pageとすることで、現在のページ番号が奇数の場合だけさらに改ページしてページスタイルをemptyにするとしている。
これによって、著者紹介が奇数ページなら奥付は偶数ページに来て、著者紹介が偶数ページならそのまま同じページが使われる。
\newpageの前に\hbox{}が入ってるのは、たしか著者紹介が空の場合にうまく動くようにするためのはず)

あとは下寄せで奥付を出すために垂直方向の空きを入れている。

奥付の出力

奥付はたしか最初description環境を使って書こうとしたんだけど、何か問題があって(記録が残ってない・・・)tabular環境を使うことにし、それも問題があった(幅いっぱいに表を伸ばせない)ので最終的にtabular*環境を使うのに落ち着いた。

こんな感じ:

% 奥付
\begin{flushleft}
    % 幅いっぱいにするためにtabular*環境を使用
    % @{}とするとパディングがなくなる
    % また、@{...}とすると、セルの区切りに...が入る
    \begin{tabular*}{\textwidth}{@{}l@{\extracolsep{\fill}}}
        \textbf{\huge Math Poker Girl} \\
        \hline
        \begin{tabular}{@{}r@{\kern.5zw}r@{\kern.5zw}r@{\kern1.5zw}ll}
            2019 &  9 & 22 & 初版1刷発行 & (技術書典7) \\
        \end{tabular} \\
        \\
        \begin{tabular}{@{}l@{\kern.5zw\textbf{:}\kern1zw}l}
            \textbf{著者} & やまいも \\
            \textbf{発行} & いもあらい。 \\
            \textbf{印刷} & 有限会社ねこのしっぽ \\
        \end{tabular} \\
        \hline
    \end{tabular*}
\end{flushleft}

ページ幅いっぱいの表

普通のtabular環境で表を作ると「適切な」幅の表にされてしまうので、ページ幅いっぱいの表を作るためにtabular*環境を使った。
引数で表の幅として\textwidthを指定している。

あとは表の列レイアウトの指定で@{\extracolsep{\fill}}を入れると、その列に十分な幅が与えられるっぽい。

・・・と書いててコード見返すと、なんでこれ表使ってるんだろう?
1列しかないから、表にしなくてもいいような。
線を引くのに\hrulefillだと問題があって\hlineを使いたかったとかなのかな・・・

表の縦区切り

表の列レイアウトの指定で|とすると縦線(と空き)が入るのは知っていたけど、@{<tokens>}とすると<tokens>が入るのは知らなかった。
これを利用して@{}とすると空きがまったく入らなくなり、あるいは@{年}とすると区切りにが入るようになると。

発行日の表ではこれを使って年月日をキレイに整えて出力している。
(単に@{年}だと空きがまったく入らなくなってしまうので、@{年\kern.5zw}と半角分の空きを入れてる)

仕上がり

出来上がった著者紹介&奥付は、こんな感じ:

f:id:yamaimo0625:20190921100151p:plain f:id:yamaimo0625:20190921100209p:plain

Re:VIEWの残念な感じの奥付と比較して、なかなかいい感じに出来上がったので嬉しいw

今日はここまで!