マクロに「標準フロート配置」を保存する

マクロに「標準フロート配置」を保存する

float 環境をラップするマクロをいくつか作成しているときに、float 指定子の格納に関してマクロ展開が失敗する (少なくとも私はそう思います) ことに気付きました。

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

決して日常的に使用しないでください!!無視するフロートの配置に関する (ユーザー指定の) 制約。したがって、制約を常に無視するのではなく、必要な制約を設定することをお勧めします。

デフォルトの図の配置は\fps@figure

デフォルトにするにはb

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

図の環境を再定義する必要はありません。

関連情報