
При написании нескольких макросов для обертывания сред с плавающей точкой я столкнулся с ошибкой макрорасширения (по крайней мере, я так думаю), когда дело доходит до хранения спецификаторов с плавающей точкой.
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
Никогда не следует использовать !
регулярно. !
означаетигнорировать(заданные пользователем) ограничения на размещение float. Поэтому лучше задать нужные вам ограничения, чем всегда игнорировать ограничения.
Размещение фигур по умолчанию:\fps@figure
Итак, чтобы сделать значение по умолчанию, b
вам просто нужно
\makeatletter
\renewcommand\fps@figure{b}
\makeatother
Нет необходимости переопределять среду, в которой находится фигура.