اولین بار است که به اینجا می‌آیید؟ راهنمای سایت را بخوانید!
Close Sidebar
وب‌سایت پرسش و پاسخ پارسی‌لاتک جایی برای پرسش و پاسخ درباره سیستم حروف‌چینی لاتک و بسته زی‌پرشین است. در اینجا می‌توانید سوال‌های خود را بپرسید و به سوال‌های دیگران پاسخ دهید.

محبوب‌ترین برچسب‌ها

رفع خطا جدول مراجع xepersian ریاضی‌نویسی شکل فونت فهرست مطالب شماره‌گذاری منابع bidi پانویس بیب‌تک parsilatex تک‌لایو tikz اسلاید بیمر زی‌پرشین پاورقی سربرگ bibtex نماد رسم شکل قالب فرمول‌نویسی ارجاع‌دهی biditexmaker هدر ویرایشگر beamer واژه‌نامه اندازه فونت texstudio ماتریس عنوان فصل اعمال نشدن تغییرات در پی‌دی‌اف bidipresentation رسم جدول حاشیه شماره صفحه رنگ عنوان شکل اسلاید فارسی محیط قضیه گراف مکان شکل tikzpicture حروف‌چینی کد شماره فصل tabriz_thesis enumerate زیرنویس شکل کادر align نمایه itemize listings الگوریتم بسته نیم‌فاصله متن لاتین و فارسی عدم اجرا فهرست اشکال فاصله بین خطوط نصب تک‌لایو فارسی‌تک hyperref شماره فرمول فرمول glossaries قالب پایان‌نامه حروف‌چینی چندستونی فونت فارسی و انگلیسی نمودار خروجی biditools ماکرونویسی کپشن پیوست‌ فاصله‌گذاری فرمول چندضابطه‌ای سوال امتحانی subfigure header شماره پاورقی tex لاتک biditufte-book texmaker تصویر texlive2015 میک‌تک pdf شمارنده زیرنویس خطا شماره‌گذاری صفحات دیاگرام texlive2016 فهرست جداول رسم نمودار تنظیم جدول longtable texworks caption اندیس extrafootnotefeatures lollipop iust-thesis multicol فصل‌نویسی kashida سوال چهارگزینه‌ای قاب تورفتگی آکولاد فاصله عمودی پایان نامه xindy چپ‌چینی اوبونتو شعر میکروسافت ورد بولد geometry fancyhdr تک لایو 2015 به‌روزرسانی بسته اعداد فارسی aimc46 فرمول طولانی بیرون‌زدگی کاما وسط‌چینی عنوان بخش پوستر فاصله سطرها نوشتافت شکست خط tex-programming قرآن tabriz-thesis ایتالیک winedt جستجوی معکوس texlive فلش جایابی تصویر tcolorbox صفر توخالی قالب کتاب پاراگراف‌بندی فونت اعداد pgfplots بازیابی اطلاعات فهرست نمادها شمارنده فصل محیط ریاضی رسم کادر xelatex جداکننده جدول طولانی شماره‌گذاری فرمول هایپرلینک algorithm2e proof eps جدول افقی پانویس چندستونی فهرست تصاویر شماره گذاری کمک مالی فاصله خطوط حروف‌چینی شعر فونت بولد زیرشکل equation bidipoem عکس ltrfootnote پیوست computeautoilg به‌روزرسانی فرمول چندخطی neveshtuft غلط‌گیری املایی تک‌پارسی پیکان minipage قلم پانویس پاراگرافی baselineskip شماره قسمت قسمت عنوان جدول متن فارسی و انگلیسی قالب مجله xebaposter bidihl
2 نفر آنلاین
0 عضو و 2 مهمان در سایت حاضرند
بازدید امروز: 5763
بازدید دیروز: 7236
بازدید کل: 15241647

الگوریتمی برای تعیین فاصله خط کرسی

+3 رای
943 بازدید

همانطور که می‌دانیم مقدار پیش‌فرض \baselineskip در لاتک (که برای متون لاتین طراحی شده است) مناسب متون پارسی (به خاطر شکل حروف نیست) و معمولاً ما مقدار \baselineskip را دستی تغییر می‌دهیم. بنابراین وجود یک الگوریتم مناسب که بتوان مقدار \baselineskip مناسب را برای متون پارسی، محاسبه کرد ضروری است.

