以下内容(除 外\setcounter{secnumdepth}{0}
)取自用户数学的答案在在目录中为章节标题文本添加下划线。
\documentclass{article}
\usepackage{titletoc}
% The line below seems to be incompatible with the underlining of the line beneath it
% \setcounter{secnumdepth}{0}
\titlecontents{section}{\thecontentslabel\quad}{\underline}{}{\hfill\thecontentspage}
\begin{document}
\tableofcontents
\section{Foobar}
\end{document}
如果取消注释代码行的注释,则不能同时使\setcounter{secnumdepth}{0}
和下划线起作用。
我想知道为什么,以及是否有办法规避这种情况,而不诉诸包soul
(就像已经做的那样用户在回答中; 以及其他; 在提到的 OP 中),因此至少在很大程度上仍然使用 2 条当前不兼容的线路。
答案1
没有不兼容性,只有语法错误\titlecontents
。
第一个参数是代码前节标签。此外,还有一个可选强制参数,即距离左边距的距离。另外,不要\underline
在这里使用:您可能有很长的标题,并且\underline
不会跨行。请改用\ul
from soul(utf8)
。
编辑:
然而,是如果使用“hyperref”,则会出现不兼容问题。我添加了 Heiko Oberbiek 提供的 hack 来规避该问题。
\documentclass{article}
\usepackage[utf8]{inputenc} \usepackage{titletoc}
\usepackage{soulutf8} % The line below seems to be incompatible with the underlining of the line beneath it
\setcounter{secnumdepth}{0}
\makeatletter
\def\myul#1{%
\ulxxx#1\@ulxxxend
}%
\def\ulxxx\hyper@linkstart#1#2#3\hyper@linkend\@ulxxxend{%
\hyper@linkstart{#1}{#2}{\ul{#3}}\hyper@linkend
}%
\makeatother
\usepackage[colorlinks]{hyperref}
\titlecontents{section}[0em]{}{\thecontentslabel\quad\myul}{\myul}{\hfill\contentspage}
\begin{document}
\tableofcontents
\section{Foobar. A quite long, long section title. A still longer, longer, longer subsection title}
Some test.
\newpage
\section{Another, shorter, section}
Some more text.
\end{document}