pLaTeX, upLaTeX どちらでもコンパイルできるTeXファイルを作る

# TL;DR
`ifptex`を使う
```tex:paper.tex
\input ifptex.sty
\ifuptex
\documentclass[uplatex]{jsarticle}
\else
\documentclass{jsarticle}
\fi
```

# 状況
「自分はuplatex使ってるけど、今はplatexを使っていて、texファイルの共有ができない……」なんてこと、ありますよね！ないですか？僕は今まさにその状況です。~~助けて~~

使っているエンジンを判別して、if文でdocumentclassを変更できれば……と思っていたところ、最高のpackageがありました。

詳細はpackageの公式READMEを参考にしてください
[ifptex/README-ja - GitHub](https://github.com/zr-tex8r/ifptex/blob/master/README-ja.md)

以下は自分がハマったところをさっと解説します

# usepackageはdocumentclassの前に持ってこれない
意気揚々と使う。
```tex: paper.tex
\usepackage{ifptex}
\ifuptex
\documentclass[uplatex]{jsarticle}
\else
\documentclass{jsarticle}
\fi

\begin{document}
hogehoge
\end{document}
```
実行。
```shell
> uplatex paper.tex
This is e-upTeX, Version 3.141592653-p4.0.0-u1.28-220214-2.6 (utf8.uptex) (TeX Live 2022) (preloaded format=uplatex)
 restricted \write18 enabled.
entering extended mode
(./paper.tex
pLaTeX2e <2021-11-15u04> (based on LaTeX2e <2021-11-15> patch level 1)
L3 programming layer <2022-05-04>

! LaTeX Error: \usepackage before \documentclass.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...

l.1 \usepackage{
                ifptex}
?
```
あ。

 `! LaTeX Error: \usepackage before \documentclass.`らしく、`\documentclass`より前に`\usepackage`は使えないらしい。
どうにかして回避する方法はないか……と考えたが、公式にある通り`\input iptex.sty`でもパッケージが使えるのでそっちの方向で

```tex: paper.tex
\input ifptex.sty
\ifuptex
\documentclass[uplatex]{jsarticle}
\else
\documentclass{jsarticle}
\fi

\begin{document}
hogehoge
\end{document}
```
実行
```shell
> uplatex paper.tex
This is e-upTeX, Version 3.141592653-p4.0.0-u1.28-220214-2.6 (utf8.uptex) (TeX Live 2022) (preloaded format=uplatex)
 restricted \write18 enabled.
entering extended mode
(./paper.tex
pLaTeX2e <2021-11-15u04> (based on LaTeX2e <2021-11-15> patch level 1)
L3 programming layer <2022-05-04>
(/usr/local/texlive/2022/texmf-dist/tex/generic/ifptex/ifptex.sty

LaTeX Warning: You have requested package `',
               but the package provides `ifptex'.

(/usr/local/texlive/2022/texmf-dist/tex/generic/iftex/iftex.sty))
(/usr/local/texlive/2022/texmf-dist/tex/platex/jsclasses/jsarticle.cls
Document Class: jsarticle 2021/06/28 jsclasses (okumura, texjporg)
(/usr/local/texlive/2022/texmf-dist/tex/platex/jsclasses/jslogo.sty))
(/usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-dvips.def)
No file paper.aux.
[1] (./paper.aux) )
Output written on paper.dvi (1 page, 472 bytes).
Transcript written on paper.log.
```
```shell
> platex paper.tex
This is e-pTeX, Version 3.141592653-p4.0.0-220214-2.6 (utf8.euc) (TeX Live 2022) (preloaded format=platex)
 restricted \write18 enabled.
entering extended mode
(./paper.tex
pLaTeX2e <2021-11-15> (based on LaTeX2e <2021-11-15> patch level 1)
L3 programming layer <2022-05-04>
(/usr/local/texlive/2022/texmf-dist/tex/generic/ifptex/ifptex.sty

LaTeX Warning: You have requested package `',
               but the package provides `ifptex'.

(/usr/local/texlive/2022/texmf-dist/tex/generic/iftex/iftex.sty))
(/usr/local/texlive/2022/texmf-dist/tex/platex/jsclasses/jsarticle.cls
Document Class: jsarticle 2021/06/28 jsclasses (okumura, texjporg)
(/usr/local/texlive/2022/texmf-dist/tex/platex/jsclasses/jslogo.sty))
(/usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-dvips.def)
(./paper.aux) [1] (./paper.aux) )
Output written on paper.dvi (1 page, 460 bytes).
Transcript written on paper.log.
```
確かにpLaTeXでもupLaTeXでも実行できた。Warningが出ているが……