Сохранение моего «стандартного выравнивания поплавка» в макросе

Сохранение моего «стандартного выравнивания поплавка» в макросе

При написании нескольких макросов для обертывания сред с плавающей точкой я столкнулся с ошибкой макрорасширения (по крайней мере, я так думаю), когда дело доходит до хранения спецификаторов с плавающей точкой.

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

При компиляции с помощью xetexэто дает мне:

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

Я попытался заставить его работать с помощью стратегии, предложенной в пункте 3.этот ответ, пытаясьпонимать texрасширение. Судя по тому, как я запостил этот вопрос, я потерпел неудачу. Как мне сохранить свой спецификатор float в макросе и использовать его?

решение1

Никогда не следует использовать !регулярно. !означаетигнорировать(заданные пользователем) ограничения на размещение float. Поэтому лучше задать нужные вам ограничения, чем всегда игнорировать ограничения.

Размещение фигур по умолчанию:\fps@figure

Итак, чтобы сделать значение по умолчанию, bвам просто нужно

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

Нет необходимости переопределять среду, в которой находится фигура.

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