سلام
با کسب اجازه از جناب خلیقی عزیز
من تعریف \bidi@dot@charclass
را از لاتک که باید در bidi
تعریف شده باشد، طلب کردم و
نتیجهی undifind \bidi@dot@charclass
را مشاهده کردم (در تصویر زیر ببینید).
به نظر میآید وفای عزیز این تعریف را در نسخههای بعد حذف یا تغییر نام داده باشند (نسخههای جدید را چک نکردهام).
با اضافه کردن دو ساختار زیر به کد جناب خلیقی خطایی دریافت نمیکنید:
\newXeTeXintercharclass\bidi@dot@charclass
\XeTeXcharclass `\. \bidi@dot@charclass
که در آن فرم کلی دستورات بالا به صورت زیر است:
\newXeTeXintercharclass ⟨control sequence⟩
\XeTeXcharclass ⟨char slot⟩ [=]⟨interchar class⟩
و interchar class
در محدودهی 0-4095
است.
کدهای شما به صورت زیر است:
\documentclass{article}
\usepackage{color}
\usepackage{lipsum}
\usepackage{ptext}
\usepackage{xepersian}
\settextfont{Yas}
\makeatletter
\newcount\WordCount
\newcount\My@Alphabets
\newXeTeXintercharclass\bidi@dot@charclass
\XeTeXcharclass `\. \bidi@dot@charclass
\newXeTeXintercharclass\MyAlphabets
\newXeTeXintercharclass\MyComma
\XeTeXcharclass`\،\MyComma
\XeTeXcharclass`\,\MyComma
\My@Alphabets=`\آ \loop \XeTeXcharclass \My@Alphabets=\MyAlphabets \ifnum\My@Alphabets<`\ی \advance\My@Alphabets \@ne \repeat
\My@Alphabets=`\A \loop \XeTeXcharclass \My@Alphabets=\MyAlphabets \ifnum\My@Alphabets<`\Z \advance\My@Alphabets \@ne \repeat
\My@Alphabets=`\a \loop \XeTeXcharclass \My@Alphabets=\MyAlphabets \ifnum\My@Alphabets<`\z \advance\My@Alphabets \@ne \repeat
\XeTeXinterchartoks \MyAlphabets 4095 = {\PrintWordCount}
\XeTeXinterchartoks \MyAlphabets \MyComma = {\PrintWordCount}
\XeTeXinterchartoks \MyAlphabets \bidi@dot@charclass = {\PrintWordCount}
\newcommand*{\PrintWordCount}{\raise.8\baselineskip\llap{\tiny\global\advance\WordCount\@ne\textcolor{red}{\the\WordCount}}}
\makeatother
\begin{document}
\begin{latin}
\meaning\bidi@dot@charclass
\end{latin}
سلام وفا. حال، احوال : میتوانیم بشماریم
\begin{latin}
hi vafa
\end{latin}
\end{document}
و خروجی زیر را دارید:
موفق باشید.