% !TeX program = lualatex
\documentclass{article}



\usepackage{booktabs}
\usepackage{graphicx}


\usepackage{listings}
\usepackage[section]{minted}
\usepackage[svgnames]{xcolor}

\setminted{
    escapeinside=||,
    breaklines=true,
    breakanywhere=true,
}

\setminted[latex]{bgcolor=Gold, bgcolorpadding=0.5em}
\setminted[bash]{bgcolor=Gainsboro}
\setminted[text]{bgcolor=Ivory}




\usepackage{hyperref}
\hypersetup{
    colorlinks=true,
    linkcolor=blue,
    urlcolor=blue
}
\pdfstringdefDisableCommands{%
    \def\XeTeX{XeTeX}%
    \def\PdfTeX{pdfTeX}%
    \def\LuaTeX{LuaTeX}%
}
\usepackage{unipersian}
\settextfont{HM XNiloofar}
\setlatintextfont{Times New Roman}
\setlatinmonofont{JetBrains Mono}
\setpersianmonofont[BoldFont={Vazir Code}]{Vazir Code}

\newcommand{\code}[1]{\lr{\texttt{#1}}}


\title{بسته \code{UniPersian}}
\author{عامر آمیخته}

\makeatletter

\date{%\Shamsi{unipersian}
    \localedate[
    calendar=persian,
    convert
    ]{\uper@year}{\uper@month}{\uper@day}
    نسخه
    \lr{\uper@version}
}





\def\XeTeX{%
        \leavevmode
        \hbox{%
            X%
            \lower.5ex\hbox{%
                \kern-.125em
                \scalebox{-1}[1]{E}%
            }%
            \kern-.0900em
            \TeX
        }%
}


\def\PdfTeX{%
        \leavevmode
        \hbox{%
            P%
            \kern-.18em
            \raise-.42ex\hbox{\scriptsize Df}%
            \kern-.08em
            \TeX
        }%
}

\def\LuaTeX{%
        \leavevmode
        \hbox{%
            L%
            \kern-.16em
            \raise.28ex\hbox{\scriptsize Ua}%
            \kern-.16em
            \TeX
        }%
}

%\let\rlLaTeX\LaTeX
%\def\LaTeX{\lr{\rlLaTeX}}
%\let\rlTeX\TeX
%\def\TeX{\lr{\rlTeX}}


\def\version{\uper@version}

\makeatother



\begin{document}
\maketitle




\begin{abstract}
    \sloppy
        \code{UniPersian}
         بسته‌ای مبتنی بر \code{Babel} برای
        حروف‌چینی در اسناد چندزبانه‌ی \LaTeX با زبان اصلی فارسی
        است. این بسته با تمرکز اصلی بر \LuaTeX طراحی شده است. در شاخهٔ
        \LuaTeX، کارکترهای فارسی و لاتین را به‌طور خودکار تشخیص می‌دهد و
        برای متن‌های آمیخته فونت مناسب و فونت پشتیبان
        را انتخاب می‌کند.
         این بسته از \XeTeX نیز
        پشتیبانی می‌کند و امکانات پایه‌ای حروف‌چینی فارسی را برای \PdfTeX
        فراهم می‌آورد. مدیریت جهت نوشتار، نمایش اعداد و شمارنده‌ها به
        شیوه‌های گوناگون، و پشتیبانی جامع از کلاس‌های استانداردی مانند
        \code{book} و \code{article} از قابلیت‌های اصلی آن است. این بسته
        همچنین از کلاس \code{beamer} پشتیبانی می‌کند. در طراحی رابط‌های
        بسته نیز، تا حد امکان، الگوهای رایج در اسناد مبتنی بر بسته‌ی
        \code{xepersian} در نظر گرفته شده‌اند.



\end{abstract}


\tableofcontents



\section{مقدمه}

بسته‌ی
\code{UniPersian}
افزونه‌ای مبتنی بر
\code{Babel}
برای حروف‌چینی فارسی در
\LaTeX
است. این بسته با تمرکز اصلی بر موتور
\LuaTeX
طراحی شده است و از
\XeTeX
نیز پشتیبانی می‌کند. همچنین، امکانات پایه‌ای حروف‌چینی فارسی برای
\PdfTeX
فراهم شده است.

انگیزه‌ی اصلی برای توسعه‌ی این بسته، فراهم کردن امکان حروف‌چینی
فارسی با
\LuaTeX
بوده است. در حال حاضر،
\XeTeX
به‌کمک بسته‌ی
\code{xepersian}
گزینه‌ی اصلی برای حروف‌چینی اسناد فارسی به شمار می‌رود؛
اما بسته‌ی
\code{xepersian}
موتور
\LuaTeX
را پشتیبانی نمی‌کند و نسخه‌ی فعلی آن
(\lr{26.01.01})
استفاده از این موتور را به‌طور
صریح متوقف می‌کند.

برای مثال، سند زیر در صورت کامپایل با
\LuaTeX
با خطا مواجه می‌شود:
\bgroup
\begin{otherlanguage}{english}
\begin{minted}{latex}
    \documentclass{article}
    \usepackage{xepersian}
    \settextfont{HM XNiloofar}

    \begin{document}
    سلام دنیا
    \end{document}
\end{minted}
\end{otherlanguage}
\egroup

در این حالت،
\LuaTeX
خطایی مشابه خطای زیر ایجاد می‌کند:

\begin{minted}{text}
    Fatal Package xepersian Error: Oops! can not use luatex.
\end{minted}


انگیزه‌ی دیگر برای توسعه‌ی این بسته، استفاده از زیرساخت چندزبانه‌ی
\code{Babel}
است؛ به‌جای آنکه لایه‌ای زبانی و مستقل صرفاً برای زبان فارسی ایجاد
شود. به این ترتیب، زبان فارسی را می‌توان در کنار زبان‌های دیگرِ
پشتیبانی‌شده توسط
\code{Babel}
به کار برد، در حالی که ساختار سند و رابط‌های آشنای اسناد فارسی تا
حد زیادی حفظ می‌شوند.

بر این اساس، طراحی بسته‌ی
\code{UniPersian}
بر دو هدف اصلی استوار است:

\begin{enumerate}
    \item
          فراهم کردن حروف‌چینی فارسی با تمرکز اصلی بر
          \LuaTeX،
          پشتیبانی از
          \XeTeX،
          و ارائه‌ی امکانات پایه‌ای برای
          \PdfTeX؛

    \item
          ارائه‌ی رابط‌ها و الگوهای رایج آشنا برای کاربران
          \code{xepersian}
          با تکیه بر زیرساخت چندزبانه‌ی
          \code{Babel}،
          به‌گونه‌ای که انتقال اسناد موجود، با
          تغییرات محدودی انجام شود.
\end{enumerate}


\section{دریافت و نصب}

نسخهٔ رسمی بستهٔ \code{UniPersian} از طریق آرشیو
CTAN
 در دسترس است:

\begin{center}
    \url{https://ctan.org/pkg/unipersian}
\end{center}

در
\TeX{} Live،
 در صورت به‌روز بودن فهرست بسته‌ها، می‌توان بسته را با
دستور زیر نصب کرد:

\begin{minted}{bash}
    tlmgr install unipersian
\end{minted}

\section{موتورهای پشتیبانی‌شده}

بسته‌ی
\code{UniPersian}
برای استفاده با موتورهای
\TeX
زیر طراحی شده است:

\begin{center}
    \begin{tabular}{cc}
        \toprule
        موتور   & وضعیت                 \\
        \midrule
        \LuaTeX & موتور اصلی و توصیه‌شده \\
        \XeTeX  & پشتیبانی می‌شود        \\
        \PdfTeX & پشتیبانی پایه‌ای       \\
        \bottomrule
    \end{tabular}
\end{center}

موتور
\TeX
به‌صورت خودکار تشخیص داده می‌شود و بسته، تعریف‌ها و تنظیمات متناسب
با موتور مورد استفاده را بارگذاری می‌کند. برای حروف‌چینی مستقیم اسناد فارسی با ورودی Unicode، استفاده از \LuaTeX یا \XeTeX توصیه می‌شود؛ بااین‌حال،
\LuaTeX
به‌دلیل پشتیبانی بهتر و تمرکز توسعه‌ی فعلی بسته، گزینه‌ی توصیه‌شده است.

\subsection{\XeTeX}

در
\XeTeX،
بسته از
\code{Babel}
به همراه سامانه‌ی جهت‌دهی
\code{bidi-r}
استفاده می‌کند. این شاخه برای حروف‌چینی فارسی و متن‌های دوجهته
پشتیبانی فراهم می‌کند و با هدف ارائه‌ی رابط‌هایی آشنا برای کاربرانی
که پیش‌تر با
\code{xepersian}
کار کرده‌اند، طراحی شده است.

این هدف به معنای سازگاری کامل یا یکسانی رفتار با
\code{xepersian}
نیست. همچنین، راهنمای فعلی
\code{Babel}
استفاده از
\XeTeX
را برای حروف‌چینی فارسی دیگر توصیه
نمی‌کند.\LR{\footnote{%
        \url{https://latex3.github.io/babel/guides/locale-persian.html}%
    }}

\subsection{\LuaTeX}

\LuaTeX
موتور اصلی در طراحی و توسعه‌ی بسته‌ی
\code{UniPersian}
است و برای حروف‌چینی اسناد فارسی توصیه می‌شود. این موتور ورودی
Unicode
را به‌صورت مستقیم پردازش می‌کند و امکان توسعه‌ی فرآیند حروف‌چینی را
از طریق زبان
\lr{Lua}\footnote{\lr{Lua}
    زبانی برنامه‌نویسی سبک و قابل جاسازی است که در
    \LuaTeX
    برای پردازش و تغییر متن و توسعه‌ی امکانات حروف‌چینی به کار می‌رود.}
فراهم
می‌آورد.

بسته در این شاخه، از
\code{Babel}
همراه با سامانه‌ی
\code{basic}
برای مدیریت جهت نوشتار و حروف‌چینی دوجهته استفاده می‌کند و تعریف‌های
اضافی مخصوص
\LuaTeX
را نیز فراهم می‌آورد.

\sloppy
تنظیمات پیش‌فرض
\code{layout}
در این شاخه، مؤلفه‌هایی مانند
\code{counters}،
\code{tabular}،
\code{graphics},
\code{footnotes}
و
\code{lists}
را دربرمی‌گیرد. پیاده‌سازی
\LuaTeX
همچنین تنظیمات لازم برای مدیریت جهت نوشتار در پانویس‌ها، جدول‌ها،
بسته‌ی
\code{tikz}
و بسته‌ی
\code{fancyhdr}
را فراهم می‌کند.

\subsection{\PdfTeX}

\PdfTeX
با استفاده از سازوکارهای سنتی
\LaTeX
برای مدیریت ورودی و کدگذاری فونت، در کنار
\code{Babel}
پشتیبانی می‌شود. این پشتیبانی برای حروف‌چینی پایه‌ای فارسی فراهم شده
است، اما از نظر پردازش مستقیم
Unicode
و مدیریت فونت، محدودتر از پشتیبانی دو موتور دیگر است.

ازاین‌رو، برای اسناد فارسی مبتنی بر
Unicode
استفاده از
\PdfTeX
باید تنها در صورت وجود محدودیت‌های فنی یا اجرایی مورد استفاده قرار گیرد.

\section{بارگذاری بسته و گزینه‌ها}

بسته به شیوه‌ی معمول \LaTeX بارگذاری می‌شود:

\begin{minted}{latex}
    \usepackage[<options>]{unipersian}
\end{minted}

\code{<options>}
همان گزینه‌های بستهٔ
\code{Babel}
است.

توجه کنید که مانند
\code{xepersian}
و دیگر بسته‌های زبانی، بسته‌ی
\code{UniPersian}
نیز باید به عنوان آخرین بسته بارگذاری شود.

\section{تنظیم فونت‌ها}

در
\XeTeX
و
\LuaTeX
می‌توان فونت‌های فارسی و لاتین را با دستورهای زیر تعیین کرد:

\begin{minted}{latex}
    \settextfont{Noto Naskh Arabic}
    \setlatintextfont{Noto Serif}
\end{minted}

فونت‌های بدون‌سریف و تک‌عرض نیز به‌صورت جداگانه قابل تنظیم هستند:

\begin{minted}{latex}
    \setpersiansansfont{Noto Sans Arabic}
    \setlatinsansfont{Noto Sans}
    \setpersianmonofont{Vazir Code}
    \setlatinmonofont{Noto Sans Mono}
\end{minted}

همهٔ این دستورها یک گزینهٔ اختیاری برای تنظیم ویژگی‌های فونت می‌پذیرند؛ برای مثال:

\begin{minted}{latex}
    \settextfont[ItalicFont={Vazirmatn}]{Vazirmatn}
\end{minted}

در این دستورها، نام فونت در آرگومان اجباری و گزینه‌های مربوط به فونت در آرگومان اختیاری قرار می‌گیرند. گزینه‌ها مستقیماً به سازوکار مدیریت فونت
\code{Babel}
منتقل می‌شوند.

برخلاف
\code{xepersian}،
تعیین فونت الزامی نیست. اگر فونت به‌صورت صریح تعیین نشود، بسته در صورت یافتن فونت‌های مناسبِ پیش‌فرض از آن‌ها استفاده می‌کند؛ در غیر این صورت، باید فونت مورد نظر را با
\verb|\settextfont|
مشخص کرد.

\section{مدیریت خودکار فونت در \LuaTeX}

در موتور
\LuaTeX،
بستهٔ
\code{UniPersian}
حروف فارسی و لاتین را به‌صورت خودکار تشخیص می‌دهد و فونت متناسب با هر زبان را انتخاب می‌کند.
این قابلیت با استفاده از سازوکار
\code{onchar}
در
\code{Babel}
پیاده‌سازی شده است. به این ترتیب، در متن‌های آمیخته، فونت مناسب هر زبان به‌صورت خودکار انتخاب می‌شود و نیاز به تعیین دستی زبان و فونت کاهش می‌یابد. این ویژگی به‌ویژه در بخش‌هایی مانند کدنویسی و فهرست منابع، که تعیین زبان و فونت می‌تواند چالش‌برانگیز باشد، مفید است.

بااین‌حال، تشخیص زبان بر اساس نویسه انجام می‌شود و برخی نویسه‌ها مانند فاصله، پرانتز و علائم نگارشی ذاتاً به زبان خاصی تعلق ندارند. بنابراین، در متن‌های آمیخته، رفتار این نویسه‌ها ممکن است همیشه به‌طور کامل با زبان مورد انتظار منطبق نباشد.

همچنین، در
\LuaTeX،
در صورت تعیین فونت‌های فارسی و لاتین، بسته آن‌ها را برای هر خانواده به‌عنوان فونت پشتیبان
(font fallback)
نیز تنظیم می‌کند. بنابراین، اگر فونت اصلی نویسه‌ای را نداشته باشد، فونت زبان دیگر می‌تواند آن را تأمین کند. این سازوکار برای فونت‌های معمولی، بدون‌سریف و تک‌عرض به‌صورت جداگانه تنظیم می‌شود.

\section{سازگاری با \code{xepersian}}

\sloppy
یکی از اهداف بسته‌ی
\code{UniPersian}
فراهم‌کردن مسیر مهاجرت ساده برای اسنادی است که پیش‌تر با بسته‌ی
\code{xepersian}
نوشته شده‌اند. در حالت مطلوب، جایگزین‌کردن
\verb|\usepackage{xepersian}|
با
\verb|\usepackage{unipersian}|
باید با حداقل تغییر در سایر بخش‌های سند امکان‌پذیر باشد.


در چنین مواردی، بسته تلاش می‌کند دستورهای پرکاربرد و رفتار عمومی سند،
از جمله حروف‌چینی متن فارسی، متن چپ‌به‌راست و تنظیم فونت را تا حد امکان
حفظ کند. بااین‌حال، یکسانی کامل میان خروجی دو بسته تضمین نمی‌شود؛ زیرا
\code{UniPersian}
بر پایه‌ی
\code{Babel}
پیاده‌سازی شده است، درحالی‌که
\code{xepersian}
از سازوکارها و رابط برنامه‌نویسی متفاوتی استفاده می‌کند.

این دو بسته جایگزین یکدیگرند و نباید به‌صورت هم‌زمان در یک سند بارگذاری
شوند. همچنین بعضی از دستورها یا امکانات اختصاصی
\code{xepersian}
که هنوز در رابط برنامه‌نویسی بسته‌ی
\code{UniPersian}
پیاده‌سازی نشده‌اند، ممکن است پس از مهاجرت نیازمند تغییر باشند.

نسخه‌ی فعلی همه‌ی دستورها و امکانات ارائه‌شده توسط
\code{xepersian}
را پیاده‌سازی نمی‌کند. تمرکز فعلی بر پشتیبانی از بخش‌های مهم و پرکاربرد
رابط برنامه‌نویسی آن است. این سازگاری در نسخه‌های آینده، متناسب با نیازهای
کاربران و توسعه‌ی بسته، گسترش خواهد یافت.

\section{دستورها و محیط‌های بسته}

در ادامه، فهرست مهم‌ترین دستورها و محیط‌های بستهٔ
\code{xepersian}
ارائه می‌شود که برای حفظ سازگاری بستهٔ
\code{UniPersian}
با بستهٔ \code{xepersian} در آن تعریف شده‌اند.
این فهرست شامل برخی دستورها و محیط‌هایی است که در اصل به بستهٔ
وابستهٔ \code{bidi} مربوط می‌شوند.



\begin{center}
    \begin{tabular}{@{}lr@{}}
        \verb|\deflatinfont|
         & تعریف یک قلم لاتین با یک نام دلخواه        \\
        \verb|\defpersianfont|
         & تعریف یک قلم فارسی با یک نام دلخواه        \\
        \verb|\latintoday|
         & نمایش تاریخ امروز با رقم‌ها و نام ماه لاتین \\
        \verb|\lr|
         & حروف‌چینی متن چپ‌به‌راست                      \\
        \verb|\LRE|
         & آغاز یک بخش چپ‌به‌راستِ درون‌خطی                 \\
        \verb|\rl|
         & حروف‌چینی متن راست‌به‌چپ                      \\
        \verb|\RLE|
         & آغاز یک بخش راست‌به‌چپِ درون‌خطی                 \\
        \verb|\setlatintextfont|
         & انتخاب قلم متن لاتین                       \\
        \verb|\setlatinmonofont|
         & انتخاب قلم تک‌عرض لاتین                     \\
        \verb|\setpersianmonofont|
         & انتخاب قلم تک‌عرض فارسی                     \\
        \verb|\settextfont|
         & انتخاب قلم اصلی متن                        \\
    \end{tabular}
\end{center}

\begin{center}
    \begin{tabular}{@{}lr@{}}
        \code{latin}
         & حروف‌چینی یک بخش به زبان لاتین و در جهت چپ‌به‌راست \\
        \code{persian}
         & حروف‌چینی یک بخش به زبان فارسی و در جهت راست‌به‌چپ \\
        \code{LTR}
         & حروف‌چینی یک بخش چپ‌به‌راست                        \\
        \code{RTL}
         & حروف‌چینی یک بخش راست‌به‌چپ                        \\
    \end{tabular}
\end{center}

\section{کدنویسی}

بستهٔ \code{UniPersian} نمایش قطعه‌کدها و متن‌های با چیدمان ثابت را
در اسناد فارسی، مستقل از جهت نوشتار متن پیرامون، فراهم می‌کند.

روش پیشنهادی برای نمایش قطعه‌کدها، استفاده از بستهٔ \code{minted}
همراه با \LuaTeX است. در این حالت، متن فارسی و لاتین درون کد و
توضیحات آن به‌صورت طبیعی قابل استفاده است:

\begin{minted}{latex}
    \begin{minte||d}{python}
       # توضیح فارسی
       print("سلام")
    \end{minte||d}
\end{minted}

\sloppy
بستهٔ \code{minted} به پیش‌نیازهای خود نیاز دارد. در صورت نبود این
پیش‌نیازها، می‌توان از \code{listings} استفاده کرد. در این صورت بستهٔ
\code{unipersian-listings}
به‌صورت خودکار بارگذاری می‌شود.
با \LuaTeX، جهت و فونت کدها مدیریت می‌شود؛ بااین‌حال، \code{listings} در پردازش برخی نویسه‌های
فارسی، از جمله فاصله‌ها، محدودیت‌هایی دارد
و به
\code{escapeinside}
 نیاز پیدا می‌کند.

\sloppy
در صورت استفاده از \XeTeX، برای وارد کردن متن فارسی در
\code{lstlisting} نیز باید از \code{escapeinside} و دستور
\verb|\fa| استفاده کرد. در این حالت، \verb|\fa| تنظیمات و
رنگ‌آمیزی \code{listings} را حفظ می‌کند.
\begin{minted}{latex}
    \begin{lstlisting}[language=Python,escapeinside={@}{@}]
        # @\fa{توضیح فارسی}@
        print("@\fa{سلام}@")
    \end{lstlisting}
\end{minted}



اگر به امکانات بسته‌های کدنویسی نیاز ندارید، دستور \verb|\verb| و
محیط \code{verbatim} نیز برای نمایش متن با چیدمان ثابت در اسناد
فارسی سازگار شده‌اند و می‌توان از آن‌ها برای کدهای ساده استفاده کرد.

\section{اعداد و شماره‌گذاری فارسی}

بسته مجموعه‌ای از دستورات را برای نمایش اعداد و شماره‌گذاری به شیوه‌های
رایج فارسی فراهم می‌کند.
دستورات زیر نام یک شمارنده را به‌عنوان آرگومان می‌گیرند:

\begin{minted}{latex}
    \harfi{section}
    \adadi{section}
    \tartibi{section}
    \Abjad{section}
\end{minted}

این دستورات، مقدار شمارنده را به ترتیب به صورت حروف الفبای فارسی، عدد
به حروف، عدد ترتیبی و حروف ابجد نمایش می‌دهند.

برای نمایش مستقیم یک مقدار عددی، می‌توان از دستورات متناظر زیر استفاده کرد:

\begin{minted}{latex}
    \harfi{3}
    \adadinumeral{11}
    \tartibinumeral{4}
    \Abjadnumeral{7}
\end{minted}

دستورهای
\verb|\harfi|
و
\verb|\Abjad|
به‌ترتیب مقادیر ۱ تا ۳۲ و ۱ تا ۲۸ را پشتیبانی می‌کنند. دستورهای
\verb|\adadi|
و
\verb|\tartibi|
نیز برای مقادیر صحیح مثبت تا ۹۹۹٬۹۹۹٬۹۹۹ قابل استفاده‌اند.

\section{فارسی‌سازی عناوین و اصطلاحات}
\sloppy
بستهٔ \code{UniPersian}، همانند بستهٔ \code{xepersian}،
ترجمهٔ فارسی عناوین استاندارد \LaTeX و اصطلاحات برخی بسته‌ها و کلاس‌های
پرکاربرد را فراهم می‌کند. این ترجمه‌ها شامل عنوان‌هایی مانند «فهرست
مطالب»، «شکل»، «جدول»، «منابع»، «نمایه» و «واژه‌نامه» است.

ترجمه‌های مرتبط با هر بسته یا کلاس، در صورت بارگذاری آن به صورت شرطی
فعال می‌شوند. برای نمونه، بسته‌های \code{algorithm},
\code{hyperref}, \code{listings} و
\code{minitoc}، و همچنین کلاس \code{beamer}، از این
قابلیت پشتیبانی می‌کنند.

این ترجمه‌ها با هدف ایجاد تجربه‌ای مشابه با \code{xepersian} و
تسهیل استفاده از \code{UniPersian} در سندهای فارسی ارائه شده‌اند.

\section{پشتیبانی از کلاس \code{beamer}}

بستهٔ \code{UniPersian} امکان تهیهٔ ارائه‌های فارسی با کلاس
\code{beamer} را فراهم می‌کند. یک نمونهٔ ساده به‌صورت زیر است:

\begin{minted}{latex}
    \documentclass{beamer}
    \usepackage{unipersian}

    \begin{document}
    \begin{frame}
        !سلام دنیا
    \end{frame}
    \end{document}
\end{minted}

هر سه موتور
\PdfTeX، \XeTeX و \LuaTeX
قابل استفاده‌اند، اما مانند بقیه کلاس‌ها
استفاده از \LuaTeX توصیه می‌شود. بسته در
این موتور تنظیمات اختصاصی لازم برای بهبود چیدمان راست‌به‌چپ برخی اجزای
\code{beamer}، از جمله کادرها، را اعمال می‌کند؛ ازاین‌رو نتیجه در
تم‌ها و پیکربندی‌های گوناگون معمولاً مناسب‌تر است.

برای تهیهٔ ارائه‌های فارسی، استفاده از کلاس
\code{beamer-rl} همراه با بستهٔ \code{UniPersian} توصیه می‌شود.
این کلاس به‌طور ویژه برای ارائه‌های راست‌به‌چپ طراحی شده است و می‌تواند
در تم‌ها و پیکربندی‌های گوناگون، چیدمان مناسب‌تری برای اجزای
\code{beamer} فراهم کند. کلاس \code{beamer-rl} فقط با موتور
\LuaTeX قابل استفاده است. نمونهٔ بارگذاری آن به‌صورت زیر است:

\begin{minted}{latex}
    \documentclass{beamer-rl}
    \usepackage{unipersian}

    \begin{document}
    \begin{frame}
       !سلام دنیا
    \end{frame}
    \end{document}
\end{minted}


در صورت بروز مشکل در یک تم، محیط یا پیکربندی خاص، می‌توان استفاده از
\code{beamer-rl} را کنار گذاشت و سند را با کلاس استاندارد
\code{beamer} تهیه کرد. بستهٔ \code{UniPersian} برای استفادهٔ
مستقیم با این کلاس نیز تنظیم شده است.



پشتیبانی از \code{beamer} همچنان در مرحلهٔ آغازین توسعه قرار
دارد و ممکن است در بعضی تم‌ها، محیط‌ها یا پیکربندی‌ها محدودیت‌هایی وجود
داشته باشد. سازگاری با اجزای مختلف این کلاس در نسخه‌های آینده بهبود
خواهد یافت و کاربران می‌توانند مشکلات مربوط به چیدمان و تم‌ها را گزارش
کنند.

\section{محدودیت‌های فعلی}

نسخه‌ی فعلی هنوز کامل نیست و چند محدودیت شناخته‌شده دارد.

مهم‌ترین موارد عبارت‌اند از:

\begin{itemize}
    \item همه‌ی قابلیت‌های \code{xepersian} هنوز پیاده‌سازی نشده‌اند.
    \item پشتیبانی از Beamer هنوز در حال تکمیل است.
    \item پشتیبانی از \PdfTeX نسبت به XeTeX و \LuaTeX محدودتر است.
    \item
    در نسخهٔ فعلی، حالت استفاده از انگلیسی به‌ عنوان زبان اصلی و فارسی به‌عنوان زبان دوم پشتیبانی نمی‌شود.
    \item سازگاری با همه‌ی بسته‌های جانبی \LaTeX به‌طور کامل آزموده نشده است.
    \item
    در نسخهٔ فعلی، تنها \code{Babel} به‌عنوان چارچوب مدیریت زبان
    پشتیبانی می‌شود؛ امکان پشتیبانی از \code{Polyglossia} در آینده
    قابل بررسی است.
\end{itemize}

\section{گزارش مشکلات}

هنگام گزارش یک مشکل، لطفاً اطلاعات زیر را ارائه کنید:

\begin{enumerate}
    \item موتور \TeX{} و نسخه‌ی آن.
    \item نسخه‌ی \LaTeX{}.
    \item نسخه‌ی بسته‌ی \code{UniPersian}.
    \item یک مثال حداقلی قابل اجرا (MWE).
    \item در صورت امکان، متن کامل خطا.
\end{enumerate}

برای مثال:


\begin{minted}{text}
        Engine: LuaTeX
        LaTeX: TeX Live 2026
        UniPersian: |\version|
\end{minted}


برای بررسی یک مشکل، یک مثال کوچک و قابل بازتولید
بسیار مفیدتر از یک سند بزرگ است.


\section{مجوز}

بسته‌ی \code{UniPersian} تحت مجوز
\lr{LaTeX Project Public License (LPPL)}
نسخه‌ی \lr{1.3c} یا جدیدتر منتشر می‌شود.
متن کامل مجوز در فایل \code{LICENSE} موجود است.


\section{قدردانی}
از آقای وفا خلیقی، نویسنده و نگهدارنده‌ی بسته‌های
\code{xepersian} و \code{bidi}، صمیمانه قدردانی می‌کنیم.
کارهای ایشان نقش مهمی در توسعه‌ی حروف‌چینی فارسی و راست‌به‌چپ
و گسترش استفاده از \LaTeX{} در میان کاربران فارسی‌زبان داشته است.

همچنین از توسعه‌دهندگان و نگهدارندگان پروژه‌ی \code{Babel}،
و همه‌ی مشارکت‌کنندگان در اکوسیستم \LaTeX{} فارسی، قدردانی می‌کنیم.
این پروژه‌ها و تجربه‌های به‌دست‌آمده از آن‌ها، بخشی از زمینه‌ی فنی
و الهام‌بخش توسعه‌ی بسته‌ی \code{UniPersian} را فراهم کرده‌اند.

\section{نویسنده و نگهدارنده}



بسته‌ی \code{UniPersian} در حال حاضر توسط
\textbf{عامر آمیخته}
نگهداری و توسعه داده می‌شود.

کد منبع، نسخه‌های توسعه و امکان گزارش مشکلات در مخزن پروژه در دسترس
است:

\hfill \url{https://github.com/gambi-shah/unipersian}

\end{document}
