بخش نخست
قرار گرفتن متن در محیط frame بصورت ragged right
اگر یک متن ساده را در محیط frame قرار دهیم:
\documentclass{beamer}
\usepackage{ptext}
\usefonttheme{serif}
\usepackage{xepersian}
\settextfont{Yas}
\begin{document}
\begin{frame}
\ptext[1-2]
\end{frame}
\end{document}
متن بصورت ragged right قرار میگیرد. این مشکل به این خاطر وجود دارد که دستور \raggedright در خط ۳۸۱ فایل beamer.cls وجود دارد و مشکل با قرار دادن \raggedleft (رونویسی \raggedrightی که کلاس beamer بصورت پیشفرض قرار میدهد) حل میشود:
\documentclass{beamer}
\usepackage{ptext}
\usefonttheme{serif}
\usepackage{xepersian}
\settextfont{Yas}
\raggedleft
\begin{document}
\begin{frame}
\ptext[1-2]
\end{frame}
\end{document}
قرار گرفتن \frametitle و \framesubtitle در سمت چپ در theme پیشفرض کلاس beamer (Default)
اگر از دستورات \frametitle و \framesubtitle برای قرار دادن عنوان و زیرعنوان یک frame استفاده کنیم:
\documentclass{beamer}
\usefonttheme{serif}
\usepackage{xepersian}
\settextfont{Yas}
\begin{document}
\begin{frame}
\frametitle{عنوان اسلاید}
\framesubtitle{زیر عنوان اسلاید}
\end{frame}
\end{document}
این عنوان و زیرعنوان در جای نامناسب (سمت چپ) قرار میگیرد. این مشکل با تغییر دادن مقدار \rightskip با مقدار \leftskip و بالاعکس حل میشود:
\documentclass{beamer}
\usefonttheme{serif}
\usepackage{xepersian}
\settextfont{Yas}
\makeatletter
\define@key{beamercolbox}{left}[0pt]{\def\beamer@colbox@rs{0pt}\def\beamer@colbox@ls{#1 plus1fill}}
\makeatother
\begin{document}
\begin{frame}
\frametitle{عنوان اسلاید}
\framesubtitle{زیر عنوان اسلاید}
\end{frame}
\end{document}
محیطهای listمانند بصورت ragged right قرار میگیرند
محیطهای list مانند محیطهای itemize، enumerate و ... بصورت ragged right چیده میشوند:
\documentclass{beamer}
\usefonttheme{serif}
\usepackage{xepersian}
\settextfont{Yas}
\begin{document}
\begin{frame}
\begin{enumerate}
\item
این یک متن است که در اینجا قرار میدهیم.
\end{enumerate}
\begin{itemize}
\item
این یک متن است که در اینجا قرار میدهیم.
\end{itemize}
\end{frame}
\end{document}
این مشکل با تغییر \raggedright به \raggedleft در این محیطها و همچنین تغییر \leftmargin به \rightmargin حل میشود:
\documentclass{beamer}
\usepackage{ptext}
\usefonttheme{serif}
\usepackage{xepersian}
\settextfont{Yas}
\makeatletter
\expandafter\let\csname beamer@@tmpop@itemize item@default\endcsname\relax
\expandafter\let\csname beamer@@tmpop@itemize subitem@default\endcsname\relax
\expandafter\let\csname beamer@@tmpop@itemize subsubitem@default\endcsname\relax
\defbeamertemplate*{itemize item}{default}{\scriptsize\raise1.25pt\hbox{\donotcoloroutermaths$\blacktriangleleft$}}
\defbeamertemplate*{itemize subitem}{default}{\tiny\raise1.5pt\hbox{\donotcoloroutermaths$\blacktriangleleft$}}
\defbeamertemplate*{itemize subsubitem}{default}{\tiny\raise1.5pt\hbox{\donotcoloroutermaths$\blacktriangleleft$}}
\bidi@patchcmd{\@listi}{\leftmargin}{\rightmargin}{}{}
\let\@listI\@listi
\bidi@patchcmd{\@listii}{\leftmargin}{\rightmargin}{}{}
\bidi@patchcmd{\@listiii}{\leftmargin}{\rightmargin}{}{}
\bidi@patchcmd{\beamer@enum@}{\raggedright}{\raggedleft}{}{}
\bidi@patchcmd{\@@description}{\raggedright}{\raggedleft}{}{}
\bidi@patchcmd{\@@description}{\leftmargin}{\rightmargin}{}{}
\renewcommand{\itemize}[1][]{%
\beamer@ifempty{#1}{}{\def\beamer@defaultospec{#1}}%
\ifnum \@itemdepth >2\relax\@toodeep\else
\advance\@itemdepth\@ne
\beamer@computepref\@itemdepth% sets \beameritemnestingprefix
\usebeamerfont{itemize/enumerate \beameritemnestingprefix body}%
\usebeamercolor[fg]{itemize/enumerate \beameritemnestingprefix body}%
\usebeamertemplate{itemize/enumerate \beameritemnestingprefix body begin}%
\list
{\usebeamertemplate{itemize \beameritemnestingprefix item}}
{\def\makelabel##1{%
{%
\hss\llap{{%
\usebeamerfont*{itemize \beameritemnestingprefix item}%
\usebeamercolor[fg]{itemize \beameritemnestingprefix item}##1}}%
}%
}%
}
\fi%
\beamer@cramped%
\raggedleft%
\beamer@firstlineitemizeunskip%
}
\makeatother
\raggedleft
\begin{document}
\begin{frame}
\ptext[1]
\begin{enumerate}
\item
این یک متن است که در اینجا قرار میدهیم این یک متن است که در اینجا قرار میدهیم. این یک متن است که در اینجا قرار میدهیم. این یک متن است که در اینجا قرار میدهیم.
\end{enumerate}
\begin{itemize}
\item
این یک متن است که در اینجا قرار میدهیم این یک متن است که در اینجا قرار میدهیم. این یک متن است که در اینجا قرار میدهیم. این یک متن است که در اینجا قرار میدهیم.
\end{itemize}
\begin{description}
\item[آزمایش]
این یک متن است که در اینجا قرار میدهیم این یک متن است که در اینجا قرار میدهیم. این یک متن است که در اینجا قرار میدهیم. این یک متن است که در اینجا قرار میدهیم.
\end{description}
\end{frame}
\end{document}
در این کد مثلثهای محیط itemize نیز تغییر یافتهاند تا مناسب محیط راست به چپ باشند.