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

زی‌پرشین XePersian => زی‌تک => نويسنده: taherkhani در آوریل 06, 2013, 12:16:09 pm

عنوان: ایجاد شمارنده برای حروف فارسی
رسال شده توسط: taherkhani در آوریل 06, 2013, 12:16:09 pm
سلام
هدف من تولید جدولی 2 یا چند ستونی از فرمولهای ریاضی هست که شماره بخورند.

چون در محیط جدول نمیشه از محیط enumerate استفاده کرد، یک شمارنده تعریف

کردم به شکل زیر:

\newcounter{shomarande}
\renewcommand{\shomare}{\stepcounter{shomarande}(\theshomarande)}

با این دو دستور، وقتی دستور \shomare رو در خانه های جدول میذارم شماره های (1)، (2)، و ... درست میشوند.

الان میخوام این شماره ها به صورت (الف)، (ب)، و ... تولید بشود. برای اینکار وقتی دستور

\renewcommand{\theshomarande}{\harfi{shomarande}}

رو اضافه میکنم خطایی نمیگیرم ولی هیچ شماره ای هم تولید نمیشود.
عنوان: پاسخ : ایجاد شمارنده برای حروف فارسی
رسال شده توسط: فرشاد ترابی در آوریل 06, 2013, 06:01:47 pm
زی‌پرشین شما قدیمی نیست؟ فکر کنم فونت مناسب پیدا نمیکنه. اگر فایل کمینه ارسال کنید بهتر میشه کمک کرد.
عنوان: پاسخ : ایجاد شمارنده برای حروف فارسی
رسال شده توسط: taherkhani در آوریل 07, 2013, 03:16:36 pm
فایل هارو فرستادم
عنوان: پاسخ : ایجاد شمارنده برای حروف فارسی
رسال شده توسط: وحید دامن‌افشان در آوریل 08, 2013, 12:44:07 am
فایل هارو فرستادم
استفاده شما از محیط latin اشتباه هستش. در واقع شما برای چپ به راست کردن فرمول‌ها از این محیط استفاده کردین. علاوه بر این، در صورت استفاده از این محیط، شماره فرمول‌ها هم انگلیسی چاپ می‌شه که اشتباهه.
پیشنهاد می‌کنم که این محیط رو حذف کنین و به جای استفاده از این محیط، جای خانه‌های جدول رو عوض کنین.
اما چرا در صورت استفاده از دستور \harfi، حروف آ، ب و ... چاپ نمی‌شه؟ دلیل این رفتار اینه که شمار از دستور ‎\shomare در داخل محیط align استفاده کردین که یه محیط مخصوص حروف‌چینی فرمول‌های ریاضی هستش. از طرفی می‌دونیم که برای نوشتن متن فارسی در محیط ریاضی، باید از دستور
\text{...}استفاده بشه. بنابراین اگه می‌خواین به جای شماره‌های ۱، ۲ و ... از حروف آ، ب و ... استفاده کنین، باید دستور
\renewcommand{\theshomarande}{\harfi{shomarande}}رو به
\renewcommand{\theshomarande}{\text{\harfi{shomarande}}}تغییر بدین. البته با این فرض که محیط latin رو حذف کرده باشین.
عنوان: پاسخ : ایجاد شمارنده برای حروف فارسی
رسال شده توسط: taherkhani در آوریل 08, 2013, 03:47:51 pm
استفاده شما از محیط latin اشتباه هستش. در واقع شما برای چپ به راست کردن فرمول‌ها از این محیط استفاده کردین. علاوه بر این، در صورت استفاده از این محیط، شماره فرمول‌ها هم انگلیسی چاپ می‌شه که اشتباهه.
پیشنهاد می‌کنم که این محیط رو حذف کنین و به جای استفاده از این محیط، جای خانه‌های جدول رو عوض کنین.
اما چرا در صورت استفاده از دستور \harfi، حروف آ، ب و ... چاپ نمی‌شه؟ دلیل این رفتار اینه که شمار از دستور ‎\shomare در داخل محیط align استفاده کردین که یه محیط مخصوص حروف‌چینی فرمول‌های ریاضی هستش. از طرفی می‌دونیم که برای نوشتن متن فارسی در محیط ریاضی، باید از دستور
\text{...}استفاده بشه. بنابراین اگه می‌خواین به جای شماره‌های ۱، ۲ و ... از حروف آ، ب و ... استفاده کنین، باید دستور
\renewcommand{\theshomarande}{\harfi{shomarande}}رو به
\renewcommand{\theshomarande}{\text{\harfi{shomarande}}}تغییر بدین. البته با این فرض که محیط latin رو حذف کرده باشین.

ممنون از پاسختون. من برای اینکه شماره فرمولها انگلیسی نشه دستور

‎\PersianMathsDigits‎

