همون کد با کمی تغییر کار میکنه. علت تغییر در رفتار این هست که چند سال پیش مکان صفحات فرد و زوج رو در نوشتارهای راست به چپ برعکس نوشتارهای چپ به راست در بسته bidi
کردم که تغییر منطقی بود.
\makeatletter
\AtBeginDocument{%
\bidi@patchcmd{\floatc@bidituftefloatplain}{%
\smash{\hspace{\@bidituftefloat@caption@fill}\usebox{\@bidituftefloat@caption@box}}%
}{%
\@bidituftefloat@checkoddpage%
\ifthenelse{\boolean{@bidituftefloat@odd@page}}%
{\GlobalSetBoolean{@bidituftefloat@float@recto}{true}\@bidituftefloat@float@debug{Detected page: [recto/odd]}}%
{\GlobalSetBoolean{@bidituftefloat@float@recto}{false}\@bidituftefloat@float@debug{Detected page: [verso/even]}}%
\ifthenelse{\NOT\boolean{@bidituftefloat@symmetric}\OR\boolean{@bidituftefloat@float@recto}}{%
% asymmetric or page is odd, so caption is on the right
\smash{\rlap{\hspace{\@bidituftefloat@caption@fill}\usebox{\@bidituftefloat@caption@box}}}%
\@bidituftefloat@float@debug{Caption position: [right]}%
}{% symmetric pages and page is even, so caption is on the left
\smash{\hspace{-\@bidituftefloat@overhang}\usebox{\@bidituftefloat@caption@box}}%
\@bidituftefloat@float@debug{Caption position: [left]}%
}%
}{}{}
}
\makeatother