我在将文档中此类目录的所有属性组合起来时遇到了困难amsart
。我希望如果有人能向我展示完整的模板,它将对许多人有用。每次我搜索并找到其中一个属性时,它都无法与其余属性一起使用。希望有人能帮忙。
各节的整行都应加粗,包括节号和节页码。
规格:
章节页码前没有点线。
小节和小节编号前的点线。
缩进的子节与节名对齐,如下所示。
可在小节和其后的主要节之间进行调整
\vspace
。如果是小节后跟主要节,则应该可以进行调整\vspace
。\vspace
给定节中的小节之间没有。\vspace
小节之间没有\hspace
可在章节编号和章节标题之间调整。\hspace
可在小节编号和小节标题等之间进行调整。可调整“内容”的字体大小和字体。
章节名称和页码为粗体,小节使用常规文本。
(可选)选择继续下一页时目录页面的分页位置。
(可选)将 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}
具体到要求:
这是下的默认设置
amsart
,因此在这方面无需执行任何操作。仅调整了
\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
。
除了目录中数字的宽度外,还可以为每个节级
\section
、\subsection
和设置缩进。以下不言自明的宏设置默认值:\subsubsection
\makeatletter \settocsectionnumwidth{2em} \settocsubsectionnumwidth{2.5em} \settocsubsubsectionnumwidth{3em} \settocsectionindent{1pc}% \settocsubsectionindent{\dimexpr\@tocsectionindent+\@tocsectionnumwidth}% \settocsubsubsectionindent{\dimexpr\@tocsubsectionindent+\@tocsubsectionnumwidth}% \makeatother
小节和小小节的缩进是相对于节和小节设置的,使它们根据需要在目录中对齐。
\@tocline
的默认宏amsart
在每个分段单元前提供垂直跳跃。这已定制,可以使用多个用户界面宏进行设置。默认值为:\settocsectionvskip{10pt} \settocsubsectionvskip{0pt} \settocsubsubsectionvskip{0pt}
这样会在标题上方留下至少 10pt 的间隙\section
,但在小节或小小节上方不留间隙(0pt)。
参见上文(4)。
这可以使用上面(3)中细化的数字宽度进行调整。
见(6)。
\contentsnamefont
保存目录标题的格式。一个简单的命令\renewcommand
就可以改变它。例如,\renewcommand{\contentsnamefont}{\bfseries\Large}
目录中的每个部分标题都可以通过以下不言自明的宏在“编号+标题”和“页码”级别进行格式化:
\settocsectionformat{\bfseries} \settocsubsectionformat{\mdseries} \settocsubsubsectionformat{\mdseries} \setsectionpnumformat{\bfseries} \setsubsectionpnumformat{\mdseries} \setsubsubsectionpnumformat{\mdseries}
(可选)
\tocpagebreak
插入文档在你想要在分段单元之间断开等效位置的适当位置目录。(可选)
\tableofcontents
可以进行调整以在适当的位置插入负片\vspace
。
此改编版本不兼容hyperref
不幸的是。如果需要这样做,最好使用以更一致/统一的方式支持此功能的包重新创建 ToC 和分段单元布局,并使用不同的类,如article
。