将我的“标准浮点对齐”存储在宏中

将我的“标准浮点对齐”存储在宏中

在编写一些宏来包装浮点环境时,我在存储浮点说明符时偶然发现宏扩展失败(至少我是这样认为的)。

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

不需要重新定义图形环境。

相关内容