سلام ممنون! یکم تو کدتون فضولی کردم. فهمیدم اگه کسی میخواست بدون دست زدن به bidi مشکل رو حل کنه کافی بود کد زیر رو به برنامهاش اضافه کنه: \makeatletter\renewcommand\floatc@plain[2]{\setbox\@tempboxa\hbox{{\@fs@cfont #1:} #2}% \ifdim\wd\@tempboxa>\hsize {\@fs@cfont #1:} #2\par \else\hbox to\hsize{\if@RTL\beginR\fi\hfil\box\@tempboxa\hfil\if@RTL\endR\fi}\fi}\makeatother
که البته کد اصلی بسته float به صورت زیره: \newcommand\floatc@plain[2]{\setbox\@tempboxa\hbox{{\@fs@cfont #1:} #2}% \ifdim\wd\@tempboxa>\hsize {\@fs@cfont #1:} #2\par \else\hbox to\hsize{\hfil\box\@tempboxa\hfil}\fi}
پ.ن.: من چون این پروژه رو دوست دارم، دوست دارم خوب ازش سر در بیارم، شاید بلکه یه روزی بتونم کمکی بکنم. امیدوارم از فضولیم تو کدتون ناراحت نشین!
خوب پس باید به دلیلش هم علاقهمند باشی. دلیلش اینه که تک توی فضای عمودی (vmode) هستش و بنابراین \caption چپ به راست چیده میشود. یک راه درست کردن دیگش این بود که از فضای عمودی خارج بشیم که در تغییر قبلیش اگر نگاه کردی بودی من از \leavevmode استفاده کردم بودم.
\long\def\float@caption#1[#2]#3{\addcontentsline{\@nameuse{ext@#1}}{#1}% {\protect\numberline{\@nameuse{the#1}}{\ignorespaces #2}} \global\setbox\@floatcapt\vbox\bgroup\@parboxrestore\leavevmode \normalsize\@fs@capt{\@nameuse{fnum@#1}}{\ignorespaces #3}% \@ifnextchar[{\float@ccon}{\egroup}}
یک راهحل دیگه استفاده از \hboxR به جای این راهحلی که شما گذاشتید یعنی:
\renewcommand\floatc@plain[2]{\setbox\@tempboxa\hboxR{{\@fs@cfont #1:} #2}% \ifdim\wd\@tempboxa>\hsize {\@fs@cfont #1:} #2\par \else\hbox to\hsize{\hfil\box\@tempboxa\hfil}\fi}
فقط لطفاً سعی کنید خودتون این کدها را دستی وارد نکنید و حتماً بستهها را از bitbucket دریافت کنید و استفاده کنید تا مشکلی پیش نیاد.