在编写一些宏来包装浮点环境时,我在存储浮点说明符时偶然发现宏扩展失败(至少我是这样认为的)。
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
扩展从我发布这个问题来看,我失败了。我如何将浮点说明符存储在宏中并使用它?
答案1
你不应该!
经常使用。!
意思是忽略浮动位置的(用户指定的)约束。因此,最好设置您想要的约束,而不是总是忽略约束。
默认图形位置是\fps@figure
因此,要使默认值变为,b
你只需要
\makeatletter
\renewcommand\fps@figure{b}
\makeatother
不需要重新定义图形环境。