در نمونه زیر از بسته زیپرشین یا بسته bidi
استفاده نشده و دقیقا همون مشکل رو نشون میده. این دقیقا اتفاقی نیست که میافته اما شباهت خیلی زیادی وجود داره:
\documentclass{article}
\usepackage{amsmath}
\TeXXeTstate=1
\begin{document}
\hbox{\beginR\vtop{\hsize=\textwidth
\begin{align*}
4
\end{align*}
}\endR}
\end{document}
اتفاقی که در بسته زیپرشین یا بصورت دقیقتر بسته bidi
میافته این هست که برای حروفچینی راست به چپ پاراگرافها در ابتدای هر پاراگراف دستور بدوی \beginR
قرار میگیره. در مورد محیط minipage
بصورت ساده شده این اتفاقی هست که میافته:
\hbox{\beginR\vtop{\hsize=\textwidth
\begin{align*}
4
\end{align*}
}\endR}
و بنابراین به جای اینکه محیط align*
وسط چین باشه راست چین هست.
دو راهحل به ذهن من میرسه. یا قبل از شروع محیط minipage
جهت نوشتار رو چپ به راست و بعدش راست به چپ کنید تا محیط minipageای که داخل \hbox محصور میشه دستورات بدوی \beginR
و \endR نداشته باشه.
\documentclass{article}
\usepackage{amsmath}
\usepackage{xepersian}
\settextfont[Scale=1]{Arial}
\begin{document}
\unsetRTL
\begin{minipage}[t]{\textwidth}
\setRTL
\begin{align*}
4
\end{align*}
\end{minipage}
\end{document}
یا اگر دوست ندارید این کار دستی انجام بشه باید در بسته bidi
این مشکل حل بشه. کد نمونه زیر این راهحل رو نشون میده.
\documentclass{article}
\usepackage{amsmath}
\usepackage{xepersian}
\settextfont[Scale=1]{Arial}
\makeatletter
\bidi@patchcmd\math@cr@@@align\place@tag{%
\place@tag
\else
\place@tag
}{\typeout{Suceeded}}{\typeout{Failed}}
\makeatother
\begin{document}
\begin{minipage}[t]{\textwidth}
\begin{align*}
4
\end{align*}
\end{minipage}
\end{document}