Warum wird die Änderung der Schriftfamilie nicht wirksam, wenn AtBeginEnvironment{figure} zusammen mit Memoir verwendet wird?

Warum wird die Änderung der Schriftfamilie nicht wirksam, wenn AtBeginEnvironment{figure} zusammen mit Memoir verwendet wird?

Ich versuche, \AtBeginEnvironment{figure}die in den Abbildungen verwendete Schriftfamilie und Schriftgröße anzupassen. Es scheint jedoch keine Wirkung zu haben. Hier ist ein minimales Beispiel:

\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}

Irgendwelche Ideen, was hier passiert?

BEARBEITEN: Ich habe vergessen zu erwähnen, dass ich verwende memoir. Die Lösung in einem anderenFragefunktioniert zum Einstellen der Schriftfamilie, aber nicht der Größe.

Antwort1

Die Memoir-Klasse stellt eigene Hooks für Floats bereit:

\setfloatadjustment{figure}{\sffamily\tiny}

<code>Um es im Allgemeinen am Anfang jedes aufzurufen <floatname>, fügen Sie Ihrer Präambel Folgendes hinzu:

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

Antwort2

Wenn Sie die Klasse nicht verwenden memoir, sollte Folgendes funktionieren:

% 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

Die relativ aufwändige Neudefinition ergibt sich aus der Tatsache, dass die Umgebungen figureund tableoptionale Argumente enthalten können. Die Neudefinition sucht daher nach einer öffnenden eckigen Klammer „[“, um festzustellen, ob ein optionales Argument angegeben ist oder nicht.

verwandte Informationen