我想获得有关文章目录的建议。我想知道以下由于小节数比节数长而导致的蛇形输出是我的错误还是故意这样做的amsart
?如果不是,我想知道如何手动更正它?我尝试过双标题(一个在方括号中,在文本前有更多空间)但没有结果。
\documentclass{amsart}
% \usepackage{titletoc}
\usepackage{amsthm}
\usepackage[english]{babel}
\begin{document}
\tableofcontents
%% --------------------------
\section{First Movement}
\subsection{Allegro con brio}
\subsection{Allegro senza brio}
\section{Second Movement}
\subsection{Adagio}
\subsection{Piu adagio}
\subsection{Ancora piu adagio}
\section{Third Movement: ``la sveglia''}
\section{Finale}
\subsection{Prestisisimo}
\end{document}
答案1
强力解决方案:
\documentclass{amsart}
\usepackage[english]{babel}
\makeatletter
\renewcommand{\l@section}{\@tocline{1}{0pt}{0pc}{}{}}
\renewcommand{\l@subsection}{\@tocline{2}{0pt}{0pc}{}{}}
\renewcommand{\tocsection}[3]{%
\indentlabel{\@ifnotempty{#2}{\makebox[3em][l]{\ignorespaces#1 #2.}}}#3%
}
\let\tocsubsection\tocsection
\makeatother
\begin{document}
\tableofcontents
\section{First Movement}
\subsection{Allegro con brio}
\subsection{Allegro senza brio}
\section{Second Movement}
\subsection{Adagio}
\subsection{Pi\`u adagio}
\subsection{Ancora pi\`u adagio}
\section{Third Movement: ``la sveglia''}
\section{Finale}
\subsection{Prestissimo}
\end{document}
然而,当部分数大于九时,应该对其进行改进;如果希望它尽可能通用,那么这并不是一项简单的任务。
答案2
另一个强有力的解决方案,但缩进子部分,正如最初为 ams 文档类所打算的那样。
\documentclass{amsart}
\usepackage{amsthm}
\usepackage[english]{babel}
\makeatletter
\renewcommand{\l@section}{\@tocline{1}{0pt}{2pc}{}{}}
\renewcommand{\l@subsection}{\@tocline{2}{0pt}{3.5pc}{}{}}
\makeatother
\begin{document}
\tableofcontents
%% --------------------------
\section{First Movement}
\subsection{Allegro con brio}
\subsection{Allegro senza brio}
\section{Second Movement}
\subsection{Adagio}
\subsection{Piu adagio}
\subsection{Ancora piu adagio}
\section{Third Movement: ``la sveglia''}
\section{Finale}
\subsection{Prestisisimo}
\end{document}
ams 文档类最初旨在自动设置缩进(两次运行后),方法是将.aux
各种“部分”数字的实际宽度发布到文件中,并在下一次传递时读取这些值。当前版本的类确实将信息写入文件.aux
,但它从未被分配给正确的元素。显然是一个错误,但尚未被破译。