如何做到这一点 amsart 目录排除粗体部分行上的点

如何做到这一点 amsart 目录排除粗体部分行上的点

我在将文档中此类目录的所有属性组合起来时遇到了困难amsart。我希望如果有人能向我展示完整的模板,它将对许多人有用。每次我搜索并找到其中一个属性时,它都无法与其余属性一起使用。希望有人能帮忙。

各节的整行都应加粗,包括节号和节页码。

规格:

  1. 章节页码前没有点线。

  2. 小节和小节编号前的点线。

  3. 缩进的子节与节名对齐,如下所示。

  4. 可在小节和其后的主要节之间进行调整\vspace。如果是小节后跟主要节,则应该可以进行调整\vspace

  5. \vspace给定节中的小节之间没有。\vspace小节之间没有

  6. \hspace可在章节编号和章节标题之间调整。

  7. \hspace可在小节编号和小节标题等之间进行调整。

  8. 可调整“内容”的字体大小和字体。

  9. 章节名称和页码为粗体,小节使用常规文本。

  10. (可选)选择继续下一页时目录页面的分页位置。

  11. (可选)将 ToC 从其默认的较低位置向上移动。

Contents (Larger adjustable size and font)

1  No dot after section number, bold name, then white space, bold page number

   1.1  Subsection not bold . . . . . . . . . . . . . . . . . . . .  1

   1.2  Subsection  . . . . . . . . . . . . . . . . . . . . . . . .  3

        1.2.1  Subsubsection  . . . . . . . . . . . . . . . . . . .  7

        1.2.2  Subsubsection  . . . . . . . . . . . . . . . . . . .  9


2  No dot after number, bold name, then white space, bold page number

   2.1  Subsection not bold . . . . . . . . . . . . . . . . . . . . 11

   2.2  Subsection  . . . . . . . . . . . . . . . . . . . . . . . . 13

        2.2.1  Subsubsection   . . . . . . . . . . . . . . . .  . . 17

        2.2.2  Subsubsection    . . . . . . . . . . . . . . . . . . 19


Appendix A  --also bold with bold page number to the right -->

   A.1  First Section of Appendix A . . . . . . . . . . . . . . . . 21

   A.2  Second Section of Appendix A  . . . . . . . . . . . . . . . 23

        A.2.1  Subsection of second section of Appendix A . . . . . 27

        A.2.2  another Subsection   . . . . . . . . . . . . . . . . 29  

Appendix B  --also bold with bold page number to the right -->

   B.1  First Section of Appendix B . . . . . . . . . . . . . . . . 31

   B.2  Second Section of Appendix B  . . . . . . . . . . . . . . . 33

References  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

以下是一个最小的 tex shell,应评论者的要求添加

    \documentclass[onecolumn,10.5pt,reqno,a4paper]{amsart} 
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amssymb}
\usepackage{mathrsfs}
\usepackage[margin=1.55in]{geometry}
\usepackage{geometry}
\usepackage{graphicx}

\title{Title with adjustable size, font}    
\author{Name with adjustable size, font}

\begin{document}

\pagenumbering{roman}

\maketitle
\tableofcontents
\clearpage
\pagenumbering{arabic}
\setcounter{page}{1}
\pagestyle{myheadings}

