나는 을(를) 사용하고 fancyhdr
있으며 다음을 따르고 있습니다.이 답변나는 다음과 같이 재정의했습니다 \sectionmark
.
\renewcommand{\sectionmark}[1]{\markboth{#1}{}}
~하도록 하다
\fancyhead[RO,LE]{\leftmark}
홀수 페이지의 경우 오른쪽 헤더에, 짝수 페이지의 경우 왼쪽 헤더에 현재 섹션의 이름을 제공합니다. 이상하게 들릴 수도 있지만, 추가적으로짧은계속할 섹션 이름다른헤더의 측면. 예를 들어, 내가 다음과 같이 선언했다면
\section[short name]{long name}
그러면 내 페이지에는 한쪽에는 "짧은 이름"이 있고 다른쪽에는 "긴 이름"이 있는 헤더가 있습니다. 이것이 가능합니까? 섹션의 짧은 이름을 생성 \fancyhead[RE,LO]{\rightmark}
하도록 엔지니어링된 항목을 사용해야 한다고 가정합니다 . \rightmark
그러나 나는 그것에 성공하지 못했습니다. 또한 에 짧은 이름을 제공하면 대신 \section[]{}
짧은 이름이 사용됩니다 \leftmark
.
\section[]{}
(내가 왜 이러는 걸까요? 이 각 섹션에는 새로운 명명 규칙에 따라 새 이름이 있고, 이전 명명 규칙에 따라 이전 이름이 있습니다. 새 이름과 이전 이름을 모두 선언하기 위해 속임수를 쓰고 사용하려고 합니다. 이 문서에는 목차가 없으며 다른 짧은 이름은 사용하지 않을 것입니다.)
답변1
추악하지만 작동합니다.
\documentclass{article}
\usepackage{everypage}
\usepackage{lipsum}
\newlength{\headeroffset}
\newcommand{\shortname}{}
\newcommand{\longname}{}
\newcommand{\myhead}[2]% #1 = short name, #2 = long name
{\def\shortname{#1}%
\def\longname{#2}%
\settodepth{\headeroffset}{{#1}{#2}}% distance from baseline to bottom
\global\headeroffset=\headeroffset}
\newcommand{\writeheader}{%
\begingroup% preserve global \headeroffset
\advance \headeroffset by -\topmargin% to top of header
\advance \headeroffset by -\headheight% to botom of header
\ifodd\value{page}\raisebox{\headeroffset}[0pt][0pt]{\hspace{\oddsidemargin}%
\makebox[\textwidth][l]{{\shortname}\hfill{\longname}}%
\hspace{-\textwidth}\hspace{-\oddsidemargin}}% return cursor to left
\else\raisebox{\headeroffset}[0pt][0pt]{\hspace{\evensidemargin}%
\makebox[\textwidth][l]{{\longname}\hfill{\shortname}}%
\hspace{-\textwidth}\hspace{-\evensidemargin}}% return cursor to left
\fi\endgroup}
\AddEverypageHook{\writeheader}
\begin{document}
\pagestyle{plain}
\myhead{Short name}{This is a long name}
\lipsum[1-12]
\end{document}