我有一份与以下 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}