با سلام
امروز استادم یک سوال عجیب پرسید که به نظرم خیلی مشکوک بود.
جدول و شکل، محیطهای شناور هستن. لاتک برای قرار دادن اونا توی صفحات، اونا رو توی صف انتظار میذاره و هر وقت توی یه صفحهای جای مناسبی رو پیدا کنه، شکلها رو یکی یکی قرار میده. متاسفانه (یا خوشبختانه!) لاتک، موقع قرار دادن محیطهای شناور، نوبت رو رعایت نمیکنه؛ یعنی مثلاً ممکنه شناوری که قبل از همه، کدش توی فایل ورودی اومده، توی فایل خروجی، در مکان چهارم قرار بگیره.
حالا بعضی وقتها، این صف خیلی شلوغ میشه و در نتیجه، لاتک رفتار عجیبی از خودش نشون میده.
من تا حالا ندیدم که محیطهای شناور یه فصل (در کلاس book) روی شناورهای فصلهای بعد تاثیر بذاره. مگر اینکه کاربر، دستورا و بستهها رو درست استفاده نکنه.
اما راهحل:
۱- اگه کتاب، تالیفی هستش و دست نویسنده باز هست، سعی کنین بین محیطهای شناور، متن هم بکار ببرین؛ به عبارت دیگه، چند تا محیط شناور بزرگ رو پشت سر هم قرار ندین.
۲- از آرگومانهای t,b,h و... (یا ترکیبی از اونا) به درستی استفاده کنین. دقت داشته باشین که موقع استفاده از مثلاً آرگومان h (here)، شما در واقع به لاتک میگین که
"put the float here if it’s OK with you"
یعنی به لاتک میگین که «این محیط شناور رو اگه از نظرت مشکلی نداره، بذارش اینجا». بنابراین لاتک، بعضی وقتها، تصمیم شما (استفاده از h) رو نادیده میگیره و بر مبنای تصمیم خودش، شناورها رو قرار میده.
۳- استفاده دستی از دستور \clearpage: بعضی وقتها که صف انتظار شلوغ میشه، با این دستور، به لاتک میگین که شناور(های) قبل از این دستور رو استثنائاً از صف بیرون بکشه و توی خروجی قرار بده.
۴- عوض کردن جای کدهای شناورها در فایل سورس: اگه توی فایلتون از دستورهای \label و \ref استفاده کرده باشین، لزومی نداره که محیط شناور همون جایی که توی ورودی اومده، توی خروجی هم ظاهر شده. گاهی وقتها میشه بین اشاره (ارجاع) محیط شناور در خروجی و خود محیط شناور در خروجی، چند صفحه فاصله میافته که کاملاً طبیعیه. نکته خیلی مهمی که در اینجا وجود داره، اینه که هیچوقت نباید محیط شناور قبل از ارجاعش توی خروجی، ظاهر بشه.
۵- استفاده از بسته float و آرگومان H: با این آرگومان به لاتک میگین که
put it HERE, period!
یعنی شناور رو بذار اینجا، بحث هم نکن! برای اطلاعات بیشتر، راهنمای بسته رو بخونین.
معنی period توی فرهنگ لغت Longman:
used to emphasize that you have made a decision and that you do not want to discuss the subject any more
در ضمن، تعریف دستور \chapter در کلاس book، با خط
\if@openright\cleardoublepage\else\clearpage\fi
شروع میشه. یعنی در هر حالتی (به غیر از حالت استفاده از گزینه openany) خودش یه \clearpage وارد میکنه. بنابراین فرقی بین استفاده از دستور \input و \include برای وارد کردن «فصلها» وجود نداره.
امیدوارم که این مطالب، بهتون کمک کنه.
@آقا هادی: اینو برعکش گفتی. اگه به تعریف دستور \include نگاه کنی، میبینی که توش از دستور \clearpage استفاده شده. توی \input از این دستور استفاده نشده.
اگه اشتباهی توی صحبتهام هست، لطفاً دوستان اصلاحش کنن.