ایده‌ای که به ذهن من می‌آید این است که ابتدا از قلم لاتین استفاده کنیم، تمام حروف لاتین را داخل یک کادر قرار دهیم و عمق و ارتفاغ کادر را حساب کنیم. سپس مقدار عمق کادر و ارتفاع کادر را جمع کنیم و آن را از مقدار \baselineskip کم کنیم و حاصل را x بنامیم.

سپس همین کار را با یک قلم پارسی و با حروف پارسی (و اعراب) انجام دهیم و حاصل را y بنامیم.

بصورت حتم هیچگاه x<y نخواهد بود. پس دو حالت باقی می‌ماند:

  1. اگر x=y بود، هیچ کاری انجام نده.
  2. اگر x>y بود، مقدار جدید \baselineskip را به \baselineskip (previous)+(x-y) تغییر بده.

آیا الگوریتم بهتری وجود دارد؟


بروزرسانی: برای اینکه سوالات احتمالی دیگران رو پاسخ بدهم و همچنین خروجی الگوریتم بالا رو ببینید، الگوریتم بالا رو پیاده کردم:

\documentclass[a4paper,12pt]{article}
\usepackage{ptext}
\usepackage{xepersian}
\settextfont{XB Niloofar}
\begin{document}
\newdimen\origbaselineskip
\setlength{\origbaselineskip}{\baselineskip}
\newsavebox\baselineskipboxi
\setbox\baselineskipboxi\hbox{%
Q W E R T Y U I O P A S D F G H J K L Z X C V B N M
q w e r t y u i o p a s d f g h j k l z x c v b n m
}
\newdimen\latinwhitespace
\setlength{\latinwhitespace}{\dimexpr\origbaselineskip-\dp\baselineskipboxi-\ht\baselineskipboxi\relax}
\newsavebox\baselineskipboxii
\setbox\baselineskipboxii\hbox{%
چ ج ح خ ه ع غ ف ق ث ص ض ش س ی ب ل ا ت ن م ک گ و پ د ذ ر ز ط ظ ژ  ّ َ ِ ُ ً ً ً ٍ ٌ ْ
}
\newdimen\persianwhitespace
\setlength{\persianwhitespace}{\dimexpr\origbaselineskip-\dp\baselineskipboxii-\ht\baselineskipboxii\relax}

\newcommand*{\AutoPersianBaseLineSkip}{%
\ifdim\latinwhitespace>\persianwhitespace
  \setlength{\baselineskip}{\dimexpr\origbaselineskip+\latinwhitespace-\persianwhitespace\relax}
\fi}

\newcommand*{\DefaultLatinBaseLineSkip}{\setlength{\baselineskip}{\origbaselineskip}}

\AutoPersianBaseLineSkip
\ptext[1]
\end{document}

می‌تونید از هر قلمی که دوست داشتید استفاده کنید، اما از قلم‌های متفاوت استفاده کنید مثلاً قلم‌‌های Arial یا Times New Roman و .. رو هم امتحان کنید. در هر صورت می‌بینید که فاصله خط کرسی، فاصله مناسبی است.

سوال شده آبان 24, 1393 توسط وفا (24,180 امتیاز)
ویرایش شده آبان 25, 1393 توسط وفا
اگر سوالتون از منه، لطفاً یک پرسش جدید ایجاد کنید.
آقا وفا
من هم این الگوریتم را در چند فایل نوشتار فارسی، وارد کردم و نتیجه خوبی داد. اگر صلاح می‌دانید در نسخه بعدی زی‌پرشین، این الگوریتم را قرار دهید به گونه‌ای که اگر کاربر بسته زی‌پرشین را به عنوان مثال، با گزینه AutoPersianBaseLineSkip=on فراخوانی کرد، فاصله بین خطوط با همین الگوریتم تعیین شود.
این الگوریتم بسیار ساده هست و خیلی باید روش کار بشه ولی حتماً پیشنهاد شما را به خاطر می‌سپارم و ممنون از پیشنهادتون.
...