اولین بار است که به اینجا می‌آیید؟ راهنمای سایت را بخوانید!
Close Sidebar
وب‌سایت پرسش و پاسخ پارسی‌لاتک جایی برای پرسش و پاسخ درباره سیستم حروف‌چینی لاتک و بسته زی‌پرشین است. در اینجا می‌توانید سوال‌های خود را بپرسید و به سوال‌های دیگران پاسخ دهید.

محبوب‌ترین برچسب‌ها

رفع خطا جدول مراجع xepersian ریاضی‌نویسی شکل فونت فهرست مطالب شماره‌گذاری bidi منابع پانویس بیب‌تک tikz parsilatex تک‌لایو بیمر اسلاید زی‌پرشین پاورقی bibtex سربرگ نماد رسم شکل فرمول‌نویسی قالب ارجاع‌دهی biditexmaker هدر ویرایشگر beamer واژه‌نامه اندازه فونت texstudio عنوان فصل ماتریس اعمال نشدن تغییرات در پی‌دی‌اف رسم جدول bidipresentation شماره صفحه حاشیه رنگ عنوان شکل اسلاید فارسی محیط قضیه گراف مکان شکل tikzpicture حروف‌چینی کد شماره فصل enumerate tabriz_thesis نمایه align زیرنویس شکل کادر itemize فهرست اشکال الگوریتم listings عدم اجرا نیم‌فاصله متن لاتین و فارسی بسته فاصله بین خطوط قالب پایان‌نامه فرمول نصب تک‌لایو فارسی‌تک hyperref شماره فرمول glossaries کپشن نمودار خروجی لاتک حروف‌چینی چندستونی فونت فارسی و انگلیسی ماکرونویسی biditools شماره پاورقی پیوست‌ سوال امتحانی فاصله‌گذاری فرمول چندضابطه‌ای subfigure extrafootnotefeatures biditufte-book header texmaker pdf tex longtable تصویر شمارنده خطا texlive2015 زیرنویس رسم نمودار شماره‌گذاری صفحات پایان نامه دیاگرام فهرست جداول میک‌تک texlive2016 تنظیم جدول آکولاد kashida texworks caption اندیس اعداد فارسی lollipop iust-thesis multicol فصل‌نویسی شعر سوال چهارگزینه‌ای بولد تورفتگی فاصله عمودی xindy چپ‌چینی اوبونتو میکروسافت ورد قاب geometry texlive fancyhdr وسط‌چینی تک لایو 2015 عنوان بخش شماره گذاری به‌روزرسانی بسته aimc46 صفر توخالی فرمول طولانی pgfplots بیرون‌زدگی xelatex کاما tcolorbox پوستر فاصله سطرها نوشتافت شکست خط tex-programming فونت اعداد قرآن tabriz-thesis ایتالیک winedt جستجوی معکوس فلش جایابی تصویر قالب کتاب پاراگراف‌بندی بازیابی اطلاعات هایپرلینک فهرست نمادها شمارنده فصل font محیط ریاضی رسم کادر جداکننده جدول طولانی فهرست تصاویر شماره‌گذاری فرمول algorithm2e فونت بولد proof equation bidipoem eps جدول افقی عکس به‌روزرسانی پانویس چندستونی کمک مالی فاصله خطوط حروف‌چینی شعر زیرشکل minipage قلم پانویس پاراگرافی ltrfootnote پیوست computeautoilg متن فارسی و انگلیسی فرمول چندخطی neveshtuft غلط‌گیری املایی تک‌پارسی پیکان لاتکس tabular baselineskip شماره قسمت قسمت عنوان جدول
14 نفر آنلاین
0 عضو و 14 مهمان در سایت حاضرند
بازدید امروز: 3317
بازدید دیروز: 5389
بازدید کل: 25837248

محاسبه خودکار ارتفاع هدر هر صفحه با مقدار دقیق مورد نیاز همان صفحه و تغییر اندازه textheight به همان اندازه

0 رای
725 بازدید

با توجه به این پست در مورد تغییر اندازه textheight مطابق با مقدار مورد نیاز من می‌خواهم به همان اندازه که مثلا headheight افزایش پیدا می‌کند در همان صفحه textheight به همان اندازه کاهش پیدا کند و برعکس. من با استفاده از کدی که آقای خلیقی در این پست گداشته‌اند، مقدار textheight را تغییر می‌دهم ولی هرچند مقدار تغییر headheight در همان صفحه اعمال می‌شود ولی تغییر textheight از صفحه بعد اعمال می‌شود.
کمی ویرایش برای بهتر مشخص شدن اشکالات
کد کمینه:

