目录更新部分

目录更新部分

我正在使用以下结构:

\section[short chapter]{my long long long long section}

我想在目录中使用长章节名称,因为现在那里使用的是短章节。可以吗?

更新

我的章节和部分在页眉中重叠,我使用报告样式的 fancyhead。作为解决方案,我发现上面描述的结构可以缩短章节。这导致目录行更短。现在,我想将 long long 部分用作目录。

答案1

以下内容可能足以满足您的需求。它提供了一个额外的可选参数,\section用于以类似于以下方式提供的界面的方式排版标题:memoir

\documentclass[twoside]{report}

\usepackage{lipsum}% Just for this example
\usepackage{xpatch}

\let\oldsection\section
\RenewDocumentCommand{\section}{s o o m}{%
  \markright{}% Clear right mark
  \IfBooleanTF{#1}
    % \section*
    {\IfNoValueTF{#2}
       % \section*
       {\IfNoValueT{#3}
          % \section*{...}
          {\oldsection*{#4}}
       }
       % \section*[.]
       {\oldsection*{#4}%
       \addcontentsline{toc}{section}{\protect\numberline{}#2}%
       \IfNoValueF{#3}
          % \section*[.][..]{...}
          {\markright{#3}}
       }
    }
    % \section
    {\IfNoValueTF{#2}
       % \section
       {\oldsection{#4}}
       % \section[.]
       {\oldsection[#2]{#4}
        \IfNoValueF{#3}
          % \section[.][..]{...}
          {\markright{#3}}
       }
    }
}

\pagestyle{headings}
\sloppy% Just for this example

\begin{document}

\tableofcontents

\chapter{A chapter}
\lipsum[1-20]

\section{A section}
\lipsum[1-20]

\section[ToC entry][Header entry]{Another section}
\lipsum[1-20]

\section*{A starred section}
\lipsum[1-20]

\section*[Starred ToC section]{Another starred section}
\lipsum[1-20]

\end{document}

您可以使用

\section[*][<ToC>][<header>]{<title>}

当然,有些条件反射是没有必要的,因为你不能只拥有第二可选参数,而不是第一个(使用默认的[..]符号)。

答案2

正如 Johannes_B 提到的,您应该在序言中尝试这样的事情:

\let\oldsection\section
\renewcommand{\section}[2][]{\oldsection{#2}\def\currentheading{#1}}

可选参数将存储在其中,\currentheading并且“默认”\section{}将仅使用长标题执行。替换\currentheading为您需要的任何内容以实现您想要的标题。

编辑:为了了解 \section*,您应该使用:

\documentclass{article}

\usepackage{xparse}

\let\oldsection\section
\def\currentheading{}

\RenewDocumentCommand{\section}{som}{%
  \IfBooleanTF{#1}%
  {\oldsection*{#3}}%
  {\oldsection{#3}}%
  \IfValueTF{#2}%
  {\def\currentheading{#2}}%
  {}%
}

\begin{document}


\section[head]{foo}
\section[overwritten]{bar}
\section*{buz}
The current heading should be overwritten ... it is \currentheading.

\end{document}

相关内容