تالار گفتگوی پارسی‌لاتک

لاتک LATEX => عمومی => نويسنده: habib_seif در نوامبر 12, 2009, 10:03:36 pm

عنوان: تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: habib_seif در نوامبر 12, 2009, 10:03:36 pm
با سلام خدمت دوستان گرامی

در حال حاضر مشغول تایپ مقاله ای هستم که فایل cls آن با بسته multicols سازگار نیست. بنابراین برای تغییر تعداد ستون ها باید از دستورات twocolumn\ و onecolumn\ استفاده کنم ولی مشکل این فرمان ها این است که بعد از هر کدام از این دستورها صفحه شکسته شده که مطلوب من نیست. چگونه می توانم در دستورات فوق از شکست صفحه جلوگیری کنم؟

با تشکر فراوان
سیدحبیب سیف زاده
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: محمود امین‌طوسی در نوامبر 12, 2009, 11:01:55 pm
سلام.
آیا این مثال را که با زی‌پرشین است (http://www.parsilatex.com/joomla/index.php?option=com_content&view=article&id=62:1388-07-02-13-51-40&catid=41:1388-06-28-10-27-50&Itemid=74) و در یک مقاله دوستونی، در یک صفحه خلاصه مقاله به صورت یک ستونی  و متن دوستونی است، دیده‌اید؟
سؤالتان را واضح‌تر بیان فرمایید.
آیا اصل سند دوستونی است؟ برای چه قسمتهایی می‌خواهید یک ستونی باشد؟ مثلا اگر مشکل شما با جدول و شکل است، فرم ستاره‌دار آنها مشکل شما را برطرف می‌کند.
اگر مشکلتان برطرف نشد، یک مثال کوچک ضمیمه نمایید.
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: habib_seif در نوامبر 12, 2009, 11:44:37 pm
اولا از جواب شما ممنونم....

مقاله ای که ارسال نموده اید در حالتی است که بخواهیم یک مقدمه تک ستونی را در ابتدای یک متن دوستونی بنویسیم که به نظرم بهترین روش برای این کار [twocolumn[my text\ باشد. ولی در مورد مقاله من متن تک ستونی در ابتدای متن نیست...

همانطور که جنابعالی حدس زده اید کل متن دوستونی (IEEEtran) است که در وسط آن می خواهم جدولی را نشان دهم که عرض آن به اندازه پهنای کاغذ و طول آن در چند صفحه گسترش پیدا کند. به دلیل اینکه طول جدول بیش از یک صفحه است از بسته longtable استفاده نموده ام که تا آنجا که اطلاع دارم نسخه ستاره دار ندارد. بنابراین مجبور بوده ام قبل از جدول با دستور onecolumn\ به لاتک بگویم که جدول را تک ستونی نشان دهد و این کار باعث شده جدول از صفحه بعد شروع شود.

چیزی که دقیقا می خواهم در لاتک تولید شود را در اپن آفیس ساختم که به پیوست ضمیمه است. امیدوارم توضیحات واضح باشد. اگر اطلاعات دیگر مانند فایل تک مورد نیاز است بفرمایید.

باتشکر
سیف زاده
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: vafa در نوامبر 13, 2009, 04:05:37 am
می‌تونی فایل cls را بفرستی تا نگاه کنم. در حالت کلی بستهٔ multicol در گزینهٔ دوستونی یک طبقهٔ نوشتار کار نخواهد کرد.
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: محمود امین‌طوسی در نوامبر 13, 2009, 10:55:08 am
من چیزی به ذهنم نمی‌رسد. البته اگر فایل لاتک را می‌فرستادید بهتر بود. در کل توصیه می‌شود که تصاویر و جداول در بالای صفحه قرار گیرند. که همان چیزی است که در حال حاضر دارید.
-  با clearpage و کمی جابجایی محل جدول در سندتان مشکل خالی ماندن صفحه قبل باید حل شود.
- اگر مقاله برای داوری ارسال می‌شود، احتمالاً مشکلی نداشته باشد که جدول را به آخر منتقل کنید.
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: habib_seif در نوامبر 13, 2009, 02:15:30 pm
اولا از اینکه مهربانانه و سریع به سئوالات پاسخ می دهید کمال تشکر را دارم. به نظر من این گروه از لحاظ تعداد پاسخ به سئوالات حرف اول را می زند...

راستش نمی خواستم با پرحرفی سر دوستان را درد بیارم ولی مثل اینکه مجبورم این کار را بکنم...

مقاله ای در حال نوشتن دارم که فعلا مشخص نشده برای چه مجله ای خواهم فرستاد: IEEE یا ACM یا Springer یا ... بنابراین نمی دانم که کل مقاله تک ستونی است یا دو ستونی. چیزی که الان مشخص است این است که در وسط این مقاله جدولی دارم که می خواهم حتما تک ستونی باشد. دو دلیل هم برای این کار دارم: یکی اینکه عرض جدول زیاد است و دوم اینکه جدول را با longtable ساخته ام و longtable فقط در حالت تک ستونی کار می کند. بنابراین نیاز داشتم که محیطی مثلا به نام OneColumn داشته باشم که جدول را درون آن قرار دهم. هرچه گشتم چنین محیطی وجود نداشت مثلا بسته multicols فقط محیط هایی برای ستون های ۲ و بیشتر دارد. بنابراین این محیط را خودم به همراه دوستان LaTeX Community ایجاد کردم که به این صورت است:
\newcommand*{\restorecolumns}{}
\makeatletter
\newenvironment*{OneColumn}{%
   \if@twocolumn
      \balance
      \let\restorecolumns\twocolumn
      \onecolumn
   \else
      \let\restorecolumns\@empty
   \fi
   \ignorespaces
}{%
   \nobalance   
   \restorecolumns
   \ignorespacesafterend
}
\makeatother

این محیط خیلی خوب وظیفه خود را عمل می کند و اما مشکل....
اگر محیط OneColumn را در یک قالب تک ستونی استفاده کنم به دلیل اینکه هم خود مقاله و هم جدول تک ستونی هستند بین جدول و متن مقاله هیچ فاصله ای نمی افتد و خیلی عالی جواب می دهد ولی اگر محیط OneColumn را در یک قالب دو ستونی مانند IEEEtran استفاده کنم سوییچ کردن بین تک ستونی و دو ستونی باعث می شود که قبل و بعد از جدول صفحه شکسته شود که خیلی فضا هدر خواهد رفت

بنابراین اگر بتوانیم کاری کنیم که دستورات twocolumn\ و onecolumn\ باعث شکت صفحه نشوند این مشکل رفع می شود. این همان سئوالی است که اول پرسیده بودم.

ضمنا یک متن ساده و یک جدول تک ستونی را یک بار با قالب article و یک بار با قالب IEEE ساختم که مشکل را ملاحضه بفرمایید. قالب IEEEtran را هم ضمیمه کردم.

باتشکر
سیف زاده
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: vafa در نوامبر 13, 2009, 02:36:44 pm
مشکلی که در مورد جدول اشاره کردی دقیقاً مشکل بسته longtable است به جای longtable از supertabular یا xtab استفاده کن.
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: vafa در نوامبر 13, 2009, 03:23:20 pm
این مثالی است که بستهٔ multicol در آن کار می‌کند و فکر می‌کنم همان چیزی باشد که انتظارش را داری.
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: habib_seif در نوامبر 13, 2009, 04:37:29 pm
جناب آقای وفا و سایر دوستان عزیز

در مورد استفاده از بسته های غیر از longtable باید بگم در مثالی که ارسال کردم فرقی بین longtable و supertabular وجود ندارد ولی نمی دانم چرا جدول واقعی فقط با longtable جواب می دهد؟؟؟ نمونه این جدول را ضمیمه می کنم

و اما در مورد مثالی که شما ارسال کردید این ایده را نمی توانم بکار ببرم زیرا نمی خواهم قالب سایر قسمتهای مقاله را دستکاری کنم. این ایده باعث می شود که حتی اگر قالب کلی IEEEtran هم نبود مقاله دوستونی باقی بماند. مضافا اینکه مثال شما به خاطر این جواب می دهد که متن دارای عنوان اسم نویسنده چکیده و ... نیست وگرنه دچار به هم ریختگی می شد...

حالا چه پیشنهادی برای این جدول دارید؟ آیا جدول را می شود به صورت دیگری با supertabular ساخت که دیگر نیازی به longtable و تک ستونی کردن آن نباشد یا راهی برای عدم شکست صفحات هنگام استفاده از onecolumn\ و twocolumn\ سراغ دارید تا همچنان از longtable اسفاده کنم؟

از لطف شما ممنون
سیف زاده
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: vafa در نوامبر 13, 2009, 05:27:10 pm
و اما در مورد مثالی که شما ارسال کردید این ایده را نمی توانم بکار ببرم زیرا نمی خواهم قالب سایر قسمتهای مقاله را دستکاری کنم. این ایده باعث می شود که حتی اگر قالب کلی IEEEtran هم نبود مقاله دوستونی باقی بماند. مضافا اینکه مثال شما به خاطر این جواب می دهد که متن دارای عنوان اسم نویسنده چکیده و ... نیست وگرنه دچار به هم ریختگی می شد...
۱- شما چجوری قالب قسمتهای مقاله را با مثالی که من فرستادم به هم می‌ریزید؟ من متوجه منظورتان نمی‌شوم.

۲- نه مقاله دستونی باقی نخواهد ماند، هر جا که شما از محیط multicols استفاده کنید دو ستونی خواهد بود و هر جا که استفاده نکنید یک ستونی خواهد بود.

۳- مثال زیر هم دارای عنوان، نام نویسنده و حتی چکیده است و هیچ به هم ریختگی وجود ندارد.
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: vafa در نوامبر 13, 2009, 05:40:12 pm
در مورد جدول هم راهنمای supertabular و xtab را مطالعه کنید. supertabular و xtab از longtable بهتر هستند.
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: habib_seif در نوامبر 13, 2009, 05:43:42 pm
حالا مثالی را که برای من فرستادید یک بار دیگر بدون اسفاده از multicol کامپایل کرده و تفاوت فونت در abstract را مشاهده کنید

سیف زاده
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: vafa در نوامبر 13, 2009, 05:47:11 pm
من تفاوتی نمی‌بینم و این موضوع را تمام شده تلقی می‌کنم. پیشنهاد می‌کنم قبل از نوشتن مقاله اول تک را یاد بگیری.
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: habib_seif در نوامبر 13, 2009, 06:26:31 pm
شرمنده که شما موضوع را تمام شده تلقی کردید ولی من باز پست دادم. ولی فکر می کنید در این دو مقاله ای که ارسال می کنم abstract ها یکسان است؟؟؟

درمورد یادگیری لاتک هم حق با شماست. من بسیار مبتدی بوده و راه طولانی را پیش رو دارم...

حالا اصلا فرض کنیم که multicol باعث هیچ بهم ریختگی نشود. با این مشکل چکار کنم؟؟؟:

... این ایده باعث می شود که حتی اگر قالب کلی IEEEtran هم نبود مقاله دوستونی باقی بماند.  ...

با کمال تشکر و عذرخواهی اگر از دست من ناراحت شده اید...
سیف زاده
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: vafa در نوامبر 13, 2009, 06:52:45 pm
از این دو مثالی که فرستاده‌اید، یکی همانند مال من است و در دیگری فقط برای چکیده کلمهٔ abstract به حالت bold و italic است و متن خود محیط abstract هم به حالت bold است. فکر کنم شما می‌خواهید به این حالت باشد والا فایل قبلی مناسب بود. این را می‌توان به راحتی حل کرد. فایل ضمیمه را نگاه کنید. در کل فکر نمی‌کنم این مسئله مهمی باشد.
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: vafa در نوامبر 13, 2009, 07:03:58 pm
در حقیقت این خود تعریف کلاسی است که استفاده می‌کنید، کلاس شما اگر از گزینهٔ یک ستونی یا دو ستونی استفاده کنید قلم متفاوتی را به کار خواهد گرفت. برای مثال در کلاسی که استفاده می‌کنید \abstract اینگونه تعریف شده است:

\def\abstract{\normalfont

    \if@twocolumn

      \@IEEEabskeysecsize\bfseries\textit{\abstractname}---\relax

    \else

      \begin{center}\vspace{-1.78ex}\@IEEEabskeysecsize\textbf{\abstractname}\end{center}\quotation\@IEEEabskeysecsize

    \fi\@IEEEgobbleleadPARNLSP}

بنابراین اگر از گزینهٔ دو ستونی استفاده کنید، قلم bold و italic برای کلمهٔ abstract خواهید داشت و  در صورتی که از گزینهٔ یک ستونی استفاده کنید، از قلم bold فقط برای کلمهٔ abstract استفاده خواهد شد به جای فایل قبلی که فرستادم می‌توانید تعریف بالا را درست کنید و آن را در پیش‌درآمد فایل خود قرار دهید:

\def\abstract{\normalfont

    \if@twocolumn

      \@IEEEabskeysecsize\bfseries\textit{\abstractname}---\relax

    \else

      \begin{center}\vspace{-1.78ex}\@IEEEabskeysecsize\bfseries\textit{\abstractname}\end{center}\quotation\@IEEEabskeysecsize

    \fi\@IEEEgobbleleadPARNLSP}
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: habib_seif در نوامبر 13, 2009, 07:09:51 pm
بسیار عالی...

سعی می کنم نهایتا abstract را مانند آنچه در فایل معمولی است در آورم و از multicol استفاده کنم. اگر هم مقاله را برای جایی خواستم بفرستم که قالب تک ستونی داشت multicols ها را کامنت کنم.

می خواستم کاری کنم که لازم نباشه اگر بخواهم مقاله را برای جاهای مختلف بفرستم مجبور باشم بدنه آن را تغییر دهم. ولی مثل اینکه این کار شدنی نیست  :-\

در هر حال خیلی ممنون
سیف زاده
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: vafa در نوامبر 13, 2009, 07:25:33 pm
نه نیازی به این کار نیست که گفتی اگر قرار بود این جوری باشه، تک مزیتی نداشت. فایل ضمیمه را ببین. توضیح داده‌ام.
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: habib_seif در نوامبر 13, 2009, 10:42:20 pm
جناب آقای وفا

دستوراتی که گفتید را استفاده کردم. هم IEEEtran را درست کردم و هم دو دستور def\ را در اول مقاله گذاشتم. الان همه چیز عالی شد. تنها اشکالی که وجود داره اینکه multicol شکل ها را نشون نمی ده. تو اینترنت که گشتم متوجه شدم که باید از بسته float استفاده کرده و اول مقاله دستور {floatplacement{figure}{H\ را اضافه کنم. الان شکل ها نشان داده می شود ولی نمی توانم بگویم بالای صفحه یا پایین صفحه نشان داده شود. هر شکل دقیقا سر جای خود ظاهر می شود که شاید چندان جالب نباشد

آیا راهکاری برای رفع این مشکل وجود دارد؟

ممنون
سیف زاده
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: vafa در نوامبر 14, 2009, 04:25:40 am
متأسفانه multicol این مشکل را دارد. تنها راه این است که شکلهایت را خارج از محیط multicols قرار دهی.
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: habib_seif در نوامبر 14, 2009, 08:52:15 am
از این همه لطف شما ممنون. موفق و پیروز باشید
سیف زاده
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: habib_seif در نوامبر 14, 2009, 11:24:53 am
جناب آقای وفا

پس از بحث هایی که با هم داشتیم به این نتیجه رسیدیم که کل مقاله را تک ستونی تعریف کنیم. سپس قسمتهایی غیر از جدول مورد نظر را با استفاده از multicol دوستونی نماییم. به این ترتیب جدول تک ستونی می شود بدون اینکه صفحه ای شکسته شود.

این ایده در مورد IEEEtran کار می داد زیرا IEEEtran اجازه می داد که کل مقاله تک ستونی باشد. این در حالیست که بعضی از cls ها اجازه تک ستونی کردن را نمی دهند و بنابراین راه حل شکست می خورد. نمونه ای از این واقعیت را می فرستم. آیا در این مواقع می توان cls را دستکاری کرد تا تک ستونی بودن را قبول کند یا راه دیگری پیشنهاد می کنید؟

با کمال تشکر
سیف زاده
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: vafa در نوامبر 14, 2009, 11:45:31 am
بله می‌شه. کلاس شما هم حاشیه‌ها رو تغییر می‌دهد، هم از دستور \twocolumn استفاده کرده و هم ماکروی داخلی \@makecol را تغییر می‌دهد. اگر این سه چیز را در طبقه نوشتار comment کنید، آن موقع مقاله شما یک ستونی خواهد بود.
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: habib_seif در نوامبر 14, 2009, 11:57:50 am
ببخشید

می تونم بدونم شما دستورات داخلی لاتک را از چه منبع یا کتابی فرا گرفته اید؟ منظورم دستوراتی مانند makecol@ است.

با تشکر
عنوان: پاسخ : تغییر تعداد ستون و شکستن صفحه
رسال شده توسط: vafa در نوامبر 14, 2009, 12:05:49 pm
تجربه