• Welcome to پارسی‌لاتک.
 
از تاریخ ۱۳۹۳/۸/۱۴ به دلیل ارائه خدمات بهتر به سایت جدید پرسش و پاسخ مهاجرت کرده‌ایم؛ از این رو امکان عضویت و ارسال پست در تالار غیرفعال شده است. لطفاً برای پرسیدن سوال‌های خود به سایت جدید مراجعه کنید.

ورود به سایت جدید

تغییر فونت انگلیسی بدون دستور lr

نویسنده taherkhani, می 16, 2014, 11:23:30 قبل از ظهر

« قبلی - بعدی »

taherkhani

سلام

من میخوام فونت کلمات انگلیسی در متن فارسی من Courier باشه، وقتی قرار میدم:
‎\setlatintextfont{‎Courier New‎}
باید حتما کلمات و عبارات انگلیسی با دستور \lr بیان تا تغییر در فونت دیده بشه.

آیا میشه کاری کرد که به طور اتوماتیک فونت کلیه کلمات و عبارات انگلیسی بدون استفاده از دستور \lr تغییر کنه؟

ممنون

vafa

در خود تک و با امکانات زی‌تک خیر. نمونه زیر نمونه‌ای است که چند سال پیش نوشتم اما با امکانات کم زی‌تک بهتر از این نمی‌شود کاری کرد:

\documentclass{article}
\usepackage{xepersian}
\makeatletter
% classes 1-3 are used in unicode-letters.tex, so we'll put the Latin  letters in 4
\newcount\xp@n
\xp@n=`\A \loop \XeTeXcharclass \xp@n=4 \ifnum\xp@n<`\Z \advance\xp@n by 1 \repeat
\xp@n=`\a \loop \XeTeXcharclass \xp@n=4 \ifnum\xp@n<`\z \advance\xp@n by 1 \repeat
% when we encounter class 4, we'll do \startlatin
\XeTeXinterchartoks 0 4 {\startlatin}
\XeTeXinterchartoks 255 4 {\startlatin}
% and when we encounter class 0, we'll do \finishlatin
\XeTeXinterchartoks 255 0 {\finishlatin}
\XeTeXinterchartoks 4 0 {\finishlatin}
\newcommand{\startlatin}{\if@Latin\else\bgroup\beginL\latinfont\@Latintrue\fi}
\newcommand{\finishlatin}{\if@Latin\unskip\endL\egroup{ }\fi}
\makeatother
\XeTeXinterchartokenstate=1
\begin{document}
این یک آزمایش است
One Two Three
و ادامه آن
\end{document}


خارج از تک. بله. یک pre-processor بنویس (به هر زبان برنامه‌نویسی که می‌تونی مثل C یا هر چیز دیگه‌ای) که فایل تک را به فایلی تبدیل می‌کنه که در اون تمام کلمات انگلیسی داخل دستور \lr قرار گرفتند.