Я упускаю что-то очевидное или это \captionof
не должно работать в \makebox
? Я пробовал \protect
, \MakeRobustCommand
, среди прочего.
\documentclass{article}
\usepackage{capt-of}
\begin{document}
\makebox{\captionof{figure}{X}}
\end{document}
Я получаю эту ошибку:
! Missing \endgroup inserted.
<inserted text>
\endgroup
l.4 \makebox{\captionof{figure}{X}}
решение1
\makebox
предоставляет горизонтальный блок для контента и поэтому испытывает трудности с вертикальным контентом. В частности, \captionof
в конечном итоге вызывает \@makecaption
установку фактического заголовка. Это начинается и заканчивается вертикальными пропусками, вставленными через \vskip \abovecaptionskip
и \vskip \belowcaptionskip
. \vskip
s внутри \makebox
вызывает проблему:
\hrulefill
\mbox{\vspace{10pt}}% Acceptable...
\hrulefill
\mbox{\vskip 10pt}% Problematic...
\hrulefill
Приведенный выше фрагмент кода демонстрирует фоновую работу, выполняемую \vspace
для обеспечения пропуска невертикального режима.
С другой стороны, \parbox
(и minipage
, скажем) предоставляют возможность включить горизонтальныеиВертикальный контент. Так что, если вы хотите разместить его \captionof
в коробке, поместите его в коробку, которая может управлять его контентом, например \parbox
.