Почему изменение семейства шрифтов не вступает в силу при использовании AtBeginEnvironment{figure} вместе с memoir?

Почему изменение семейства шрифтов не вступает в силу при использовании AtBeginEnvironment{figure} вместе с memoir?

Я пытаюсь использовать \AtBeginEnvironment{figure}для настройки семейства шрифтов и размера шрифта, используемых в рисунках. Однако, похоже, это не имеет никакого эффекта. Вот минимальный пример:

\documentclass{memoir}
\usepackage{etoolbox}

\makeatletter
\AtBeginEnvironment{figure}{%
  \def\@floatboxreset{\reset@font\sffamily\tiny\@setminipage}%
  \patchcmd{\@xfloat}{\normalsize}{\selectfont}{}{}
}
\makeatother

\begin{document}

\begin{figure}
  % \tiny % this works
  test
\end{figure}

\end{document}

Есть идеи, что здесь происходит?

РЕДАКТИРОВАТЬ: Забыл упомянуть, что я использую memoir. Решение найдено в другомвопросработает для настройки семейства шрифтов, но не размера.

решение1

Класс memoir предоставляет собственные хуки для поплавков:

\setfloatadjustment{figure}{\sffamily\tiny}

В общем случае, чтобы вызывать <code>в начале каждого <floatname>, добавьте в преамбулу следующее:

\setfloatadjustment{<floatname>}{<code>}

решение2

Если вы не используете memoirкласс, то следующее должно сработать:

% Redefine figure environment so that all figures are centered and use tiny sans-serif font
\makeatletter
\let\figureorig\figure
\def\figure@i[#1]{\figureorig[#1]\centering\sffamily\tiny}  % with optional argument
\def\figure@ii{\figureorig\centering\sffamily\tiny}  % without optional argument
\def\figure{\@ifnextchar[\figure@i \figure@ii}  % Redefine depending on presence of [
\makeatother

% Redefine table environment so that all tables are set in tiny sans-serif font
\makeatletter
\let\tableorig\table
\def\table@i[#1]{\tableorig[#1]\sffamily\tiny}  % with optional argument
\def\table@ii{\tableorig\sffamily\tiny}  % without optional argument
\def\table{\@ifnextchar[\table@i \table@ii}  % Redefine depending on presence of [
\makeatother

Относительно сложное переопределение является результатом того, что окружения figureи tableмогут содержать необязательные аргументы. Таким образом, переопределение ищет открывающую квадратную скобку «[», чтобы определить, предоставлен ли необязательный аргумент или нет.

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