تالار گفتگوی پارسی‌لاتک

لاتک LATEX => حروف‌چینی مستندات => نويسنده: taherkhani در مه 16, 2014, 11:23:30 am

عنوان: تغییر فونت انگلیسی بدون دستور lr
رسال شده توسط: taherkhani در مه 16, 2014, 11:23:30 am
سلام

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

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

ممنون
عنوان: پاسخ : تغییر فونت انگلیسی بدون دستور lr
رسال شده توسط: vafa در مه 16, 2014, 11:39:29 am
در خود تک و با امکانات زی‌تک خیر. نمونه زیر نمونه‌ای است که چند سال پیش نوشتم اما با امکانات کم زی‌تک بهتر از این نمی‌شود کاری کرد:
\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 قرار گرفتند.