忽略目录中的 hfill 部分

忽略目录中的 hfill 部分

我有一份与以下 MWE 类似的文档:

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

% toc dots
\makeatletter
\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
\makeatother

\begin{document}

\tableofcontents

\section{Test section one \hfill ID:100}
\section{Test section two \hfill ID:200}
\section{Test section three \hfill ID:300}
\section{Test section four \hfill ID:400}
\end{document}

得出的结果是:

在此处输入图片描述

我只希望 hfill 出现在章节标题中。我的问题是目录也显示 hfill,有没有办法让目录忽略 hfill?

答案1

可选参数\section可用于为目录提供不同的章节标题。但在这里,它需要不必要地重复标题文本。相反,以下示例定义了一个宏\IgnoreToc。当设置章节标题时,宏只会传递其参数。重新定义宏以忽略目录中的参数:

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

% toc dots
\makeatletter
\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
\makeatother

\DeclareRobustCommand*{\IgnoreToc}[1]{#1}

\begin{document}

\begingroup
  \renewcommand*{\IgnoreToc}[1]{}%
  \tableofcontents
\endgroup

\section{Test section one \IgnoreToc\hfill ID:100}
\section{Test section two \IgnoreToc\hfill ID:200}
\section{Test section three \IgnoreToc\hfill ID:300}
\section{Test section four \IgnoreToc\hfill ID:400}
\end{document}

结果

相关内容