
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
図の環境を再定義する必要はありません。