既存のpdfの上にlatexを書く

## TL;DR

latexでこういうpdfを書きたい、大学のレポートにありがちなpdfの回答欄を埋めるタイプの課題をlatexで提出したい

![無題-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118083/11780d62-591a-39a0-1935-358e54e88ba0.png)

## 環境

Lualatexを使っている、このテクニックは少量の修正で他の環境でも使えるはず

## 最終形

Report.pdf（任意のpdf）と以下のmain.tex, page1.texを同じディレクトリに置けば良い

```latex:main.tex
\documentclass[titlepage]{ltjsarticle}
% 大事なのは以下の二つ
\usepackage{pdfpages}%pdf挿入
\usepackage[absolute]{textpos}

% 本文に使ったパッケージ
\usepackage{amsmath,amssymb,bm}%数学と太字ベクトル

\begin{document}
% 外部ファイルReport.pdfを挿入し、pagecommandでpdf上に文章を続ける
\includepdf[pages=1,pagecommand={\input{"page1.tex"}}]{"Report.pdf"} %1ページ目
\includepdf[pages=2,pagecommand={\input{"page2.tex"}}]{"Report.pdf"} %2ページ目
\end{document}
```

```latex:page1.tex

% 任意位置に文章を挿入する、氏名欄の記入に便利
\begin{textblock}{10}[0,0](6,1.7)
Myoji Namae
\end{textblock}

% 既存のpdfの下まで空白を置く
\vspace*{0.2\textheight}

% 以下本文
\begin{align*}
\bm{T}:\nabla\bm{u}&=T_{ij}\partial_l u_k (\bm{e}_{i}\otimes\bm{e}_{j}):(\bm{e}_{k}\otimes\bm{e}_{l})=T_{ij}\partial_l u_k \delta_{ik}\delta_{jl}=T_{ij} \partial_j u_i
\\
T_{ij} \partial_j u_i&=\frac{1}{2}(T_{ij} \partial_j u_i + T_{ji} \partial_i u_j)
&\because\quad&\textmd{swap i,j}
\\
&=\frac{1}{2}(T_{ij} \partial_j u_i + T_{ij} \partial_i u_j)
=T_{ij} \frac{1}{2}(\partial_j u_i + \partial_i u_j)
& \because&\quad T_{ij}=T_{ji}\quad\frac{1}{2}(\partial_j u_i + \partial_i u_j)=D_{ij}
\\
&=T_{ij} D_{ij}
\\
\therefore \bm{T}:\nabla\bm{u}&=\bm{T}:\bm{D}
\\
\bm{T}:\bm{D}&=T_{ij} D_{ij}
\\
&=(-p\delta_{ij}+2\mu(D_{ij}-\frac{1}{3}\delta_{ij} \partial_k u_k)) D_{ij}
\\
&=-p\delta_{ij}D_{ij}+2\mu(D_{ij} D_{ij}-\frac{1}{3}\delta_{ij} D_{ij} \partial_k u_k)
\\
&=-p\nabla\cdot \bm{u} +2\mu(\bm{D}:\bm{D}-\frac{1}{3}(\nabla\cdot u)^2)
&\because\delta_{ij}D_{ij}&=D_{ii}=\frac{1}{2}(\partial_i u_i+\partial_i u_i)=\partial_k u_k=\nabla\cdot \bm{u}
\end{align*}
by the way % ところで
\begin{align*}
\delta_{ij}(D_{ij}-\frac{1}{3}D_{kk}\delta_{ij})
&=\delta_{ij}D_{ij}-\frac{\delta_{ij}\delta{ij}}{3}D_{kk}
\\
&=D_{kk}-D_{kk}=0
&\because\delta_{ij}\delta_{ij}&=D_S=3(i,j=1,1\textmd{or}2,2\textmd{or}3,3)\quad \delta_{ij}D_{ij}=D_{kk}
\end{align*}
```

## 解説

pdfpagesパッケージの\includepdfコマンドでtexに任意のpdfを挿入できますが、その際にpagecommandオプションで挿入したpdfの上に任意の文章を書けます。
親のtexに`\usepackage{pdfpages}`を加え下記のように実現できます。

```latex:pdfを読み込んで上からHello World と書き込む例.tex
\includepdf[pages=1,pagecommand={\section{Hello World}}]{"Report.pdf"} %1ページ目
```

長い文章を書きこみたいのでpagecommandオプションと外部texを読み込む\input{"外部.tex"}コマンドを併用し外部texの内容を埋め込みます。


```latex:pdfを読み込んで上からinner.texの内容を書き込む例.tex
\includepdf[pages=2,pagecommand={\input{"inner.tex"}}]{"Report.pdf"} %1ページ目
```

inner.texについて、多くの場合既存pdf上で新たに文章を書き込む位置を調整する必要があります。

```latex:inner.tex
% 上に空白を置き、文章開始位置を下げる例
% ページの縦幅の0.2倍分の空白を入れる
\vspace*{0.2\textheight}
本文はここから始まる
```

inner.texについて、氏名記入欄など任員の位置に文章を挿入したい場合も多いと思います。
親のtexに`\usepackage[absolute]{textpos}`を加え下記のように実現できます。

```latex:inner.tex
% 絶対座標に文章を挿入する、氏名欄の記入に便利
% 10はテキストボックスの幅、[0,0]は原点をページ左上に設定している、(6,17)は座標
\begin{textblock}{10}[0,0](6,1.7)
Myoji Namae
\end{textblock}
本文はここから始まる
```

ちなみに`\begin{textblock}{10}[0,0](6,1.7)`の単位長さは
水平方向が\TPHorizModule
垂直方向が\TPVertModule
であり、これらは\setlengthコマンドで任意に設定可能なもののデフォルトではそれぞれ
紙面幅の1/16、
紙面高さの1/16
となっている

[参考:Package textpos - CTAN](https://www.ctan.org/pkg/textpos)