헤더에 섹션의 긴 이름과 짧은 이름을 모두 사용할 수 있나요?

헤더에 섹션의 긴 이름과 짧은 이름을 모두 사용할 수 있나요?

나는 을(를) 사용하고 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}

관련 정보