Развернуть макрос во время набора текста с плавающей точкой (не во время определения)

Развернуть макрос во время набора текста с плавающей точкой (не во время определения)

Насколько мне известно, содержимое среды float помещается в поле, когда float определен. Возможно ли обработать пользовательскую команду/макрос, когда float фактически набран, например, чтобы поместить водяной знак на эту конкретную страницу (которая не обязательно является страницей, на которой определен float)?

Нужно ли что-то добавлять в определение среды float или можно использовать какую-то команду внутри ее тела?

решение1

Если вам нужен водяной знак только на странице, где отображается определенный тип плавающего объекта, то вы можете воспользоваться процедурой отправки, используяatbegshiи условие на некоторую контрмагию с механизмом отслеживания счетчика с плавающей точкой:

введите описание изображения здесь

\documentclass{article}
\usepackage{atbegshi,refcount,etoolbox,graphicx,xcolor}
\usepackage{lipsum,afterpage}

\newcounter{floatcntr}
\AtEndEnvironment{figure}{\refstepcounter{floatcntr}\label{floatcntr@\roman{floatcntr}}}
\newcounter{floatsearch}\setcounter{floatsearch}{1}

\AtBeginShipout{%
  \ifnum\value{page}>\getpagerefnumber{floatcntr@\roman{floatsearch}}
    \stepcounter{floatsearch}% In case there are multiple (2) floats on the same page
  \fi
  \ifnum\value{page}=\getpagerefnumber{floatcntr@\roman{floatsearch}}
    \AtBeginShipoutUpperLeft{%
      \parbox[t]{\pdfpagewidth}{\centering\bfseries\sffamily%
        \vspace{.4\pdfpageheight}%
        \resizebox{.7\pdfpagewidth}{!}{\textcolor{red!80}{DRAFT}}}
    }%
    \stepcounter{floatsearch}
  \fi
}

\begin{document}

\lipsum[1-3]

\begin{figure}[ht]
  \centering\includegraphics[width=.6\linewidth]{example-image}
  \caption{A figure}
\end{figure}

\lipsum[4-12]

\afterpage{\clearpage}% Just to flush the float
\begin{figure}[p]
  \centering\includegraphics[width=.6\linewidth]{example-image}
  \caption{A figure}
\end{figure}

\lipsum[13-25]

\end{document}

Вышеуказанный MWE создает счетчик floatcntr, который шагает (и ссылается) в конце каждого figure. Затем ссылка сравнивается с номером страницы при отправке, и при совпадении отображается некоторый фоновый контент.

Предостережение: Приведенная выше настройка предполагает не более двух figures на страницу. Если их больше (что крайне маловероятно), могут потребоваться некоторые изменения.

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