سلام دوستان،
من با LaTeX و XeTeX کار میکنم، ولی کاربر حرفهای اونها نیستم. من الان دارم با استفاده از Doxygen مستندات یک محصول نرمافزاری رو آماده میکنم و قصد دارم که از خروجی LaTeX این ابزار برای تولید قالب PDF برای مستندات نرمافزار استفاده کنم. تقریباً به نتایج دلخواه رسیدم؛ فقط مشکلی هست که میخوام از دوستان راهنمایی بگیرم.
متن مستندات نرمافزار به پارسی نوشته شده، به عبارت دیگه، زبون اصلی مستندات، پارسی هست. اما توی پارسی، عبارتها و جملات انگلیسی هم هست. من تونستم با استفاده از بستهی ucharclasses بدون نیاز به استفاده از markup خاصی، کار تشخیص خودکار متن پارسی و انگلیسی و استفاده از قلم مناسب متناظر با متن رو انجام بدم. مشکلی که الان دارم این هست که در حالتی که متن انگلیسی داخل متن پارسی نوشته شده باشه، قابلیت چپبهراست متن انگلیسی از بین میره و متن انگلیسی بهشکل راستبهچپ نوشته میشه. بهعنوان مثال جملهی «باید از روش Windows Shared Folder استفاده کرد» بهصورت جملهی «باید از روش Folder Shared Windows استفاده کرد» نمایش داده میشه. آیا راهحلی وجود داره که بشه بهطور خودکار بحث چپبهراست بودن زبان انگلیسی رو هم مشخص کرد؟ من راهنمای کاربری بستهی ucharclasses رو هم خوندم، متأسفانه مؤلف بسته معتقد بود که اینکار برای زبانهایی که در دستهی scriptهای عربی دستهبندی میشن (مثل پارسی)، حداقل با استفاده از بستهی ucharclasses، مشکلزاست و باید از فرمانهایی مثل \uccoff و ... استفاده کرد. راستی، خوشبختانه، Doxygen، امکان معرفی stylesheet جداگانه برای LaTeX رو فراهم میکنه و از این طریق تونستم این مشکل رو در جاهایی که کل متن انگلیسی هست با اضافهکردن فرمان /setLTR به style متناظر در فایل stylesheet حل کنم؛ اما همچنان مشکل متنهای ادغامی پارسی و انگلیسی پابرجاست؛ چون Doxygen برای این حالت style جداگانهای برای پارسی و انگلیسی در نظر نگرفته و بهنظرم باید بهشکل خودکار موضوع رو شناسایی کرد. کدی که برای حل مشکل شناسایی خودکار متن پارسی و انگلیسی استفاده کردم، به این صورت هست:
\usepackage[Latin,Arabic]{ucharclasses}
\setmainlanguage{farsi}
\setotherlanguage{english}
\newfontfamily\englishfont{TeX Gyre Bonum}
\newfontfamily\farsifont{YAS}
\let\farsifonttt\ttfamily
\setTransitionsForLatin
{\begingroup\englishfont}
{\endgroup}
ممنونم از توجه همهی دوستان.
ویرایش 1: نکتهی مورد اشارهی آقای صفیاقدم رو اصلاح کردم.
ویرایش 2: از اونجاییکه فکر کردم شاید تکهکدی که نوشتم کافی نباشه، یه فایل نمونه هم فرستادم.
ارادتمند
علی مجدزاده کوهبنانی