اگر از بسته geometry استفاده نمیکنید، حتماً کد زیر را در نوشتار خود قرار دهید:
علت مشکل:
اگر به خاطر داشته باشید توی نسخههای قدیمی بسته bidi زمانی که از بسته multicol و محیط multicols استفاده میکردید فهرست مطالب اشتباه چاپ میشد که این یکی از باگهای موتور etex بود. برای درست کردن این موضوع (روشی که الان بسته bidi استفاده میکنه) اینه که تک رو به قول معروف ما fool میکنیم. برای مثال اگر دو ستون دارید این اتفاقی هست که میافته:
راهحل چیست:
اینکه تست کنیم که آیا متن یک ستونی هست یا نه. اگر یک ستونی بود همون مختصات قبلی رو استفاده کن ولی اگر یکستونی نیود از متخصات جدید استفاده کن:
کد: [انتخاب]
\setlength{\pdfpagewidth}{\paperwidth}
\setlength{\pdfpageheight}{\paperheight}
اگر از بسته geometry استفاده میکنید، احتیاجی به این کار نیست. البته این موضوع ربطی به مشکل نداره تنها یک پیشنهاد بود.توی فایل پیوست، به محض شروع محیط multicols در صفحه ۳، کراپمارکهایی که توسط بسته bidi-atbegshi چاپ شدند، جابجا میشن. این مشکل رو چطور میشه حل کرد؟
علت مشکل:
اگر به خاطر داشته باشید توی نسخههای قدیمی بسته bidi زمانی که از بسته multicol و محیط multicols استفاده میکردید فهرست مطالب اشتباه چاپ میشد که این یکی از باگهای موتور etex بود. برای درست کردن این موضوع (روشی که الان بسته bidi استفاده میکنه) اینه که تک رو به قول معروف ما fool میکنیم. برای مثال اگر دو ستون دارید این اتفاقی هست که میافته:
کد: [انتخاب]
\hskip \columnwidth
\hfil \vrule width\columnseprule \hfil
<put first column here>
\hskip -\textwidth
<put second column here>
\hskip \columnsep
\hskip \columnwidth
با این روش هم دو ستون ترتیبش از راست به چپ میشه و هم مشکل فهرست مطالب دیگه وجود نداره. اما اگر صفحهای با محیط multicols شروع یا تموم بشه از اونجایی که بسته multicols در واقع output routine رو تغییر میده، جای گوشههای چپ و راست کاغذ به اندازه همون \columnwidth و \columnsep عوض میشه.راهحل چیست:
اینکه تست کنیم که آیا متن یک ستونی هست یا نه. اگر یک ستونی بود همون مختصات قبلی رو استفاده کن ولی اگر یکستونی نیود از متخصات جدید استفاده کن:
کد: [انتخاب]
\documentclass[a4paper]{book}
\usepackage{ptext,graphicx}
\usepackage{picture}
\usepackage{multicol}
\usepackage{bidi-atbegshi}
\usepackage{xepersian}
\settextfont{XB Niloofar}
\setlength{\pdfpagewidth}{\paperwidth}
\setlength{\pdfpageheight}{\paperheight}
\makeatletter
\AtBeginShipout{%
\ifnum\col@number=\@ne
\AtBeginShipoutUpperLeft{%
\setlength{\unitlength}{1mm}
\put(-1,-5){\line(-1,0){10}}
\put(-1,-5){\line(0,-1){10}}
}
\AtBeginShipoutUpperRight{%
\setlength{\unitlength}{1mm}
\put(1,-5){\line(1,0){10}}
\put(1,-5){\line(0,-1){10}}
}
\AtBeginShipoutLowerLeft{%
\setlength{\unitlength}{1mm}
\put(-1,5){\line(-1,0){10}}
\put(-1,5){\line(0,1){10}}
}
\AtBeginShipoutLowerRight{%
\setlength{\unitlength}{1mm}
\put(1,5){\line(1,0){10}}
\put(1,5){\line(0,1){10}}
}
\else
\AtBeginShipoutUpperLeft{%
\setlength{\unitlength}{1mm}
\put(-\dimexpr\columnwidth+\columnsep+1mm\relax,-5){\line(-1,0){10}}
\put(-\dimexpr\columnwidth+\columnsep+1mm\relax,-5){\line(0,-1){10}}
}
\AtBeginShipoutUpperRight{%
\setlength{\unitlength}{1mm}
\put(-\dimexpr\columnwidth+\columnsep-1mm\relax,-5){\line(1,0){10}}
\put(-\dimexpr\columnwidth+\columnsep-1mm\relax,-5){\line(0,-1){10}}
}
\AtBeginShipoutLowerLeft{%
\setlength{\unitlength}{1mm}
\put(-\dimexpr\columnwidth+\columnsep+1mm\relax,5){\line(-1,0){10}}
\put(-\dimexpr\columnwidth+\columnsep+1mm\relax,5){\line(0,1){10}}
}
\AtBeginShipoutLowerRight{%
\setlength{\unitlength}{1mm}
\put(-\dimexpr\columnwidth+\columnsep-1mm\relax,5){\line(1,0){10}}
\put(-\dimexpr\columnwidth+\columnsep-1mm\relax,5){\line(0,1){10}}
}
\fi
}
\makeatother
\begin{document}
\chapter{مقداری متن}
\ptext[1-10]
\newpage
\begin{multicols*}{2}
\ptext[1-7]
\end{multicols*}
\end{document}