是否可以在標題中同時使用該節的長名稱和短名稱?

是否可以在標題中同時使用該節的長名稱和短名稱?

我正在使用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}

相關內容