TeXでjsbookの表紙いっぱいに画像を設定する

#はじめに
技術書を作成しているときに「凝った表紙にしたいな」と思って
技術書のページサイズ(A4)と同じ画像を用意したものの
表紙いっぱいに画像を貼ることが大変だったため、備忘録です。

#最終的なもの
こちらにあったものを少し改良して使わせていただきました。
https://www.ms.u-tokyo.ac.jp/~abenori/tex/haikei.html

```tex
\documentclass[12pt, a4paper, report]{jsbook}
\usepackage[dvipdfmx]{graphicx}

\hoffset0mm
\voffset0mm

\makeatletter
\let\@@shipout\shipout
\def\shipout\vbox{\@@shipout\vbox\bgroup\afterassignment\insertBackGround\let\reserved@a=}
\def\insertBackGround#1{#1%
        \iftombow
                \copy\BackGround\kern0pt
        \else
                \kern-1truein\moveleft1truein\copy\BackGround\kern1truein
        \fi}
\newbox\BackGroundUnit
\newbox\BackGround
\def\@haikei#1{
\setbox\BackGroundUnit\hbox{\includegraphics*[width=\paperwidth]{#1}}
\@tempdima\paperheight
\advance\@tempdima\ht\BackGroundUnit\advance\@tempdima\dp\BackGroundUnit
\setbox\BackGround\vbox to \@tempdima{
        \@tempdima=\paperwidth\advance\@tempdima\wd\BackGroundUnit
        \leaders\hbox to\@tempdima{\leaders\copy\BackGroundUnit\hfil}\vfil
}
\wd\BackGround=0pt\ht\BackGround=0pt\dp\BackGround=0pt
}
\newcommand{\incluedefullgraphics}[1]{\pagestyle{empty}\@haikei{#1}\null}
\makeatother

\begin{document}
  
  \begin{titlepage}
　　\thispagestyle{empty}
    \incluedefullgraphics{images/titlepage.png}
  \end{titlepage}

　% 本文

\end{document}
```

#試したもの
以下、試してみたけどうまくいかなかったものです。

## includegraphicsで普通に画像を表紙に入れる
同じサイズぐらいの画像は入れられたが、左と上に余白ができた

```tex
\documentclass[12pt, a4paper, report]{jsbook}
\usepackage[dvipdfmx]{graphicx}

\begin{document}

  \begin{titlepage}
    \pagestyle{empty}
    \begin{figure}
      \begin{center}
        \includegraphics{images/titlepage.png}
      \end{center}
    \end{figure}
  \end{titlepage}

　% 本文

\end{document}
```

## geometryを使う
余白を消すにはgeometryを使うと良いという記事を見つけたのでそれを試した。
https://qiita.com/genyajoe/items/4ca0652587651593d502

そのまま挿入すると画像がページより大きなサイズだったので
`width=\textwidth,height=\textheight`を設定することで同じサイズになった。
しかし、表紙以外のページのレイアウトが崩れてしまった。
（左と右がはみ出したような状態。テキストの折り返し箇所が変わった。）
これはjsbookとgeometryの相性が悪かったことが原因だった。
https://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/52383.html
jbookにしたところマシにはなったが、レイアウトが大幅に変わったため別の方法を模索した。

```tex
\documentclass[12pt, a4paper, report]{jsbook}
\usepackage[dvipdfmx]{graphicx}
\usepackage[pass]{geometry}

\begin{document}

  \begin{titlepage}
    \newgeometry{left=0cm,top=0cm}
    \thispagestyle{empty}
      \begin{figure}
        \includegraphics[width=\textwidth,height=\textheight]{images/titlepage.png}
      \end{figure}
    \restoregeometry
  \end{titlepage}

  % 本文

\end{document}
```

```tex
\documentclass[12pt, a4paper, report]{jbook}
\usepackage[dvipdfmx]{graphicx}
\usepackage[pass]{geometry}

\begin{document}

  \newgeometry{left=0cm,top=0cm}
  \thispagestyle{empty}
  \begin{titlepage}
    \begin{figure}
      \includegraphics[width=\textwidth,height=\textheight]{images/titlepage.png}
    \end{figure}
  \end{titlepage}
  \restoregeometry

  % 本文

\end{document}
```

## wallpaperを使う
wallpaperというパッケージを導入すると表紙いっぱいに画像を貼れるという記事があったためそちらを試した。
https://yamaimo.hatenablog.jp/entry/2019/10/03/200000
しかし、画像が同様の方法であっても画像が表示されなかった。
これは`\usepackage[dvipdfmx]{graphicx}`と衝突していたことが原因だった。
https://chy72.hatenablog.com/entry/2014/12/14/021914
手順に沿って`\usepackage[dvipdfmx]{}`に変更したが今度はコンパイルが通らなくなって断念。

```tex
\documentclass[12pt, a4paper, report]{jsbook}
\usepackage[dvipdfmx]{graphicx}
\usepackage{wallpaper}

\begin{document}

  \thispagestyle{empty}
  \ThisCenterWallPaper{1}{images/titlepage.png}
  \null
  \cleardoublepage

  % 本文

\end{document}
```

結局、[こちら](#最終的なもの)に落ち着いた。