تالار گفتگوی پارسیلاتک
لاتک LATEX => حروفچینی مستندات => نويسنده: فرشاد ترابی در سپتامبر 30, 2012, 09:45:32 pm
-
با سلام
امروز استادم یک سوال عجیب پرسید که به نظرم خیلی مشکوک بود.
موضوع اینه که میگفت من دارم یک کتاب مینویسم که دارای چندین فصل است. همه ی این فایلها داخل یک فایل مرجع قرار گرفته اند به صورت زیر
\begin{document}
\input{chp-1}
\input{chp-2}
\input{chp-3}
\end{document}
حالا نکته اینجاست! وقتی که تک تک فصلها را پردازش میکنم (مثلا فصلهای 1 و 2 را در این فایل با علامت درصد حذف میکنیم)،
حروفچینی به یک فرمت خاص در میاد و شکلها و جداول سر جای خود هستند.
حال اگر تمامی فصلها را باهم پردازش کنیم، حروفچینی عوض شده و شکلها و جدولها جابجا میشوند.
آیا این امکانپذیر است؟
(یک نکته! از آنجا که آوردن چنین مثالی امکان پذیر نبود نتونستم فایل نمونه ارسال کنم)
-
اولا آوردن به صورت input فکر کنم خوب نیست. صفحهی خالی میندازه. بهتره از include استفاده بشه.
اگر اشتباه میگم لطفا دوستان بگن.
بله این مورد را من هم دیدم.
موردی بود که:
۱- فایل خطا داشت
۲- دستورهای def و ... را در داخل فایلهای فصل آورده بود و مشکلدار شده بود.
اما TeX در حالت معمول و استفادهی درست، این مشکل را نداره.
-
با سلام
امروز استادم یک سوال عجیب پرسید که به نظرم خیلی مشکوک بود.
موضوع اینه که میگفت من دارم یک کتاب مینویسم که دارای چندین فصل است. همه ی این فایلها داخل یک فایل مرجع قرار گرفته اند به صورت زیر
\begin{document}
\input{chp-1}
\input{chp-2}
\input{chp-3}
\end{document}
حالا نکته اینجاست! وقتی که تک تک فصلها را پردازش میکنم (مثلا فصلهای 1 و 2 را در این فایل با علامت درصد حذف میکنیم)،
حروفچینی به یک فرمت خاص در میاد و شکلها و جداول سر جای خود هستند.
حال اگر تمامی فصلها را باهم پردازش کنیم، حروفچینی عوض شده و شکلها و جدولها جابجا میشوند.
آیا این امکانپذیر است؟
(یک نکته! از آنجا که آوردن چنین مثالی امکان پذیر نبود نتونستم فایل نمونه ارسال کنم)
اگر از محیط table و figure استفاده کرده کاملاً طبیعی است چون این محیطها شناور هستند.
-
اگر از محیط table و figure استفاده کرده کاملاً طبیعی است چون این محیطها شناور هستند.
مسلماً از این محیطها استفاده شده ولی نکته اینجاست که مگر هر فصلی که پردازش میشود،
از یک صفحه جدید شروع نمیشود؟ پس در حروفچینی چرا باید شکلها جابجا شوند؟
این نکته مثل این است که بگیم مثلاً اگر یک متن دوبار پردازش شود ممکن است دوتا نتیجه مختلف بدهد؟
آیا این حرف صحیح است؟
-
اولا آوردن به صورت input فکر کنم خوب نیست. صفحهی خالی میندازه. بهتره از include استفاده بشه.
اگر اشتباه میگم لطفا دوستان بگن.
بله این مورد را من هم دیدم.
موردی بود که:
۱- فایل خطا داشت
۲- دستورهای def و ... را در داخل فایلهای فصل آورده بود و مشکلدار شده بود.
اما TeX در حالت معمول و استفادهی درست، این مشکل را نداره.
تا آنجا که من اطلاع دارم، include صفحه خالی میاندازه و input اینطوری نیست مانند فایل ضمیمه. اگر منظورتان را اشتباه فهمیدم لطفا راهنمایی کنید.
در مورد نکته دوم هم باید به استادم بگم و آنرا چک کند. ولی از آنجا که ایشان در زمینه تعریف ماکرو حرفه ای نیست احتمال پایینی برای آن
وجود دارد. ولی بازهم چک میکنم و خبر میدهم.
ممنون از راهنمایی.
-
با سلام
امروز استادم یک سوال عجیب پرسید که به نظرم خیلی مشکوک بود.
جدول و شکل، محیطهای شناور هستن. لاتک برای قرار دادن اونا توی صفحات، اونا رو توی صف انتظار میذاره و هر وقت توی یه صفحهای جای مناسبی رو پیدا کنه، شکلها رو یکی یکی قرار میده. متاسفانه (یا خوشبختانه!) لاتک، موقع قرار دادن محیطهای شناور، نوبت رو رعایت نمیکنه؛ یعنی مثلاً ممکنه شناوری که قبل از همه، کدش توی فایل ورودی اومده، توی فایل خروجی، در مکان چهارم قرار بگیره.
حالا بعضی وقتها، این صف خیلی شلوغ میشه و در نتیجه، لاتک رفتار عجیبی از خودش نشون میده.
من تا حالا ندیدم که محیطهای شناور یه فصل (در کلاس 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 از این دستور استفاده نشده.
اگه اشتباهی توی صحبتهام هست، لطفاً دوستان اصلاحش کنن.
-
آقا وحید دست شما درد نکنه. نکات شما بسیار زیبا و با حوصله نوشته شده.
من اینها را به استادم میدم و ازشون میخوام که چک کنند. بیشترین احتمال را روی
استفاده نادرست از htbp میدونم. چون ایشان به شدت از این کلیدها استفاده میکنه و ممکنه که ترکیبهای زیادی را
تست کرده باشه.
من خودم هیچ گزینه ای به تک نمیدم و معمولاً خودش t رو انتخاب میکنه و محیطهای شناور را در top قرار میده.
در مورد این نکته که input و include فرقی نمیکنند با شما موافقم و همچنین در دو پردازش متفاوت یک فایل دلیلی نداره که
دو خروجی مختلف ظاهر بشه به همین دلیل خروجی هنگام پردازش یک فصل نباید با پردازش چندین فصل متفاوت باشه.
بازهم از توضیحات کامل شما و وقتی که گذاشتین تشکر میکنم.
-
من خودم تا حالا دو تا کتاب نوشتم و راه حلی (شاید اشتباه باشد) که برای خودم انتخاب کردم این بود خودم شمارنده تعریف کردم و بجای محیطهای شناور برای شماره گذاری از شماره گذاری خودم استفاده کردم
-
یعنی عکس و جدول را در محیطهای غیرشناور که خودتان تعریف کردید قرار دادید؟
اگر درست متوجه شده باشم به این معنی است که کلیف جانمایی آنها هم با خود شما بوده؟
این کار که خیلی سخته نه؟!