答案1
显然这不是一个完整的解决方案,但它应该可以帮助你入门。顺便说一句,我从这里。请注意,您不能\marginpar
在浮点数内部使用,但您可以简单地与边距重叠。
\documentclass{book}
\usepackage{xcolor}
\usepackage{blindtext}% MWE only
\setlength{\oddsidemargin}{\evensidemargin}
\reversemarginpar
\csname @mparswitchfalse\endcsname
\newsavebox{\threepartbox}
\newenvironment{threepartfigure}[2][\empty]{% #1 = short caption (optional), #2 = caption (with \label)
\long\def\longcap{#2}%
\def\shortcap{#1}%
\ifx\empty#1\relax
\let\shortcap=\longcap
\fi
\begin{lrbox}{\threepartbox}}% must be an \hbox, not a \vbox
{\end{lrbox}%
\refstepcounter{figure}%
\addcontentsline{lof}{figure}{\string\numberline{\thefigure}\shortcap}%
\leavevmode\llap{\textcolor{red}{\figurename~\thefigure}\hspace{\marginparsep}}%
\parbox[t]{\dimexpr \textwidth-\wd\threepartbox-\columnsep}{\small\bfseries\sffamily\longcap}%
\hfill\raisebox{\dimexpr \ht\strutbox-\height}{\usebox\threepartbox}}
\begin{document}
\begin{figure}[t]
\begin{threepartfigure}{\blindtext}
\rule{2in}{1in}
\end{threepartfigure}
\end{figure}
\blindtext\marginpar{marginpar test}
\end{document}