رو قرار دادم. اگر محیط latin رو حذف کنید باید تک تک خانه های جدول رو چپ چین کنید که هم زمان بره و هم جدول رو خیلی شلوغ میکنه.
عنوان: پاسخ : ایجاد شمارنده برای حروف فارسی
رسال شده توسط: وحید دامن‌افشان در آوریل 09, 2013, 12:42:10 am
ممنون از پاسختون. من برای اینکه شماره فرمولها انگلیسی نشه دستور
‎\PersianMathsDigits‎
رو قرار دادم. اگر محیط latin رو حذف کنید باید تک تک خانه های جدول رو چپ چین کنید که هم زمان بره و هم جدول رو خیلی شلوغ میکنه.
چرا اصرار دارین که از محیط tabular و latin استفاده کنین؟ چیزی که شما می‌خواین، به راحتی با استفاده از محیط array به دست میاد. فایل پیوست رو ببینین.
در ضمن به دستور
\everymath{\displaystyle}هم دقت کنین که اضافه شده و کارش اینه که فرمول‌ها رو به صورت «نمایشی»، چاپ می‌کنه.
عنوان: پاسخ : ایجاد شمارنده برای حروف فارسی
رسال شده توسط: taherkhani در آوریل 10, 2013, 12:06:06 pm
سلام

ممنون از جوابتون

همیشه آدم باید راه کوتاه تر رو انتخاب کنه

 :) :)
عنوان: پاسخ : ایجاد شمارنده برای حروف فارسی
رسال شده توسط: vafa در آوریل 10, 2013, 12:34:51 pm
در ضمن به دستور
\everymath{\displaystyle}هم دقت کنین که اضافه شده و کارش اینه که فرمول‌ها رو به صورت «نمایشی»، چاپ می‌کنه.
درست نیست. دو قسمت داره:

الف) حروف‌چینی: فرمولهای inline باید inline باشند و فرمولهای display باید display باشند. زور کردن display برای inline حروف‌چینی را زشت می‌کند (یا بهتر بگم نشون می‌ده که طرف از حروف‌چینی چیزی نمی‌‌‌دونه). اگر display برای میان متن مناسب بود، knuth آن همه وقت صرف تحقیق و مطالعه در حروف‌چینی تک نمی‌کرد.

ب) استفاده نادرست از \everymath:
\documentclass{article}
\usepackage{xepersian}
\begin{document}
\everymath{\displaystyle}
$1+2=3$
\end{document}
به سر این نوشتار چی میاد؟ شما با این کار، تمام محتویات \everymath رو پاک می‌کنید. بسیاری از بسته‌ها از جمله xepersian-mathsdigitspec با \everymath کار می‌کنند و شما با این کارتون تمام تنظیمات این بسته‌ها رو از بین می‌برید. اگر واقعاً لازمه که دستور \everymath استفاده بشه، باید بصورت زیر استفاده بشه:
\everymath\expandafter{\the\everymath <new stuff>}
اینجوری شما ضمن اینکه تنظیمات خودتون رو اضافه می‌کنید، تنظیمات سایر بسته‌ها رو هم حفظ می‌کنید.
عنوان: پاسخ : ایجاد شمارنده برای حروف فارسی
رسال شده توسط: وحید دامن‌افشان در آوریل 10, 2013, 04:38:35 pm
درست نیست. دو قسمت داره:

الف) حروف‌چینی: فرمولهای inline باید inline باشند و فرمولهای display باید display باشند. زور کردن display برای inline حروف‌چینی را زشت می‌کند (یا بهتر بگم نشون می‌ده که طرف از حروف‌چینی چیزی نمی‌‌‌دونه). اگر display برای میان متن مناسب بود، knuth آن همه وقت صرف تحقیق و مطالعه در حروف‌چینی تک نمی‌کرد.

ب) استفاده نادرست از \everymath:
\documentclass{article}
\usepackage{xepersian}
\begin{document}
\everymath{\displaystyle}
$1+2=3$
\end{document}
به سر این نوشتار چی میاد؟ شما با این کار، تمام محتویات \everymath رو پاک می‌کنید. بسیاری از بسته‌ها از جمله xepersian-mathsdigitspec با \everymath کار می‌کنند و شما با این کارتون تمام تنظیمات این بسته‌ها رو از بین می‌برید. اگر واقعاً لازمه که دستور \everymath استفاده بشه، باید بصورت زیر استفاده بشه:
\everymath\expandafter{\the\everymath <new stuff>}
اینجوری شما ضمن اینکه تنظیمات خودتون رو اضافه می‌کنید، تنظیمات سایر بسته‌ها رو هم حفظ می‌کنید.
در مورد قسمت الف، کاملاً موافقم. به خاطر همین موضوع، دستور ‎‎(طبق گفته شما)
\everymath\expandafter{\the\everymath \displaystyle‎}رو داخل محیط ‎align‎ گذاشتم تا فقط روی همین یه محیط، تاثیر بذاره و همون‌طور که می‌دونین، بیرون این محیط، هیچ تاثیری روی بقیه فرمول‌ها نداره. آیا این کار هم مشکل پیش می‌یاره؟
در مورد راهنمایی قسمت ب هم خیلی ممنون. این موضوع رو نمی‌دونستم.
جالبه که ورد با اون همه سر و صدا، هیچ فرقی موقع حروف‌چینی بین فرمول ‎inline‎ ‎‎ و ‎display‎ نمی‌ذاره.