اولین بار است که به اینجا می‌آیید؟ راهنمای سایت را بخوانید!
+1 رای
1.5k بازدید

بسته‌ی fancyhdr بصورت خودکار اندازه‌ی headheight را تغییر نمی‌دهد بلکه اگر headheight کمتر از مقدار مورد نیاز باشد هشداری را صادر می‌کند و اندازه اتفاع هدر باقی صفحات را تغییر می‌دهد.
چگونه‌می‌توان در هر صفحه headheight دقیقا به اندازه مقدار مورد نیاز همان صفحه باشد؟ یعنی مثلا اگر در صفحه پنجم ارتفاع هدر 60 پوینت باشد مقدار headheight در صفحه پنجم نیز 60 پوینت باشد.

فایل(های) پیوست:

4 پاسخ

+2 رای

این پاسخ با توجه به پرسش بروز شده و تغییر در متن پرسش است. این پاسخ تنها این کار را برای header انجام می‌دهد. نحوه انجام این کار برای footer مشابه است.

ایده اصلی این است که در output routine قبل از اینکه header در هر صفحه حروف‌چینی شود محتوای کادر 0 در دستور \f@nch@vbox را قرار دهیم، مقدار ارتفاع را اندازه بگیریم و در صورتی که مقدار \headheight کمتر از این ارتفاع بود، مقدار \headheight را به این ارتفا افزایش دهیم.

\documentclass{article}
\usepackage{fancyhdr}
\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
}
\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
  }%
  \ifdim\headheight<\ht\@tempboxa
    \setlength{\headheight}{\ht\@tempboxa}%
  \fi 
}
\makeatother
\begin{document}
This is a test.
\end{document}
بسیار عالی فقط دو مشکلی که من دارم
یکی اینکه وقتی pagestyle روی empty یا plain باشه درست کار نمی‌کنه
و یکی اینکه با تغییر headheight مقدار textheight رو می‌خوام به همون مقدار کاهش یا افزایش بدم که تا حالا موفق نشدم
توسط (589 امتیاز)
این پاسخ پرسش موجود رو پاسخ می‌دهد. دو مشکلی که شما بهش اشاره کردید هر کدوم یک پرسش جدید است که هر یک به یک فایل کمینه نیاز دارد.
توسط (25.0k امتیاز)
+1 رای

قبلا در این پست مشابه همین سوال را داشتم که با راهنمایی‌های آقای خلیقی در همان پست داشتند با کمی تغییر در بسته‌ی fancyhdr بسته autofancyhdr را نوشته‌ام که مقدار headheight را برای هر صفحه دقیقا به اندازه مورد نیاز همان صفحه قرار می‌دهد.
بسته‌ی نوشته شده را در پیوست قرار داده‌ام.

خیلی عالی بود. ممنونم
امکان داره برای ته‌برگ هم خودکار حساب بکنه؟ منظورم footskip هستش
توسط (3.3k امتیاز)
من بسته‌ای به نام autofancyhdr رو به ctan داده‌ام که در آن بسته اصلی fancyhdr فراخوانی می‌شود و مقدار کمی تغییر در یکی از ماکروها اعمال می‌شود و ارتفاع هدر را خودکار حساب می‌کند. میتوان برای فوتر نیز به همان روش این کار را انجام داد که من با توجه به اینکه نیاز نداشتم آن را ننوشتم. البته نمیدانم این بسته autofancyhdr هنوز کار می‌کند یا نه چون خیلی وقته رهاش کردم
توسط (589 امتیاز)
خیلی ممنونم. پس یه نگاهی می‌کنم ببینم می‌تونم متوجه بشم برای فوتر انجام بدم یا نه.
بله کار می‌کنه :)
با آخرین نسخهٔ تک لایو ۲۰۲۰ هم امتحان کردم
سپاس
توسط (3.3k امتیاز)
ممنون از حسن توجه شما
کاری که انجام دادم به این شکله که خود بسته‌ی fancyhdr ارتفاع هدر مورد نیاز رو داره و من اومدم اونها رو در یک فایلی ذخیره کردم و در اجرای بعدی از اطلاعات اون فایل استفاده کردم. در واقع برای اینکه درست کار کنه به دوبار اجرا نیاز داره
توسط (589 امتیاز)
0 رای

