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

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

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

ترتیبی کردن شماره فصل در فهرست مطالب در استایل دانشگاه تبریز

0 رای
2,172 بازدید

سلام به همه
من دارم از سبک دانشگاه تبریز استفاده می‌کنم. می‌خوام توی فهرستم شماره فصل‌ها ترتیبی باشه. قبلا توی سبک کتاب (book) از این کد:

\usepackage{fmtcount}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@chapter}{\addcontentsline{toc}{chapter}
 {\protect\numberline{\thechapter}#1}}{\addcontentsline{toc}{chapter}
{\protect{\numberline{\chaptername~\tartibi{chapter} #1}}}}{}{}
\makeatother

استفاده می‌کردم. حالا باید چه کار کنم؟

فایل‌های پیوست
سوال شده آذر 3, 1393 توسط Asal.Tatar (48 امتیاز)
ویرایش شده آذر 7, 1393 توسط وحید دامن‌افشان
فصل پیوست هم دارید؟ شماره پیوست‌ها توی فهرست مطالب باید به چه صورت باشه؟
بانو تاتار، مگر همین کد در پایانامه تبریز کار نمی‌کند؟ در صورتی که کار نمی‌کند، لطفاً یک فایل کمینه قرار دهید.
راستی بسته xepersian بسته bidi را فراخوانی می‌کند و بسته bidi هم بسته‌ای به نام biditools را. بنابراین احتیاجی به استفاده از بسته etoolbox نیست و می‌توانید به جای استفاده از \patchcmd از دستور \bidi@patchcmd استفاده نمایید.
پیوست‌ها به صورت حروف باشن آقای دامن‌افشان.

1 پاسخ

+3 رای
 
بهترین پاسخ

در این پاسخ فرض می‌کنم که کلاس tabriz-thesis از کلاس report استفاده می‌کند (این در اصل موضوع تغییری اجاد نمی‌کند). اول اینکه همانطور که در نظرم در پایین پرسش شما گفتم احتیاجی به بسته etoolbox نیست. بسته xepersian از بسته bidi استفاده می‌کند و بسته bidi بسته biditools را بصورت خودکار فراخوانی می‌کند. بسته biditools بسیاری امکانات برنامه‌نویسی را در اختیار شما قرار می‌دهد که متأسفانه در راهنما برای آن توضیحی وجود ندارد. همانطور که گفتم به جای دستور \patchcmd از دستور \bidi@patchcmd استفاده می‌کنیم. دستور \bidi@patchcmdی که من قرار است در اینجا استفاده کنم شکل کلی زیر را دارد:

\bidi@patchcmd{command}{search}{replace}{success}{failure}

که آرگومان‌ها آن را با ذکر مثال، توضیح خواهم داد. برای تغییری که شما مدنظر دارید، ما باید تعریف دستور \@chapter را تغییر دهیم. این دستور در فایل report.cls بصورت زیر تعریف شده است:

\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
                         \refstepcounter{chapter}%
                         \typeout{\@chapapp\space\thechapter.}%
                         \addcontentsline{toc}{chapter}%
                                   {\protect\numberline{\thechapter}#1}%
                    \else
                      \addcontentsline{toc}{chapter}{#1}%
                    \fi
                    \chaptermark{#1}%
                    \addtocontents{lof}{\protect\addvspace{10\p@}}%
                    \addtocontents{lot}{\protect\addvspace{10\p@}}%
                    \if@twocolumn
                      \@topnewpage[\@makechapterhead{#2}]%
                    \else
                      \@makechapterhead{#2}%
                      \@afterheading
                    \fi}

برای تغییری که شما مدنظر دارید، ما باید در تعریف دستور \@chapter

\addcontentsline{toc}{chapter}%
{\protect\numberline{\thechapter}#1}%

را با

\addcontentsline{toc}{chapter}%
{\protect\numberline{\chaptername~\tartibi{chapter}}#1}%

جایگزین کنیم. یک راه تعریف دوباره دستور \@chapter است که ممکن است خیلی طولانی باشد. بنابراین بسته biditools دستور \bidi@patchcmd را در اختیار شما قرار می‌دهد که در بالا شکل کلی آن ذکر شد. آرگومان اول یا همان command دستوری است که می‌خواهیم تعریفش را عوض کنیم. آرگومان دوم یا serach تکه کدی است در تعریف command که می‌خواهیم دنبالش بگردیم و آن را با آرگومان سوم جایگزین کنیم. آرگومان چهارم در صورتی اجرا خواهد شد که command به درستی از دوباره تعریف شده باشد و آرگومان پنجم در صورتی اجرا خواهد شد که command به درستی از نو تعریف نشده باشد. با همه این توضیحات پاسخ پرسش شما این خواهد بود:

\documentclass{report}
\usepackage{xepersian}
\settextfont{Yas}
\makeatletter
\bidi@patchcmd{\@chapter}{%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\thechapter}#1}%
}{%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\chaptername~\tartibi{chapter}}#1}%
}{\typeout{We succeded in redefining \string\@chapter}}
{\typeout{We failed in redefining \string\@chapter}}
\bidi@patchcmd{\l@chapter}{%
\setlength\@tempdima{1.5em}%
 }{%
\setlength\@tempdima{4em}%
}{\typeout{We succeded in redefining \string\l@chapter}}
{\typeout{We failed in redefining \string\l@chapter}}
\makeatother
\begin{document}
\tableofcontents
\chapter{همینجوری}
\end{document}

همانطور که در بالا می‌بینید من تعریف دستور \l@chapter را نیز تغییر داده‌ام تا «فصل اول» با «همینجوری» تداخل نداشته باشد. مقدار \@tempdima برابر با 1.5em بوده است که من آن را به 4em افزایش داده‌ام. در ترمینال و فایل .log متن زیر ظاهر می‌شود:

We succeded in redefining \@chapter
We succeded in redefining \l@chapter

که به ما می‌گوید ماکروهای \@chapter و \l@chapter به درستی تغییر یافته‌اند.


کلاس tabriz-thesis

وقتی در نمونه بالا از کلاس tabriz-thesis استفاده می‌کنیم:

\documentclass{tabriz-thesis}
\usepackage{xepersian}
\settextfont{Yas}
\makeatletter
\bidi@patchcmd{\@chapter}{%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\thechapter}#1}%
}{%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\chaptername~\tartibi{chapter}}#1}%
}{\typeout{We succeded in redefining \string\@chapter}}
{\typeout{We failed in redefining \string\@chapter}}
\bidi@patchcmd{\l@chapter}{%
\setlength\@tempdima{1.5em}%
 }{%
\setlength\@tempdima{4em}%
}{\typeout{We succeded in redefining \string\l@chapter}}
{\typeout{We failed in redefining \string\l@chapter}}
\makeatother
\begin{document}
\tableofcontents
\chapter{همینجوری}
\end{document}

در ترمینال و فایل .log پیغام زیر ظاهر می‌شود:

We failed in redefining \@chapter
We succeded in redefining \l@chapter

که گویای این است که دستور \@chapter به درستی تعریف نشده است. مشکل از کجاست؟ کلاس tabriz-thesis از بسته hyperref استفاده می‌کند (بگذریم که این کار اشتباه است و این کلاس انتخاب خودش رو به کاربر تحمیل می‌کنه) و درایور بسته hyperref برای xetex به نام hxetex.def فراخوانی می‌شود. در این فایل تعریف \@chapter تغییر یافته است و به همین خاطر نمونه ما برای کلاس tabriz-thesis کار نمی‌کند. راه‌حل چیست؟ راه‌حل ساده است و آن اینکه از ماکروی معادل \@chapter بسته hyperref به جای \@chapter استفاده کنیم و آن ماکرو \Hy@org@chapter\ است. بنابراین فایل زیر به خوبی کار می‌کند:

\documentclass{tabriz-thesis}
\usepackage{hyperref}
\usepackage{xepersian}
\settextfont{Yas}
\makeatletter
\bidi@patchcmd{\Hy@org@chapter}{%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\thechapter}#1}%
}{%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\chaptername~\tartibi{chapter}}#1}%
}{\typeout{We succeded in redefining \string\@chapter}}
{\typeout{We failed in redefining \string\@chapter}}
\bidi@patchcmd{\l@chapter}{%
\setlength\@tempdima{1.5em}%
 }{%
\setlength\@tempdima{4em}%
}{\typeout{We succeded in redefining \string\l@chapter}}
{\typeout{We failed in redefining \string\l@chapter}}
\makeatother
\begin{document}
\tableofcontents
\chapter{همینجوری}
\end{document}

پاسخ داده شده آذر 3, 1393 توسط وفا (24,432 امتیاز)
انتخاب شده آذر 3, 1393 توسط Asal.Tatar
سلام
ببخشید دیر شد. ممنون از جواب کامل و قشنگتون. خیلی دوست داشتم بدونم این کدها چه طوری عمل می‌کنند. چه طوری می‌تونم استفاده از این کدها را یاد بگیرم تا برای کارهام استفاده کنم. کتابی هست؟ بازهم از جواب خیلی قشنگتون  تشکر می‌کنم.
اما این کد روی کلاس tabriz-thesis کار نمی‌کنه.
چون نمی‌دونستم چه طوری باید فایل کمینه بفرستم، سوالم رو ویرایش کردم.
خیلی ممنون
من پاسخ خودم را ویرایش کردم. انتهای پاسخم رو اگر ببینید در مورد کلاس tabriz-thesis توضیح دادم. منظورتون کدهایی مثل \bidi@patchcmd هست؟ یا \@chapter؟ کدومشون رو می‌خواهید یاد بگیرید؟
خیلی ممنون درست شد. کدهایی مثل \bidi@patchcmd .
ممکن است بدانید یا ندانید که من مولف بسته زی‌پرشین هستم. همچنین من مولف بسته bidi هستم که بسته biditools هم جزیی از آن است. بنابراین تمام کدها توسط من نوشته شده است و متأسفانه من تنها شخصی هستم که می‌دانم کدها چگونه کار می‌کنند. متأسفانه من کمی تنبل هستم و راهنمایی در این مورد وجود ندارد. اگر دوست داشتید و خواستید راهنمایی در این مورد نوشته شود، می‌توانید به من به آدرس persian-tex@tug.org ایمیل کنید من تمام دستورات را با ایمیل به شما توضیح خواهم داد و شما هم راهنما را بنویسید تا دیگران نیز از آن استفاده کنند.
وااای خدای من! راستی؟
گفتم کسی که این سوالا را جواب میده باید آدمه بزرگی باشه. نمی دونم چرا آدما علمشون که زیادتر میشه اینقدر متواضع میشن.
حتما، فکر خیلی خوبیه. فکر کنم بعد از دفاعم بتونم این کارو بکنم که منم در کار بزرگ شما سهمی داشته باشم.
خیلی ممنون
من یک پرسش ایجاد کرده‌ام که پاسخ آن به مرور زمان تکمیل می‌شود: http://qa.parsilatex.com/1159/
...