تالار گفتگوی پارسیلاتک
لاتک LATEX => حروفچینی مستندات => نويسنده: taherkhani در مه 16, 2014, 11:23:30 am
-
سلام
من میخوام فونت کلمات انگلیسی در متن فارسی من Courier باشه، وقتی قرار میدم:
\setlatintextfont{Courier New}
باید حتما کلمات و عبارات انگلیسی با دستور \lr بیان تا تغییر در فونت دیده بشه.
آیا میشه کاری کرد که به طور اتوماتیک فونت کلیه کلمات و عبارات انگلیسی بدون استفاده از دستور \lr تغییر کنه؟
ممنون
-
در خود تک و با امکانات زیتک خیر. نمونه زیر نمونهای است که چند سال پیش نوشتم اما با امکانات کم زیتک بهتر از این نمیشود کاری کرد:
\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 قرار گرفتند.