
在編寫一些巨集來環繞浮點環境時,我偶然發現在儲存浮點說明符時宏擴展失敗(至少我是這麼認為)。
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
無需重新定義圖形環境。