Almacenamiento de mi 'alineación flotante estándar' en una macro

Almacenamiento de mi 'alineación flotante estándar' en una macro

Mientras escribía algunas macros para entornos flotantes, me topé con una falla en la expansión de macros (al menos eso creo) cuando se trata de almacenar especificadores flotantes.

main.tex:

\documentclass{scrartcl}
\usepackage{fontspec}
\usepackage{myfig}

\begin{document}
\section{Dummy section}

%\begin{myfig}[b!]
\begin{myfig}
  Yadda yadda yadda
\end{myfig}

\end{document}

myfig.sty:

\ProvidesPackage{myfig}
\makeatletter
\newcommand{\@std@float@align}{p!}
%\newenvironment{myfig}[1][t!]{
\newenvironment{myfig}[1][\@std@float@align]{
  \begin{figure}[#1]
}{
  \end{figure}
}
\makeatother

Al compilar con xetex, esto me da:

./main.tex:10: LaTeX Error: Unknown float option `\'.

Intenté hacerlo funcionar con la estrategia propuesta en 3. deesta respuesta, tratando deentender texla expansión. A juzgar por haber publicado esta pregunta, fallé. ¿Cómo puedo almacenar mi especificador flotante en una macro y usarlo?

Respuesta1

Nunca debes usarlo !de forma rutinaria. !medioignorarlas restricciones (especificadas por el usuario) sobre la ubicación del flotador. Por lo tanto, es mejor establecer las restricciones que desee en lugar de ignorarlas siempre.

La ubicación predeterminada de la figura es\fps@figure

Entonces, para que el valor predeterminado sea bsolo necesitas

\makeatletter
\renewcommand\fps@figure{b}
\makeatother

No es necesario redefinir el entorno de la figura.

información relacionada