من مشکلی نمیبینم و فاصلهها یکسان هستند. اگر میخواهی فاصلهها را بین متن فارسی و انگلیسی مقایسه کنی باید شماره فرمول رو برعکس کنی. یعنی چی؟ یعنی اگر در فارسی، شماره فرمول سمت راست قرار میگیره، در انگلیسی شماره فرمول رو سمت چپ قرار بدی و اگر در فارسی شماره فرمول سمت راست قرار میگیره در انگلیسی شماره فرمول رو در سمت چپ قرار بدی. همچنین حتماً در دو حالت انگلیسی و فارسی از یک قلم استفاده کن وگرنه تستی که میکنی بیمعناست چون کاراکترها در قلمهای فارسی و لاتین ارتفاع و عمق متفاوتی دارند و بنابراین فاصله متفاوتی رو تولید میکنند. نکته آخر اینکه موقع اندازه گرفتن فاصله یا هر چیز دیگری هرگز به چشمهایت اعتماد نکن چون هر قدر هم که دقت کنی، چشم خطای خودش رو داره. به همین خاطر هنگام اندازه گرفتن حتماً از بسته bidipagegrid
استفاده کن. بنابراین اگر فارسیت اینجوریه:
\documentclass{article}
\usepackage{amsmath}
%\usepackage{fontspec}
%\setmainfont{Arial}
\usepackage{bidipagegrid}
\usepackage{xepersian}
\settextfont{Arial}
\begin{document}
\noindent
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\[===========\]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\begin{align}
- - - - - - - -
\end{align}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\end{document}
انگلیسیت باید اینجوری باشه:
\documentclass{article}
\usepackage[leqno]{amsmath}
\usepackage{fontspec}
\setmainfont{Arial}
\usepackage[direction=LTR]{bidipagegrid}
%\usepackage{xepersian}
%\settextfont{Arial}
\begin{document}
\noindent
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\[===========\]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\begin{align}
- - - - - - - -
\end{align}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\end{document}
و همونطور که میبینی فاصلهها در دو حالت دقیقاً یکی است.
اگر کتاب TeXBook رو بخونی میبینی که خود Knuth گفته زمانی که از \lqno (برای قرار دادن شماره فرمول در سمت چپ) استفاده میکنید فاصله بیشتری نسبت به \eqno (برای قرار دادن شماره فرمول در سمت راست) قرار میگیرد. این موضوع در صفحه ۱۸۷ کتاب اومده. متن دقیقش اینه:
Nowadays people are using right-hand equation numbers more and more,
because a display most often comes at the end of a sentence or clause, and
the right-hand convention keeps the number from intruding into the clause.
Furthermore, it's often possible to save space when a displayed equation
follows a short text line, since less space is needed above the display;
such savings are not possible with |\leqno|, because there's no room for
overlap. For example, there is less space above display~(15) than there is
above~(16) in our illustrations of\/ |\eqno| and |\leqno|, although the
formulas and text are otherwise identical.
شماره فرمول ۱۵ در سمت راست و شماره فرمول ۱۶ در سمت چپ در این صفحه هست.
در متون انگلیسی، متن از سمت چپ شروع میشود و اگر شماره فرمول در سمت چپ باشد، فاصله بیشتری وجود دارد در حالی که اگر شماره فرمول در سمت راست باشد، فاصله کمتری وجود دارد. حالا این را با حالت فارسی مقایسه کن. زمانی که فارسی مینویسی، از سمت راست مینویسی بنابراین شماره فرمول در سمت راست فاصله بیشتری باید تولید کند و شماره فرمول در سمت چپ باید فاصله کمتری تولید کند که دقیقاً همینطور هست و رفتاری است کاملاً طبیعی.
توجه کن که بیشتر قلمهای فارسی موجود باگهای زیادی دارند. برای توضیح و روشن شدن موضوع، کل فرمول را داخل یک \vbox
قرار بده و ارتفاع این \vbox
رو حساب کن:
\setbox0\vbox{%
...}
\the\ht0
برای قلم پیشفرض تک یعنی قلم Computer Modern در هر دو حالت فارسی و انگلیسی، ارتفاع \vbox
یکی است (92.30554pt
). توجه کن که وقتی میخواهی قلم Computer Modern رو امتحان کنی، از بستههای xepersian
و fontspec
استفاده نکن. در حالت فارسی به جای استفاده از بسته xepersian
از بسته bidi
با گزینه RTLdocument
استفاده کن.
برای قلم Arial، ارتفاع \vbox
در دو حالت فارسی یکی است (91.03223pt
).
جالب است که برای قلم XB Niloofar، ارتفاغ \vbox
برای حالت انگلیسی 90.16797pt
و برای حالت فارسی 89.35742pt
است که به وضوح باگ قلم را نشان میدهد. اگر باور نمیکنی، خروجی:
\documentclass{article}
\usepackage{amsmath}
\usepackage{fontspec}
\setmainfont{XB Niloofar}
\begin{document}
\setbox0\vbox{%
...}
\the\ht0
\end{document}
متأسفانه وقتی من کد کپی و پیست میکنم، صفحه یخ میزند بنابراین کد بالا را با دست نوشتم و کپی و پیست نکردم. منظور از ...
در کد بالا همه متن و فرمولهایت است. با کد بالا ارتفاع \vbox
چقدر است؟ حالا یک تغییر خیلی کوچک در این فایل تک انجام بده و اون اینکه گزینه Script=Arabic
را به دستور \setmainfont
اضافه کن. حالا ارتفاع \vbox
چقدر است؟ آیا میتوانی تفاوت را ببینی؟ همانطور که میبینی شما حتی از بسته bidi
یا xepersian
هم در این نمونه آخر استفاده نکردهای.