تالار گفتگوی پارسیلاتک
لاتک LATEX => طراحی صفحه => نويسنده: مرتضی در دسامبر 30, 2012, 08:02:50 pm
-
با استفاده از گزینه showframe در بسته geometry میتوان کادرهای موجود در یک صفحه (دور متن، heading، حاشیه و ...) که در حالت عادی نامرئی هستند، را مشاهده کرد. در این حالت معلوم میشود که در صفحات فرد (در کلاس book)، حاشیه در سمت راست صفحه است، در صورتیکه در متن فارسی، باید این حاشیه در سمت چپ قرار بگیرد. به این ترتیب دستور \marginpar{} نیز بهدرستی کار نمیکند.
آیا راهی برای معکوسکردن جهت آن وجود دارد؟
-
دستور \marginpar بدرستی کار میکند شما تنها باید ابعاد صفحتون رو تغییر بدهید.
-
با استفاده از گزینه showframe در بسته geometry میتوان کادرهای موجود در یک صفحه (دور متن، heading، حاشیه و ...) که در حالت عادی نامرئی هستند، را مشاهده کرد.
اینطور نیست. بسته geometry خودش خط و خطوط رو رسم میکنه و این کار رو براساس منطق چپ به راست میکنه و این هیچ ربطی به دستور \marginpar و حاشیه نداره.
در این حالت معلوم میشود که در صفحات فرد (در کلاس book)، حاشیه در سمت راست صفحه است،
کاملاً اشتباه است. به دلیل اول.
در صورتیکه در متن فارسی، باید این حاشیه در سمت چپ قرار بگیرد. به این ترتیب دستور \marginpar{} نیز بهدرستی کار نمیکند.
آیا راهی برای معکوسکردن جهت آن وجود دارد؟
شما کل موضوع را اشتباه متوجه شدی. این سه مطلب جدا از هم است:
۱) دستور \marginpar به درستی کار میکند.
۲) حاشیه به ابعاد صفحه مربوط است.
۳) خطهایی که بسته geometry برای حاشیه میکشد هیچ ربطی به حاشیه و دستور \marginpar ندارد بلکه بسته geometry با فرض اینکه نوشته چپ به راست است بصورت دستی خطها را قرار میدهد.
برای درستی گفتههایم، خطهایی که بسته geometry برای حاشیه قرار میدهد تغییر داده شده است تا در جای درست قرار بگیرند:
%% This code is copyright (C) 2013 by Vafa Khalighi <[firstname]gk[at]gmail[dot]com>.
%% All rights are reserved!
%% The code is distributed only for people to see the demonstration of the code
%% not for use in the preparation of any document that you may have.
%% Permission for any other use of this code must be obtained by purchasing a license
%% from the copyright holder.
\documentclass{book}
\usepackage[marginparwidth=2cm, showframe,left=5cm] {geometry}
\usepackage{xepersian}
\makeatletter
\renewcommand*{\Gm@vrules@mpi}{%
\if@RTLmain%
\hb@xt@\@tempdima{\hskip-\marginparwidth\hskip-\marginparsep
\llap{\Gm@vrule}\ignorespaces
\hskip \marginparwidth\rlap{\Gm@vrule}\hskip \marginparsep
\llap{\Gm@vrule}\hskip\textwidth\rlap{\Gm@vrule}\hss}%
\else%
\hb@xt@\@tempdima{\llap{\Gm@vrule}\ignorespaces
\hskip \textwidth\Gm@vrule\hskip \marginparsep
\llap{\Gm@vrule}\hfil\Gm@vrule}\fi}%
\renewcommand*{\Gm@vrules@mpii}{%
\if@RTLmain%
\hb@xt@\@tempdima{\llap{\Gm@vrule}\ignorespaces
\hskip \textwidth\Gm@vrule\hskip \marginparsep
\llap{\Gm@vrule}\hfil\Gm@vrule}%
\else%
\hb@xt@\@tempdima{\hskip-\marginparwidth\hskip-\marginparsep
\llap{\Gm@vrule}\ignorespaces
\hskip \marginparwidth\rlap{\Gm@vrule}\hskip \marginparsep
\llap{\Gm@vrule}\hskip\textwidth\rlap{\Gm@vrule}\hss}\fi}%
\makeatother
\begin{document}
صفحه فرد
\marginpar{حاشیه فرد}
\newpage
صفحه زوج
\marginpar{حاشیه زوج}
\end{document}
هشدار: کد بالا مجانی نیست و استفاده آن در اسناد خود غیرقانونی و غیراخلاقی میباشد. لطفاً متن حقکپی را بدقت مطالعه کنید.