درسته. خیلی ممنون. فقط یه سوال داشتم:اینکه کاغذ شما a4 هست یا مقادیر شما برای paperwidth و paperheight چی هستند کوچکترین اهمیتی نداره. بسته bidi-atbegishi به اندازههای کاغذ به چشم یک متغیر نگاه میکنه و میتونیید هر اندازهای داشته باشند.
با توجه به اینکه اندازه کاغذ رو روی a4 گذاشتم و همچنین با توجه به گزینههایکد: [انتخاب]centering,paperwidth=20.8cm, paperheight=28cm
که تعیین کردم،
نقل قول
میخوام که خطوط برش به اندازه ۱ میلیمتر از هر دو سمت راست و چپ و به اندازه ۵ میلیمتر از هر دو سمت بالا و پایین لبه کاغذ a4 فاصله داشته باشند. آیا روش سرراستی برای تعیین این فاصله با استفاده از دستور put وجود داره یا این فاصلهها رو باید با آزمون و خطای مقادیر دستور put تنظیم کنم؟شما تنها یک محاسبه سرانگشتی باید بدانید و اینکه محیط picture چگونه کار میکند. کد را اول مینویسم و توضیحش را برای یکی از گوشههای کاغذ راست و یکی از گوشههای کاغذ سمت چپ میدهم. بقیه گوشههای کاغذ مشابه هم هستند. در این مثال همه خطهای افقی و عمودی ۴۰ میلیمتر طول دارند.
کد: [انتخاب]
\documentclass[a4paper]{book}
\usepackage{ptext}
\usepackage[total={16.3cm,23.5cm},centering,includehead=true,paperwidth=20.8cm, paperheight=28cm]{geometry}
\usepackage{bidi-atbegshi}
\usepackage[preloadedlatintextfont]{xepersian}
\settextfont{XB Niloofar}
\AtBeginShipout{%
\AtBeginShipoutUpperLeft{%
\setlength{\unitlength}{1mm}
\put(-41,-25){\line(1,0){40}}
\put(-21,-45){\line(0,1){40}}
}
\AtBeginShipoutUpperRight{%
\setlength{\unitlength}{1mm}
\put(1,-25){\line(1,0){40}}
\put(21,-45){\line(0,1){40}}
}
\AtBeginShipoutLowerLeft{%
\setlength{\unitlength}{1mm}
\put(-41,25){\line(1,0){40}}
\put(-21,5){\line(0,1){40}}
}
\AtBeginShipoutLowerRight{%
\setlength{\unitlength}{1mm}
\put(1,25){\line(1,0){40}}
\put(21,5){\line(0,1){40}}
}
}
\begin{document}
\chapter{مقداری متن}
\section{مقداری متن دیگر}
\ptext[1-10]
\newpage
\newgeometry{total={14.3cm,21.9cm},centering,includehead=true}
\ptext[1-10]
\newpage
\restoregeometry
\ptext[1-10]
\end{document}
از اونجایی که اندازههایی که به من دادی به میلیمتر هستند من مقدار unitlength را از 1ptبه 1mm تغییر دادم:
کد: [انتخاب]
\setlength{\unitlength}{1mm}
توضیح cropmark گوشه سمت چپ بالا
cropmark از یک خط افقی و یک خط عمودی تشکیل شده. برای اینکه cropmark در سمت چپ بالا کاغذ قرار بگیره دستورات رسم خط را داخل دستور
کد: [انتخاب]
\AtBeginShipoutUpperLeft{...}
قرار میدهم. با این کار صفر مختصات گوشه بالای کاغذ سمت چپ است. در محیط راست به چپ مختصات مثبت افقی سمت چپ و مختصات منفی افقی سمت راست مبدا میشه. خط افقی از راست به چپ کشیده میشه و خط عمودی از پائین به بالا کشیده میشه.خوب من میخواهم در گوشه بالای کاغذ سمت چپ یک خط افقی به طول ۴۰ میلیمتر بکشم که از سمت چپ کاغذ ۱ میلیمتر فاصله داشته باشه. از اونجایی که خط افقی از سمت راست به چپ کشیده میشه و مختصات منفی افقی در متن راست به چپ سمت راست کاغذ میشه. من باید خط افقی رو در نقطه ۴۰میلیمتر به اضافه ۱میلیمتر سمت راست شروع به کشیدن کنم. پس مختصات افقی میشه -41. تکلیف مختصات عمودی چی میشه؟ خوب وقتی من خط عمودی رو رسم کنم نصف خط عمودی باید پائین خط افقی و نصف دیگش بالای خط افقی باشه. پس روشنه که مختصات عمودی خط افقی باید ۵میلیمتر به اضافه نصف طول خط که ۲۰میلیمتر هست باشه. از اونجایی که خط عمودی از پائین به بالا رسم میشه پس باید برم پائین. بنابراین مختصات عمودی خط افقی میشه -25mm. پس کدی که خط افقی رو در گوشه چپ بالا رسم میکنه اینه:
کد: [انتخاب]
\put(-41,-25){\line(1,0){40}}
خوب حالا میرسیم به رسم خط عمودی. خط عمودی باید از وسط خط افقی رسم بشه. پس مختصات افقیش باید نصف طول خط +۱میلیمتر باشه. بنابراین مختصات افقی میشه -21. خوب مختصات عمودی هم روشنه، شما میخواهی خطی به اندازه ۴۰میلیمتر داشته باشی که خطت تا گوشه بالای کاغذ ۵میلیمتر فاصله داشته باشه. بنابراین مختصات عمودی میشه ۵میلیمتر+۴۰ میلیمتر. پس مختصات عمودی میشه -45. پس کدی که خط عمودی رو رسم میکنه میشه کد: [انتخاب]
\put(-21,-45){\line(0,1){40}}
توضیح cropmark گوشه سمت راست پائین
برای اینکه cropmark در سمت راست پائین کاغذ قرار بگیره دستورات رسم خط را داخل دستور
کد: [انتخاب]
\AtBeginShipoutLowerRight{...}
قرار میدهم. با این کار صفر مختصات گوشه سمت راست پائین هست. میخواهم خط افقی رسم کنم که از پائین ۲۵ میلیمتر فاصله داشته باشه و از گوشه سمت راست ۱ میلیمتر بنابراین این کد باید خط افقی رو رسم کنه:کد: [انتخاب]
\put(1,25){\line(1,0){40}}
برای خط عمودی هم میخواهم از وسط خط افقی رد بشه. بنابراین مختصات افقی ۱میلیمتر+۲۰میلیمتر هست و مختصات عمودی هم ۵میلیمتر. بنابراین کد زیر خط عمودی رسم میکنه:کد: [انتخاب]
\put(21,5){\line(0,1){40}}
امیدوارم تونسته باشم موضوع رو شفاف کنم.