如何在页眉中使用简短的小节标题,但不在目录中使用?

如何在页眉中使用简短的小节标题,但不在目录中使用?

我有一个(单面)文档,其中有 fancyhdr 和 pagestyle fancy,因此它在右侧标题上显示节标题,在左侧标题上显示子节标题。如果节和子节标题很长,它们就会开始相互重叠。

例子:

\documentclass[a4paper,10pt]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage{lipsum}
\usepackage{fancyhdr}
\pagestyle{fancy}

\begin{document}

\section{some section with quite a lengthy title}
\lipsum
\subsection{very very very long title of subsection}
\lipsum

\end{document}

我知道两种解决方案:

  1. 给出简短的章节/小节标题,例如

    \documentclass[a4paper,10pt]{scrartcl}
    \usepackage[utf8x]{inputenc}
    \usepackage{lipsum}
    \usepackage{fancyhdr}
    \pagestyle{fancy}
    
    \begin{document}
    
    \section[short section]{some section with quite a lengthy title}
    \lipsum
    \subsection[short subsection]{very very very long title of subsection}
    \lipsum
    
    \end{document}
    

    我不喜欢这个,因为我不想在我的目录中有简短版本。

  2. \sectionmark

    \documentclass[a4paper,10pt]{scrartcl}
    \usepackage[utf8x]{inputenc}
    \usepackage{lipsum}
    \usepackage{fancyhdr}
    \pagestyle{fancy}
    
    \begin{document}
    
    \section{some section with quite a lengthy title}
    \sectionmark{short section}
    \lipsum
    \subsection{very very very long title of subsection}
    \subsectionmark{short subsection}
    \lipsum
    
    \end{document}
    

    但这根本行不通——第 2 页上的短小节标记没有得到遵守,但第 3 页上的使用却正确无误。这感觉真的很不对劲。

那么,我怎样才能使版本 2 正确运行?

答案1

这个问题在TeX 常见问题解答。在左侧页面上,标题中使用的文本是页面上第一个标记的文本,因此您\subsectionmark来得太晚了。可以通过在标题本身中再次添加此命令来解决此问题:

\documentclass[a4paper,10pt]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage{lipsum}
\usepackage{fancyhdr}
\pagestyle{fancy}

\begin{document}
\tableofcontents

\section[some section with quite a lengthy title]{some section with quite 
a lengthy title%
\sectionmark{short section}}
\sectionmark{short section}
\lipsum

\subsection[very very very long title of subsection]{very very very long
title of subsection%
\subsectionmark{short subsection}}
\subsectionmark{short subsection}

\lipsum

\end{document}

由于写入目录的方式,您还必须将完整标题添加到命令的可选参数中\(sub)section,如上所述。由于这相当笨拙,因此引入以下命令是合理的,例如\markedsection实现此目的:

\documentclass[a4paper,10pt]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage{lipsum}
\usepackage{fancyhdr}
\pagestyle{fancy}

\newcommand{\markedsection}[2]{\section[#2]{#2%
\sectionmark{#1}}
\sectionmark{#1}}

\newcommand{\markedsubsection}[2]{\subsection[#2]{#2%
\subsectionmark{#1}}
\subsectionmark{#1}}

\begin{document}
\tableofcontents

\markedsection{short section}{Some section with quite a lengthy title}

\lipsum

\markedsubsection{short subsection}{Very very very long title of subsection}

\lipsum

\end{document}

对于标准情况,您仍然可以使用普通命令。

如果您准备切换到memoir类,那么您将拥有有助于此过程的分段命令,因为它们有两个可选参数:一个用于头部,一个用于目录。

在此处输入图片描述

相关内容