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

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

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

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

0 رای
62 بازدید

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

همانطور که مستحضر هستید، بسته 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 توسط وفا (19,985 امتیاز)
انتخاب شده دی 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 توسط سید جواد (3,501 امتیاز)
من متاسفانه فرصت نکردم راهنمای کامل این بسته را بخوانم.
ولی اگر اینطور اجرا بشود که بتواند تنها متن داخل subfile ها را نیز سرچ کند و در صورت استفاده از chapter، یک بار کانتر آن را اضافه کند، می تواند این اتفاق که مد نظر بنده‌است بیفتد.
ضمنا ممنون از توجه شما
+1 رای

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

\setcounter{chapter}{1} 

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

\chapter{فصل دوم}

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

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