بسته خودش خودکار این کار رو انجام می‌ده.

\documentclass{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[C]{\Huge\bfseries This is a test}
\begin{document}
This is a test.
\end{document}

پس از پردازش هدشار زیر رو می‌ده:

Package Fancyhdr Warning: \headheight is too small (12.0pt): 
 Make it at least 30.0pt.
 We now make it that large for the rest of the document.
 This may cause the page layout to be inconsistent, however.

برای اطلاعات بیشتر تعریف ماکروی \f@nch@vbox رو ببینید.

\def\f@nch@vbox#1#2{\setbox0\vbox{#2}\ifdim\ht0>#1\f@nch@warning
  {\string#1 is too small (\the#1): ^^J Make it at least \the\ht0.^^J We
    now make it that large for the rest of the document.^^J This may
    cause the page layout to be inconsistent, however\@gobble}%
  \dimen0=#1\global\setlength{#1}{\ht0}\ht0=\dimen0\fi \box0}

کاری که بسته انجام می‌ده اینه که متن رو داخل یک \vbox قرار می‌ده، اگر ارتفاع این کادر بزرگ‌تر از ارتفاع تخصیص داده شده باشه هشدار رو می‌ده و پس از پایان هشدار مقدار \dimen0 رو برابر ارتفاع تخصیص داده شده می‌کنه و ارتفاع تخصیص داده شده رو به ارتفاع واقعی کادر \vbox که حاوی متن است افزایش می‌دهد و سپس ارتفاع کادر \vbox رو برابر \dimen0 می‌کنه و در پایان کادر عمودی حاوی متن رو قرار می‌دهد.

ممنون از پاسخگوییتون.
بسته fancyhdr مقدار headheight رو برای باقیمانده صفحات سند به طور اتوماتیک انجام میده ولی اینجا چند تا مشکل داریم یکی اینکه خود همون صفحه ارتفاع هدر تغییر نمی‌کنه و یکی اینکه ممکنه صفحات بعدی هدرهایی با ارتفاع‌های متفاوتی داشته باشند و یکی هم اینکه در آخر باید مقداری که بسته fancyhdr در هشداری که ارسال کرده اعلام می‌کنه بصورت دستی در سند تعیین بشه.
مثلا کد زیر را در نظر بگیرید
\documentclass{article}
\usepackage{fancyhdr}
\usepackage{lipsum}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[C]{\Huge\bfseries This is a test \\ This is a test}
\begin{document}
\lipsum
\end{document}
توسط (589 امتیاز)
پرسش شما با چیزی که در سوال مطرح کردید تفاوت داره. منظور شما از راه خودکار این هست که یک ارتفاع مناسب بصورت خودکار برای همه صفحات تعیین بشه که برای همه صفحات کار کنه اما متن پرسشتون متفاوت هست و خواننده متوجه دقیق منظور نمی‌شه. لطفا متن پرسشتون رو تغییر بدهید و اطلاعات کامل قرار بدهید.
توسط (25.0k امتیاز)
تغییر دادم
توسط (589 امتیاز)
0 رای
پرسشتان نامفهوم است. منظورتان مشخص نیست
توسط (589 امتیاز)
پرسیدن سوال
وب‌سایت پرسش و پاسخ پارسی‌لاتک جایی برای پرسش و پاسخ درباره سیستم حروف‌چینی لاتک و بسته زی‌پرشین است. در اینجا می‌توانید سوال‌های خود را بپرسید و به سوال‌های دیگران پاسخ دهید.

7.1k پرسش

6.6k پاسخ

23.5k نظر

7.1k کاربر

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

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