將我的“標準浮動對齊”儲存在巨集中

將我的“標準浮動對齊”儲存在巨集中

在編寫一些巨集來環繞浮點環境時,我偶然發現在儲存浮點說明符時宏擴展失敗(至少我是這麼認為)。

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

無需重新定義圖形環境。

相關內容