سلام، لطفا وارد شوید یا عضو شوید.

نویسنده موضوع: جابجا شدن کراپ‌مارک‌های چاپ‌شده توسط بسته bidi-atbegshi در محیط multicols  (دفعات بازدید: 4228 بار)

آفلاین وحید دامن‌افشان

  • Administrator
  • Hero Member
  • *****
  • تشکر
  • -اهدا شده: 452
  • -دریافت شده: 718
  • ارسال: 2,107
    • ديدن مشخصات
    • http://www.damanafshan.ir
توی فایل پیوست، به محض شروع محیط multicols در صفحه ۳، کراپ‌مارک‌هایی که توسط بسته bidi-atbegshi چاپ شدند، جابجا می‌شن. این مشکل رو چطور می‌شه حل کرد؟

آفلاین vafa

  • Moderator
  • Hero Member
  • ***
  • تشکر
  • -اهدا شده: 78
  • -دریافت شده: 2012
  • ارسال: 4,429
    • ديدن مشخصات
اگر از بسته geometry استفاده نمی‌کنید، حتماً کد زیر را در نوشتار خود قرار دهید:
\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}

« آخرين ويرايش: سپتامبر 29, 2014, 10:14:33 pm توسط vafa »

آفلاین vafa

  • Moderator
  • Hero Member
  • ***
  • تشکر
  • -اهدا شده: 78
  • -دریافت شده: 2012
  • ارسال: 4,429
    • ديدن مشخصات
کد قبلی فقط یرای دو ستون کار می‌کرد. در کد زیر مهم نیست که تعداد ستونها چند تا باشند چون ضریب \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\numexpr\col@number-1\relax\columnwidth+\numexpr\col@number-1\relax\columnsep+1mm\relax,-5){\line(-1,0){10}}
\put(-\dimexpr\numexpr\col@number-1\relax\columnwidth+\numexpr\col@number-1\relax\columnsep+1mm\relax,-5){\line(0,-1){10}}
}
\AtBeginShipoutUpperRight{%
\setlength{\unitlength}{1mm}
\put(-\dimexpr\numexpr\col@number-1\relax\columnwidth+\numexpr\col@number-1\relax\columnsep-1mm\relax,-5){\line(1,0){10}} 
\put(-\dimexpr\numexpr\col@number-1\relax\columnwidth+\numexpr\col@number-1\relax\columnsep-1mm\relax,-5){\line(0,-1){10}}
}
\AtBeginShipoutLowerLeft{%
\setlength{\unitlength}{1mm}
\put(-\dimexpr\numexpr\col@number-1\relax\columnwidth+\numexpr\col@number-1\relax\columnsep+1mm\relax,5){\line(-1,0){10}}
\put(-\dimexpr\numexpr\col@number-1\relax\columnwidth+\numexpr\col@number-1\relax\columnsep+1mm\relax,5){\line(0,1){10}}
}
\AtBeginShipoutLowerRight{%
\setlength{\unitlength}{1mm}
\put(-\dimexpr\numexpr\col@number-1\relax\columnwidth+\numexpr\col@number-1\relax\columnsep-1mm\relax,5){\line(1,0){10}}
\put(-\dimexpr\numexpr\col@number-1\relax\columnwidth+\numexpr\col@number-1\relax\columnsep-1mm\relax,5){\line(0,1){10}}
}
\fi
}
\makeatother
\begin{document}
\chapter{مقداری متن}
\ptext[1-100]
\begin{multicols*}{4}
\ptext[1-100]
\end{multicols*}
\ptext[1-100]
\end{document}

آفلاین vafa

  • Moderator
  • Hero Member
  • ***
  • تشکر
  • -اهدا شده: 78
  • -دریافت شده: 2012
  • ارسال: 4,429
    • ديدن مشخصات
توی نسخه بعدی بسته bidi-atbegshi من این مورد رو درست می‌کنم تا احتیاجی به تنظیم دستی نباشه.

 

جابجا کردن محل کراپ‌مارک‌ها در بسته crop

نویسنده وحید دامن‌افشانانجمن عمومی

پاسخ ها: 1
مشاهده: 2128
آخرين ارسال دسامبر 10, 2012, 06:04:37 pm
توسط vafa
حذف تغییرات در محیط picture در تسخه آینده بسته bidi

نویسنده vafaانجمن زی‌تک

پاسخ ها: 0
مشاهده: 2130
آخرين ارسال آوریل 10, 2013, 09:49:51 am
توسط vafa
جابجا شدن ستون‌ها در بسته multicol در صورت استفاده از محیط latin

نویسنده وحید دامن‌افشانانجمن زی‌تک

پاسخ ها: 3
مشاهده: 2658
آخرين ارسال فوریه 13, 2014, 10:55:43 am
توسط وحید دامن‌افشان
بسته جدید bidi-atbegshi

نویسنده vafaانجمن زی‌تک

پاسخ ها: 14
مشاهده: 3920
آخرين ارسال سپتامبر 11, 2014, 11:57:44 am
توسط bahare60
جابجا شدن جای کراپ‌مارک‌ها در صفحات بعد از استفاده از دستور newgeometry

نویسنده وحید دامن‌افشانانجمن حروف‌چینی مستندات

پاسخ ها: 9
مشاهده: 4883
آخرين ارسال سپتامبر 17, 2014, 07:32:57 am
توسط vafa
نسخه ۱.۰.۵ بسته‌های bidi و xepersian (آزمایشی)

نویسنده vafaانجمن زی‌تک

پاسخ ها: 0
مشاهده: 2838
آخرين ارسال ژانویه 25, 2010, 03:24:03 pm
توسط vafa
نسخه ۱.۰.۸ بسته bidi

نویسنده vafaانجمن زی‌تک

پاسخ ها: 0
مشاهده: 2458
آخرين ارسال آوریل 13, 2010, 06:37:41 pm
توسط vafa
نسخه جدید بسته‌های bidi و xepersian

نویسنده vafaانجمن زی‌تک

پاسخ ها: 6
مشاهده: 4384
آخرين ارسال مه 12, 2010, 01:06:56 pm
توسط سیدرضی علوی‌زاده