اولین بار است که به اینجا می‌آیید؟ راهنمای سایت را بخوانید!
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 تصویر شمارنده texlive2015 longtable زیرنویس خطا رسم نمودار شماره‌گذاری صفحات پایان نامه دیاگرام فهرست جداول میک‌تک texlive2016 تنظیم جدول kashida texworks caption اندیس lollipop iust-thesis multicol فصل‌نویسی شعر سوال چهارگزینه‌ای بولد تورفتگی آکولاد اعداد فارسی فاصله عمودی xindy چپ‌چینی اوبونتو میکروسافت ورد قاب geometry fancyhdr تک لایو 2015 عنوان بخش به‌روزرسانی بسته aimc46 صفر توخالی فرمول طولانی بیرون‌زدگی texlive کاما وسط‌چینی پوستر شماره گذاری فاصله سطرها نوشتافت شکست خط tex-programming فونت اعداد pgfplots قرآن tabriz-thesis ایتالیک winedt جستجوی معکوس xelatex فلش جایابی تصویر tcolorbox قالب کتاب پاراگراف‌بندی بازیابی اطلاعات هایپرلینک فهرست نمادها شمارنده فصل محیط ریاضی رسم کادر جداکننده جدول طولانی فهرست تصاویر شماره‌گذاری فرمول algorithm2e font فونت بولد proof equation bidipoem eps جدول افقی عکس به‌روزرسانی پانویس چندستونی کمک مالی فاصله خطوط حروف‌چینی شعر زیرشکل minipage قلم پانویس پاراگرافی ltrfootnote پیوست computeautoilg متن فارسی و انگلیسی فرمول چندخطی neveshtuft غلط‌گیری املایی تک‌پارسی پیکان لاتکس tabular baselineskip شماره قسمت قسمت عنوان جدول
9 نفر آنلاین
0 عضو و 9 مهمان در سایت حاضرند
بازدید امروز: 3647
بازدید دیروز: 12293
بازدید کل: 20633284

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

0 رای
658 بازدید

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

همانطور که مستحضر هستید، بسته 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,380 امتیاز)
انتخاب شده دی 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,487 امتیاز)
ممنون از شما
...