TeX (LaTeX?) はどのようにして画像をページの中央に配置するのでしょうか?

TeX (LaTeX?) はどのようにして画像をページの中央に配置するのでしょうか?

ページからはみ出した画像を中央揃えにしようとすると、TeX/LaTeX が諦めて画像を左揃えにしてしまうようです。なぜでしょうか?

答え1

Tex が動作する基本的なメカニズムは、ボックスとグルーと呼ばれるメカニズムです。センタリングは基本的な操作ではありません。

接着剤は、自然な長さと、伸びたり縮んだりできる別々の長さを持つ白いスペースです。

LaTeXでは、ほとんどの中央揃え(例えば文字X)は、どちらかの側に接着剤を置くことによって行われます。\hfilこれは、0pt plus 1fil minus 0pt

だから

\hbox to \textwidth{%
\hspace{0pt plus 1fil}X\hspace{0pt plus 1fil}%
}

要求されたボックスは幅が\textwidth広く、Xそれよりも小さいため、2 つの接着要素が均等に拡張されてギャップが埋められます。

ただし、どちらの側も接着剤の最小サイズは決まっているため、それよりも幅の広いものに0pt交換すると箱がいっぱいになり(右側がはみ出てしまう)、注意してください。X\textwidth

他の選択肢も考えられます。例えば、プレーンTexマクロは\centerline上記と似ていますが、\hss無限伸長を持つを使用します。そして縮小値。これにより、テキストがテキスト幅よりも広くなり、グルーは自動的に負の量を想定することで補正します。これにより、常に中央に配置されますが、テキストの境界 (またはページの境界) を超えたという警告は表示されません。

答え2

デイビッドの答えは、中央揃えの仕組みをうまく説明しています。 よりも幅の広い画像を中央揃えにするオプションを知りたい場合は\textwidth、ボックスを使用して TeX を騙すという方法があります。

\documentclass[]{article} 
\usepackage{graphicx} 
\usepackage{lipsum} 
\usepackage[margin=3cm,showframe]{geometry} 

\begin{document}

\lipsum[4]
\noindent\makebox[\linewidth]{\includegraphics[scale = 1.3]{example-image-a} }
\lipsum[4]

\end{document}

ここに画像の説明を入力してください

もちろん、最善の解決策は、画像の幅が以下を超えないように制御することです\textwidth

\includegraphics[width=\textwidth]{example-image}

関連情報