同人誌を作るときに必要となるのが奥付。
これはその同人誌を発行したのが誰か分かるようにし、何かあったときに問い合わせが出来るようにするため。
印刷所を使う場合、印刷所の名前も入れることになる。
仕様
今回、奥付は次のようにすることにした:
- 連絡先は著書紹介にまとめ、奥付の近くに配置
- 奥付は偶数ページに配置
- 著者紹介は奇数ページでも偶数ページでも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}
と半角分の空きを入れてる)
仕上がり
出来上がった著者紹介&奥付は、こんな感じ:
Re:VIEWの残念な感じの奥付と比較して、なかなかいい感じに出来上がったので嬉しいw
今日はここまで!