フロートが高すぎる場合の視覚的なインジケーター

フロートが高すぎる場合の視覚的なインジケーター

ドラフト モードでは、テキストを折り返すことができず、余白にまで拡張した場合 (hbox がいっぱいの場合)、LaTeX は黒いマーカーを印刷します。フロートがページに対して高すぎてフッター領域にまで拡張した場合に、同様の視覚的なインジケーターを表示することは可能ですか?

答え1

LaTeX はログに警告を出力しますが、同時に何かを印刷することもできます。

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

\documentclass{article}

\usepackage{color}
\makeatletter


\def \@largefloatcheck{%
  \ifdim \ht\@currbox>\textheight
    \@tempdima -\textheight
    \advance \@tempdima \ht\@currbox
    \@latex@warning {Float too large for page by \the\@tempdima}%
    \global\setbox\@currbox\hbox{%
      \box\@currbox
      {\color{red}\smash{\llap{FLOAT TOO BIG}}\vrule width 5pt}}%
    \ht\@currbox \textheight
  \fi
}

\makeatother
\begin{document}


\begin{figure}

\rule{2cm}{19cm}
\caption{a figure}
\end{figure}

\end{document}

ここで追加され\smashているのは、元のコードが一部のフォントでループする可能性があるというコメントで提起された問題を修正するためです。これなしでは\smash、大文字のテキストにFLOAT TOO BIGは深さがないものと想定していましたが、一部のフォントのフォント メトリックでは、大文字にゼロ以外の深さが与えられます。

答え2

オーバーフルルールは水平ボックスに対してのみ機能します。

本文領域の周囲にボックスがある場合、フッター領域への違反も簡単に確認できます。パッケージは、geometryオプション とともに使用されている場合、ページ レイアウトをボックスでマークしますshowframegeometryそうでない場合、オプションはレイアウト パラメータに触れないようにpass通知します。geometry

\usepackage[pass, showframe]{geometry}

関連情報