我输入的内容\section{\Large Section title}
使章节标题比原来显示的大小更大。请问如何通过\section
统一重新定义命令来实现此效果,从而使章节标题中的字号更大?
答案1
显然,amsart
不支持\section[]{}
,所以实际上没有必要定义它,但也许是为了以后使用;-)
添加类似“\section{\Large My complex Title}”之类的内容并不是一个好主意,因为这会导致目录中的文本条目过大,看起来很尴尬。
\large
在我看来,如果应用等,则部分标题和数字都应该缩放,因此我将字体更改\begingroup...\endgroup
与重新定义中的字体更改成对。
实际的字体更改是在\sectionstartuphook
命令中完成的,但是其他命令也可以放在那里。
如果请求的是传统方法\section
,则要么调用副本,即\LaTeXStandardSection
照常,要么说\let\section\LaTeXStandardSection
,但是,这将破坏先前重新定义的版本。第一种方法用于示例中的第 3 部分。
\documentclass{amsart}
\usepackage{blindtext}
\let\LaTeXStandardSection\section%
\newcommand{\sectionstartuphook}{\LARGE}
\makeatletter
\newcommand{\unstarredsection@@noopt}[1]{%
\unstarredsection@@opt[#1]{#1}%
}%
\newcommand{\unstarredsection@@opt}[2][]{%
\begingroup%
\sectionstartuphook%
\LaTeXStandardSection[#1]{#2}%
\endgroup%
}%
\newcommand{\starredsection}[1]{%
\begingroup%
\sectionstartuphook%
\LaTeXStandardSection*{#1}%
\endgroup%
}%
\newcommand{\unstarredsection}{%
\@ifnextchar[{\unstarredsection@@opt}{\unstarredsection@@noopt}%
}%
\renewcommand{\section}{%
\@ifstar{\starredsection}{\unstarredsection}%
}%
\begin{document}
\tableofcontents
\section{First}
\blindtext
\clearpage
\section*{Two}
\blindtext
\clearpage
\LaTeXStandardSection{Three}%
\blindtext
\end{document}
答案2
其实很简单(虽然我不喜欢)。该类amsart
使用标准\@startsection
命令,因此只需复制相关代码amsart.cls
并\large
在需要的地方添加即可。哦,而且\Large
真的太多了。
我也改变了\specialsection
,\contentsnamefont
为了统一。
\documentclass{amsart}
\usepackage{blindtext}
\makeatletter
\def\specialsection{\@startsection{section}{1}%
\z@{\linespacing\@plus\linespacing}{.5\linespacing}%
{\normalfont\large\centering}}% added \large
\def\section{\@startsection{section}{1}%
\z@{.7\linespacing\@plus\linespacing}{.5\linespacing}%
{\normalfont\large\scshape\centering}}% added \large
\renewcommand\contentsnamefont{\large\scshape}% added \large
\makeatother
\begin{document}
\tableofcontents
\section*{Introduction}
\blindtext
\section{Preliminary results}
\blindtext
\end{document}