\documentclass[twoside]{article}
\usepackage[left=1cm,right=1cm,top=1cm,bottom=1cm,headheight=0pt,headsep=0pt,footskip=0pt,includeheadfoot]{geometry}
\usepackage{lipsum}
\usepackage{fancyhdr}
\usepackage{bidi}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[CO]{\vrule height 50pt\Huge\bfseries This is a test Odd page\vrule height 50pt}
\fancyhead[CE]{\vrule height 150pt\Huge\bfseries This is a test Even page\vrule height 150pt}
%\fancyfoot[C]{\thepage}
\fancypagestyle{last}{%
    \fancyhf{}
    \fancyhead[C]{%
        \vrule height 350pt\Huge\bfseries This is a test Last page \vrule height 350pt
    }
%   \fancyfoot[C]{\thepage}
}
\makeatletter
\newcommand*{\bidi@f@nch@lh}{%
  \ifodd\count\z@
    \f@nch@olh
  \else
    \f@nch@elh
  \fi
}
\newcommand*{\bidi@f@nch@ch}{%
  \ifodd\count\z@
    \f@nch@och
  \else
    \f@nch@ech
  \fi
}
\newcommand*{\bidi@f@nch@rh}{%
  \ifodd\count\z@
    \f@nch@orh
  \else
    \f@nch@erh
  \fi
}
\bidi@BeforeHeader{%
  \setbox\@tempboxa\vbox{%
    \hbox{%
      \rlap{%
        \parbox[b]{\headwidth}{%
          \raggedright\bidi@f@nch@lh
        }%
      }%
      \hfill
      \parbox[b]{\headwidth}{%
        \centering\bidi@f@nch@ch
      }%
      \hfill
      \llap{%
        \parbox[b]{\headwidth}{%
          \raggedleft\bidi@f@nch@rh
        }%
      }%
    }%
    \headrule
  }%
    \typeout{page number ast \thepage}
    \typeout{headheight ast \the\headheight}
    \typeout{new headheight ast \the\ht\@tempboxa}
    \typeout{textheight ast \the\textheight}
    \typeout{new textheight ast \the\dimexpr\textheight+\headheight-\ht\@tempboxa\relax}
  \ifdim\headheight=\ht\@tempboxa\else
    \global\addtolength{\textheight}{\dimexpr\headheight-\ht\@tempboxa\relax}
    \global\setlength{\headheight}{\ht\@tempboxa}%
  \fi 
}
\makeatother
\begin{document}
\lipsum[5-50]
\thispagestyle{last}
\end{document}
سوال شده دی 30, 1397 توسط مجتبی (587 امتیاز)
ویرایش شده بهمن 3, 1397 توسط مجتبی
ممنون. با کمک همین لینکی که معرفی کردی قبلا درستش کردم و توی این پست http://qa.parsilatex.com/32245/ هم جوابش رو پیوست کردم. منتها پاسخی که آقای خلیقی توی همون پست داده بود به نظرم خیلی تر و تمیز‌تر بود. می‌خواستم ببینم میشه با همون جواب آقای خلیقی و بدون ذخیره در فایل به جایی رسید یا نه

1 پاسخ

+1 رای

hookی که اینجا باید استفاده کرد (برای تغییر \textheight در تمام صفحات) \AtBeginDvi هست.

\documentclass{article}
\usepackage[left=1cm,right=1cm,top=1cm,bottom=1cm,headheight=0pt,headsep=0pt,footskip=0pt,includeheadfoot]{geometry}
\usepackage{fancyhdr,lipsum}
\usepackage{bidi}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[C]{\Huge\bfseries This is a test}
\makeatletter
\newcommand*{\bidi@f@nch@lh}{%
  \ifodd\count\z@
    \f@nch@olh
  \else
    \f@nch@elh
  \fi
}
\newcommand*{\bidi@f@nch@ch}{%
  \ifodd\count\z@
    \f@nch@och
  \else
    \f@nch@ech
  \fi
}
\newcommand*{\bidi@f@nch@rh}{%
  \ifodd\count\z@
    \f@nch@orh
  \else
    \f@nch@erh
  \fi
}
\AtBeginDvi{%
  \global\setbox\@tempboxa\vbox{%
    \hbox{%
      \rlap{%
        \parbox[b]{\headwidth}{%
          \raggedright\bidi@f@nch@lh
        }%
      }%
      \hfill
      \parbox[b]{\headwidth}{%
        \centering\bidi@f@nch@ch
      }%
      \hfill
      \llap{%
        \parbox[b]{\headwidth}{%
          \raggedleft\bidi@f@nch@rh
        }%
      }%
    }%
    \headrule
  }%
  \ifdim\headheight<\ht\@tempboxa
   \global\advance\textheight-\dimexpr\ht\@tempboxa-\headheight\relax
   \global\headheight=\ht\@tempboxa
  \fi 
}
\makeatother
\begin{document}
\lipsum[1-100]
\end{document}
پاسخ داده شده بهمن 1, 1397 توسط وفا (24,609 امتیاز)
بسیار عالی.
فقط اگر هدر صفحه‌ای با thispagestyle مشخص شده باشد. ارتفاع هدر آن صفحه هنوز با ارتفاع هدری که با دستور pagestyle مشخص شده است تعیین می‌شود. یا مثلا موقعی که توی یکی از صفحات هدر تغییر می‌کنه ارتفاع هدر صفحه تغییر نمی‌کنه
برای اینکه بتونم پاسخ بدم باید فایل کمینه داشته باشم که مشکل رو نشون بده.
فایل کمینه را ویرایش کردم تا مشکل نشون داده بشه.
سپاس از شما
...