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환경이 선택적 인수를 전달할 수 있다는 사실로 인해 발생합니다 . 따라서 재정의에서는 선택적 인수가 제공되는지 여부를 결정하기 위해 여는 대괄호 "["를 찾습니다.

관련 정보