\section{section 1, No point after section #, followed by name, whitespace, bold page} Text
\subsection{subsection 1.1 (not subsection 1.1.), followed by dots, regular page #} Text
\subsection{subsection 1.2 (not subsection 1.2.), followed by dots, regular page #} Text
\subsubsection{subsubsection} Text

\section{section 2, No point after section #, followed by name, whitespace, bold page} Text
\subsection{subsection 2.1 (not subsection 1.1.), followed by dots, regular page #} Text
\subsubsection{subsubsection} Text
\subsection{subsection 2.2 (not subsection 1.2.), followed by dots, regular page #} Text

\section{section 3} Text

\appendix
\section{first section of appendix} Text
\subsection{subsection} Text
\subsubsection{subsubsection} Text
\subsection{subsection} Text

\section{second section of appendix} Text

\thebibliography{99}

\end{document}

答案1

amsart文档类的设置方式非常严格,特别是因为它是用于出版物提交的。因此,可用的用户界面变化并不多。这是一件好事。但是,它需要彻底改造 ToC 生成和交互,才能使其变得灵活。

这里似乎可以满足您的所有要求,而无需使用任何附加软件包(除了etoolbox):

在此处输入图片描述

\documentclass{amsart}
\usepackage[showframe,paper=a5paper]{geometry}% Just for this example
\usepackage{etoolbox}

% Modifications to amsart ToC-related macros...
\makeatletter
\let\old@tocline\@tocline
\let\section@tocline\@tocline
% Insert a dotted ToC-line for \subsection and \subsubsection only
\newcommand{\subsection@dotsep}{4.5}
\newcommand{\subsubsection@dotsep}{4.5}
\patchcmd{\@tocline}
  {\hfil}
  {\nobreak
     \leaders\hbox{$\m@th
        \mkern \subsection@dotsep mu\hbox{.}\mkern \subsection@dotsep mu$}\hfill
     \nobreak}{}{}
\let\subsection@tocline\@tocline
\let\@tocline\old@tocline

\patchcmd{\@tocline}
  {\hfil}
  {\nobreak
     \leaders\hbox{$\m@th
        \mkern \subsubsection@dotsep mu\hbox{.}\mkern \subsubsection@dotsep mu$}\hfill
     \nobreak}{}{}
\let\subsubsection@tocline\@tocline
\let\@tocline\old@tocline

\let\old@l@subsection\l@subsection
\let\old@l@subsubsection\l@subsubsection

\def\@tocwriteb#1#2#3{%
  \begingroup
    \@xp\def\csname #2@tocline\endcsname##1##2##3##4##5##6{%
      \ifnum##1>\c@tocdepth
      \else \sbox\z@{##5\let\indentlabel\@tochangmeasure##6}\fi}%
    \csname l@#2\endcsname{#1{\csname#2name\endcsname}{\@secnumber}{}}%
  \endgroup
  \addcontentsline{toc}{#2}%
    {\protect#1{\csname#2name\endcsname}{\@secnumber}{#3}}}%

% Handle section-specific indentation and number width of ToC-related entries
\newlength{\@tocsectionindent}
\newlength{\@tocsubsectionindent}
\newlength{\@tocsubsubsectionindent}
\newlength{\@tocsectionnumwidth}
\newlength{\@tocsubsectionnumwidth}
\newlength{\@tocsubsubsectionnumwidth}
\newcommand{\settocsectionnumwidth}[1]{\setlength{\@tocsectionnumwidth}{#1}}
\newcommand{\settocsubsectionnumwidth}[1]{\setlength{\@tocsubsectionnumwidth}{#1}}
\newcommand{\settocsubsubsectionnumwidth}[1]{\setlength{\@tocsubsubsectionnumwidth}{#1}}
\newcommand{\settocsectionindent}[1]{\setlength{\@tocsectionindent}{#1}}
\newcommand{\settocsubsectionindent}[1]{\setlength{\@tocsubsectionindent}{#1}}
\newcommand{\settocsubsubsectionindent}[1]{\setlength{\@tocsubsubsectionindent}{#1}}

% Handle section-specific formatting and vertical skip of ToC-related entries
% \@tocline{<level>}{<vspace>}{<indent>}{<numberwidth>}{<extra>}{<text>}{<pagenum>}
\renewcommand{\l@section}{\section@tocline{1}{\@tocsectionvskip}{\@tocsectionindent}{}{\@tocsectionformat}}%
\renewcommand{\l@subsection}{\subsection@tocline{2}{\@tocsubsectionvskip}{\@tocsubsectionindent}{}{\@tocsubsectionformat}}%
\renewcommand{\l@subsubsection}{\subsubsection@tocline{3}{\@tocsubsubsectionvskip}{\@tocsubsubsectionindent}{}{\@tocsubsubsectionformat}}%
\newcommand{\@tocsectionformat}{}
\newcommand{\@tocsubsectionformat}{}
\newcommand{\@tocsubsubsectionformat}{}
\expandafter\def\csname toc@1format\endcsname{\@tocsectionformat}
\expandafter\def\csname toc@2format\endcsname{\@tocsubsectionformat}
\expandafter\def\csname toc@3format\endcsname{\@tocsubsubsectionformat}
\newcommand{\settocsectionformat}[1]{\renewcommand{\@tocsectionformat}{#1}}
\newcommand{\settocsubsectionformat}[1]{\renewcommand{\@tocsubsectionformat}{#1}}
\newcommand{\settocsubsubsectionformat}[1]{\renewcommand{\@tocsubsubsectionformat}{#1}}
\newlength{\@tocsectionvskip}
\newcommand{\settocsectionvskip}[1]{\setlength{\@tocsectionvskip}{#1}}
\newlength{\@tocsubsectionvskip}
\newcommand{\settocsubsectionvskip}[1]{\setlength{\@tocsubsectionvskip}{#1}}
\newlength{\@tocsubsubsectionvskip}
\newcommand{\settocsubsubsectionvskip}[1]{\setlength{\@tocsubsubsectionvskip}{#1}}

% Adjust section-specific ToC-related macros to have a fixed-width numbering framework
\patchcmd{\tocsection}{\indentlabel}{\makebox[\@tocsectionnumwidth][l]}{}{}
\patchcmd{\tocsubsection}{\indentlabel}{\makebox[\@tocsubsectionnumwidth][l]}{}{}
\patchcmd{\tocsubsubsection}{\indentlabel}{\makebox[\@tocsubsubsectionnumwidth][l]}{}{}

% Allow for section-specific page numbering format of ToC-related entries
\newcommand{\@sectypepnumformat}{}
\renewcommand{\contentsline}[1]{%
  \expandafter\let\expandafter\@sectypepnumformat\csname @toc#1pnumformat\endcsname%
  \csname l@#1\endcsname}
\newcommand{\@tocsectionpnumformat}{}
\newcommand{\@tocsubsectionpnumformat}{}
\newcommand{\@tocsubsubsectionpnumformat}{}
\newcommand{\setsectionpnumformat}[1]{\renewcommand{\@tocsectionpnumformat}{#1}}
\newcommand{\setsubsectionpnumformat}[1]{\renewcommand{\@tocsubsectionpnumformat}{#1}}
\newcommand{\setsubsubsectionpnumformat}[1]{\renewcommand{\@tocsubsubsectionpnumformat}{#1}}
\renewcommand{\@tocpagenum}[1]{%
  \hfill {\mdseries\@sectypepnumformat #1}}

% Small correction to Appendix, since it's still a \section which should be handled differently
\let\oldappendix\appendix
\renewcommand{\appendix}{%
  \leavevmode\oldappendix%
  \addtocontents{toc}{%
    \protect\settowidth{\protect\@tocsectionnumwidth}{\protect\@tocsectionformat\sectionname\space}%
    \protect\addtolength{\protect\@tocsectionnumwidth}{2em}}%
}
\makeatother

% #1 (default is as required)

% #2

% #3
\makeatletter
\settocsectionnumwidth{2em}
\settocsubsectionnumwidth{2.5em}
\settocsubsubsectionnumwidth{3em}
\settocsectionindent{1pc}%
\settocsubsectionindent{\dimexpr\@tocsectionindent+\@tocsectionnumwidth}%
\settocsubsubsectionindent{\dimexpr\@tocsubsectionindent+\@tocsubsectionnumwidth}%
\makeatother

% #4 & #5
\settocsectionvskip{10pt}
\settocsubsectionvskip{0pt}
\settocsubsubsectionvskip{0pt}
    
% #6 & #7
% See #3

% #8
\renewcommand{\contentsnamefont}{\bfseries\Large}

% #9
\settocsectionformat{\bfseries}
\settocsubsectionformat{\mdseries}
\settocsubsubsectionformat{\mdseries}
\setsectionpnumformat{\bfseries}
\setsubsectionpnumformat{\mdseries}
\setsubsubsectionpnumformat{\mdseries}

% #10
% Insert the following command inside your text where you want the ToC to have a page break
\newcommand{\tocpagebreak}{\leavevmode\addtocontents{toc}{\protect\clearpage}}

% #11
\let\oldtableofcontents\tableofcontents
\renewcommand{\tableofcontents}{%
  \vspace*{-\linespacing}% Default gap to top of CONTENTS is \linespacing.
  \oldtableofcontents}

\setcounter{tocdepth}{3}
\begin{document}

\tableofcontents
\section{First section}
\subsection{First subsection}
\subsection{Second subsection}
\subsubsection{First subsubsection}
\subsubsection{Second subsubsection}
\section{Second section}
\subsection{First subsection}
\tocpagebreak
\subsection{Second subsection}
\subsubsection{First subsubsection}
\subsubsection{Second subsubsection}

\appendix
\section{An appendix section}
\subsection{First appendix subsection}
\subsection{Second appendix subsection}
\subsubsection{First appendix subsubsection}
\subsubsection{Second appendix subsubsection}
\end{document}

具体到要求:

  1. 这是下的默认设置amsart,因此在这方面无需执行任何操作。

  2. 仅调整了\subsection\subsubsection目录条目以包含虚线。这取自latex.ltx使用\@dottedtocline领导者

可以使用以下方法调整点之间的间距(例如)

    \makeatletter
    \renewcommand{\subsection@dotsep}{5}% Adjust subsection dot gap
    \renewcommand{\subsubsection@dotsep}{5}% Adjust subsubsection dot gap
    \makeatother

两者的默认值都是4.5

  1. 除了目录中数字的宽度外,还可以为每个节级\section\subsection和设置缩进。以下不言自明的宏设置默认值:\subsubsection

     \makeatletter
     \settocsectionnumwidth{2em}
     \settocsubsectionnumwidth{2.5em}
     \settocsubsubsectionnumwidth{3em}
     \settocsectionindent{1pc}%
     \settocsubsectionindent{\dimexpr\@tocsectionindent+\@tocsectionnumwidth}%
     \settocsubsubsectionindent{\dimexpr\@tocsubsectionindent+\@tocsubsectionnumwidth}%
     \makeatother
    

小节和小小节的缩进是相对于节和小节设置的,使它们根据需要在目录中对齐。

  1. \@tocline的默认宏amsart在每个分段单元前提供垂直跳跃。这已定制,可以使用多个用户界面宏进行设置。默认值为:

     \settocsectionvskip{10pt}
     \settocsubsectionvskip{0pt}
     \settocsubsubsectionvskip{0pt}
    

这样会在标题上方留下至少 10pt 的间隙\section,但在小节或小小节上方不留间隙(0pt)。

  1. 参见上文(4)。

  2. 这可以使用上面(3)中细化的数字宽度进行调整。

  3. 见(6)。

  4. \contentsnamefont保存目录标题的格式。一个简单的命令\renewcommand就可以改变它。例如,

     \renewcommand{\contentsnamefont}{\bfseries\Large}
    
  5. 目录中的每个部分标题都可以通过以下不言自明的宏在“编号+标题”和“页码”级别进行格式化:

     \settocsectionformat{\bfseries}
     \settocsubsectionformat{\mdseries}
     \settocsubsubsectionformat{\mdseries}
     \setsectionpnumformat{\bfseries}
     \setsubsectionpnumformat{\mdseries}
     \setsubsubsectionpnumformat{\mdseries}
    
  6. (可选)\tocpagebreak插入文档在你想要在分段单元之间断开等效位置的适当位置目录

  7. (可选)\tableofcontents可以进行调整以在适当的位置插入负片\vspace

此改编版本不兼容hyperref不幸的是。如果需要这样做,最好使用以更一致/统一的方式支持此功能的包重新创建 ToC 和分段单元布局,并使用不同的类,如article

相关内容