Armazenando meu 'alinhamento flutuante padrão' em uma macro

Armazenando meu 'alinhamento flutuante padrão' em uma macro

Ao escrever algumas macros para envolver ambientes flutuantes, me deparei com uma falha na expansão de macros (pelo menos acho que sim) quando se trata de armazenar especificadores flutuantes.

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

Ao compilar com xetex, isso me dá:

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

Tentei fazê-lo funcionar com a estratégia proposta em 3. deesta resposta, tentandoentenda texa expansão. A julgar pela postagem desta pergunta, falhei. Como posso armazenar meu especificador float em uma macro e usá-lo?

Responder1

Você nunca deve usar !rotineiramente. !significaignoraras restrições (especificadas pelo usuário) no posicionamento do float. Portanto, é melhor definir as restrições desejadas, em vez de sempre ignorá-las.

O posicionamento padrão da figura é\fps@figure

Então, para tornar o padrão, bvocê só precisa

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

Não há necessidade de redefinir o ambiente da figura.

informação relacionada