Визуальный индикатор слишком высокой высоты поплавка

Визуальный индикатор слишком высокой высоты поплавка

В черновом режиме LaTeX печатает черный маркер, если текст не может быть перенесен и он выходит за пределы поля (переполненный hbox). Возможно ли иметь аналогичный визуальный индикатор, если float слишком высок для страницы и выходит за область нижнего колонтитула?

решение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помечает макет страницы рамками, если он использует с опцией showframe. Если geometryон не использует иным образом, то опция passуведомляет geometryне трогать параметры макета:

\usepackage[pass, showframe]{geometry}

Связанный контент