Я хотел бы изменить параметры float по умолчанию для моих фигур, так что мне нужно было бы настроить только один параметр, чтобы изменить поведение всех фигур в документе. На моем предыдущем компьютере (Ubuntu 14.04) я делал что-то вроде этого:
\documentclass{article}
\newcommand{\defaultplacement}{htb}
\begin{document}
\begin{figure}[\defaultplacement]
\caption{Example}
\end{figure}
\end{document}
Сейчас я пытаюсь выполнить сборку на Ubuntu 16.04 и получаю следующую ошибку:
./figures/ch1/coordinate_system.tex:1: LaTeX Error: Unknown float option `\'.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.1 \begin{figure}[\defaultplacement]
Кажется, что раньше LaTeX заменял \defaultplacement
его значением до обработки, но теперь он обрабатывает макрос на месте. Я предполагаю, что мое первоначальное решение было немного хаком, и что есть лучший способ сбросить размещение по умолчанию figure
(и table
?), который я просто не смог найти.
решение1
LaTeX использует содержимое макроса \fps@<float>
в качестве параметров по умолчанию для типа float <float>
. Его можно переопределить, например, для figure
:
\makeatletter
\renewcommand*{\fps@figure}{htb}
\makeatother
Затем применяются параметры макроса, если float используется без необязательного аргумента:
\begin{figure}
...
\end{figure}
решение2
Хайко уже показал правильное заявление, но чтобы ответить
Похоже, что раньше LaTeX заменял
\defaultplacement
его значением до обработки, но теперь он обрабатывает макрос на месте.
Нет. Раньше неизвестные персонажи молча игнорировались, поэтому
[\defaultplacement]
был таким же как
[\ d e f a u l
t p
l a c e m e n t]
что после игнорирования неизвестных и дублирующихся опций было таким же, как
[tp]
Кстати, вы уверены, что хотите значение по умолчанию htb
?
Запрет p
(плавающих страниц) значительно увеличивает вероятность того, что все плавающие элементы окажутся в конце документа.