اولین بار است که به اینجا می‌آیید؟ راهنمای سایت را بخوانید!
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 شماره قسمت قسمت عنوان جدول
95 نفر آنلاین
0 عضو و 95 مهمان در سایت حاضرند
بازدید امروز: 84641
بازدید دیروز: 73184
بازدید کل: 25249737

شماره‌گذاری درست در لاتک برای اجرای فایل با بسته subfiles

0 رای
965 بازدید

با سلام و احترام

همانطور که مستحضر هستید، بسته subfiles نیز تقریبا عملکردی مشابه input دارد.
در کد زیر یک نمونه ساده را ملاحظه می‌فرمایید:

\documentclass{report}
\usepackage{subfiles}

\usepackage{xepersian}
\settextfont{XB Niloofar}

\begin{document}
\subfile{Chap1.tex}
\subfile{Chap2.tex}
\end{document}

که فصل 1 و 2 مطابق زیر هستند
Chapter1

\documentclass[main.tex]{subfiles}
\begin{document}
\chapter{فصل اول}
\end{document}

و Chapter2

\documentclass[main.tex]{subfiles}
\begin{document}
\chapter{فصل دوم}
\end{document}

حال با اجرای هر کدام از فایل‌ها می‌توان خروجی را به دست آورد. (هم main و هم تک تک فایل ها)
اما تنها نکته‌ای که هست این است که در صورتیکه فایل Chapter2 را اجرا کنیم، شماره‌گذاری‌ها از عدد 1 آغاز می‌شود.
آیا راه حلی وجود دارد که به صورت خودکار بتواند شماره فصل‌ها را نیز درست کند؟
با تشکر

سوال شده دی 14, 1395 توسط حسین بهبودی (797 امتیاز)
ویرایش شده دی 14, 1395 توسط وحید دامن‌افشان

3 پاسخ

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

اگر می‌خواهید این کار بصورت خودکار انجام بشه باید خودتون ماکرنویسی کنید. به عنوان نمونه اگر از یک سیستم مشخص برای نام‌گذاری فایل‌های فصل استفاده می‌کنید، می‌تونید در فایل اصلی کد زیر را بعد از فراخوانی بسته زی‌پرشین قرار دهید:

\makeatletter
\@ifclassloaded{subfiles}{%
\edef\removeChapi{\expandafter\@gobble\jobname}
\edef\removeChapii{\expandafter\@gobble\removeChapi}
\edef\removeChapiii{\expandafter\@gobble\removeChapii}
\edef\removeChapiv{\expandafter\@gobble\removeChapiii}
\bidi@patchcmd{\@chapter}{\refstepcounter{chapter}}
{\setcounter{chapter}{\removeChapiv}}
{}{}
}{}
\makeatother

خیلی راحت می‌تونید این کد رو برای سایر کلاس‌های مورد استفاده نیز گسترش بدهید. همانطور که گفتم باید مقداری ماکرونویسی کنید.

پاسخ داده شده دی 14, 1395 توسط وفا (24,432 امتیاز)
انتخاب شده دی 15, 1395 توسط حسین بهبودی
ممنون از محبتتان
جناب دکتر وفای عزیز اولا ممنون بابت پاسخگویی
این ماکرو که نوشتید دقیقا همان کاری که من میخاهم را انجام می‌دهد.
متاسفانه بنده ماکرو نویسی بلد نیستم
کد حضرتعالی را هم کامل متوجه نمیشوم
در صورت امکان به صورت مختصر کاری که این کد انجام میدهد را توضیح بفرمایید زیرا الان دو مساله وجود دارد:
1. نام فایل‌ها فقط باید chap.. باشد (که البته با توجه به توضیحات شما هم این ماکرو در صورتی درست اجرا میشود که نام فایل ها از یک الگوی یکسان عمل کند اما دلیل آن چیست؟)
2. از دستور \input دیگر نمیتوان استفاده کرد
یعنی \input chapter2 خطا میدهد
@حسین بهبودی
با کمک این ماکرو اسامی فایل‌ها باید چهارحرفی باشد که در ادامه شماره فصل مورد نظر شما را خواهد داشت حال مهم نیست که chap باشد یا test و یا هر چیز دیگر. همانطوری که خود متوجه شده‌اید در حالت دوم که پرسیده‌اید اسم بیش از چهارحرف است و لذا خطا می‌دهد.
@وفا
عالی بود.

فقط یک سوال لازم نبود که \refstepcounter هم استفاده شود؟ به عبارت دیگر الان \ref به این شمارنده کار خواهد کرد؟
@سید جواد
ممنون
دلیل اینکه از دستور input دیگر نمی‌توان استفاده کرد چیست؟
+1 رای

خوب واقعاً این بسته از کجا باید بفهمید که وقتی شما دارید فلان فایل را کامپایل می‌نمایید دقیقا منظورتان کدام فایل است؟!!

تنها راهی که فعلا به بذهنم می‌رسد این است که به طور دستی ابتدای هر فصلتان شمارنده فصل را با عدد دلخواه تنظیم نمایید تا زمانی که فایل را به صورت مجزا نیز کامپایل می‌نمایید به نظر شما ترتیبش درست آید لکن خیلی کار درستی نیست. برای مثال قبل از شروع سند فایل دوم دستور ذیل را قرار دهید:

\setcounter{chapter}{1}

فایل نهایی به صورت زیر خواهد بود:

\documentclass[main.tex]{subfiles}
\setcounter{chapter}{1}
\begin{document}
\chapter{فصل دوم}
\end{document}
پاسخ داده شده دی 14, 1395 توسط سید جواد (4,427 امتیاز)
من متاسفانه فرصت نکردم راهنمای کامل این بسته را بخوانم.
ولی اگر اینطور اجرا بشود که بتواند تنها متن داخل subfile ها را نیز سرچ کند و در صورت استفاده از chapter، یک بار کانتر آن را اضافه کند، می تواند این اتفاق که مد نظر بنده‌است بیفتد.
ضمنا ممنون از توجه شما
+1 رای

کدهای بسته subfiles رو نگاه کردم. تا اونجایی که من دیدم، چنین قابلیتی وجود نداره. با وجود این می‌تونید برای تغییر شمارنده فصل، دستور

\setcounter{chapter}{1} 

رو قبل از دستور

\chapter{فصل دوم}

قرار بدید تا شمارنده فصل یکی بیشتر بشه.
پیشنهاد خودم اینه که از دستور خیلی مفید \includeonly استفاده کنید. توی همه کتاب‌هام از این دستور استفاده کردم.

پاسخ داده شده دی 14, 1395 توسط وحید دامن‌افشان (6,497 امتیاز)
ممنون از شما
...