TeX(LaTeX)のfigure環境で,dpiを考慮した画像幅をポイント指定したい

2023/03/16
TeX(というかLaTeXやLuaTeX等)に画像を挿入するときは,事前にリサイズまで行ったファイルを使用した方が良い(問題が起こりにくい),という話はあるのだが,手間が余計に掛かる*1
なので,figure環境上でなるべく済ませるようにする手順の例を示す.
例とするのは,下の179x178ピクセルのpngファイルである.
OneDrive.png


この画像ファイルを150dpi相当の大きさでTeXへ挿入したい.
ただし,幅指定の単位をポイント(pt)としたい*2

ポイントの定義

1\text{pt} = 1/72 \text{in.}= 0.352 777 7\dots \text{mm}である
この定義によれば,大きさx[\text{pt}]は,\dfrac{x}{72}[\text{in.}]であり,大きさ\xi [\text{in.}](クシー インチ)は72\xi[\text{pt}]である.

dpiの定義

dpiとはdots par inchの略である.1インチあたりのドット数のことで,解像度の指標である.
ドットをピクセル(px)とすればdpiは\text{px/in.}の次元を持つ*3

幅方向のピクセル値がw_{\text{pixels}}の画像を\xi[\text{in.}]の幅で描画することを考える.このときのdpiをD_{\text{dpi}}とすれば,
\begin{gather} D_{\text{dpi}} = \dfrac{w_{\text{pixels}}}{\xi} \label{dpi-define} \end{gather}

幅の決定

(\ref{dpi-define})式をそのまま利用する.画像の幅を求めたいので,\xi[\text{in.}]について解く.
つまり,
\begin{gather} \xi = \dfrac{w_{\text{pixels}}}{D_{\text{dpi}}} \label{width} \end{gather}
ただし,画像の幅の単位はptに変換するので,\xiに72を掛けなければならない.よって,
\begin{gather} 72\xi = \dfrac{w_{\text{pixels}}}{D_{\text{dpi}}}\times 72 \label{width2} \end{gather}
これで,ポイント単位で求めたい印刷幅が算出された.

求めたい印刷幅のポイント値をW_{\text{points}},画像幅のピクセル値をw_{\text{pixels}},希望するdpi値をD_{\text{dpi}}として整理すると下式となる.
\begin{gather} W_{\text{points}} = \dfrac{w_{\text{pixels}}}{D_{\text{dpi}}}\times 72 = \dfrac{72}{D_{\text{dpi}}}w_{\text{pixels}} \end{gather}
例とした画像はw_{\text{pixels}}= 179,希望するdpi値D_{\text{dpi}}=150なので,
\begin{gather} W_{\text{points}} = \dfrac{72}{D_{\text{dpi}}}w_{\text{pixels}} = \dfrac{72}{150}\times 179 = 85.919999 \fallingdotseq 86 \end{gather}
W_{\text{points}}=86[\text{pt}]を指定すれば良い
\begin{figure}[H]
\begin{center}
\includegraphics[width=86pt]{OneDrive.png}
\captionsetup{margin=60pt}	
\caption{デスクトップのタスクバー上で,マウスカーソルが置かれているアイコンをクリックします.}
\label{fig_}
\end{center}
\end{figure}

*1 : 特に表示する画像の大きさを変えたいときに都度画像編集をしたくない.

*2 : 理由は,layoutパッケージ等で使われる単位がptだからである.

*3 : 通常のPC用ディスプレイならば,ドットとピクセルは1対1に対応する.詳細は他を参照のこと.