各位大佬,最近在使用amsart宏包,想实现如下功能。
想让section和subsection样式一样。
我使用了titlesec
宏包,
\titleformat*{\section}{\large\bfseries}{\thesection.\quad}{0pt}{}{}
确实字体和大小满足了,但是 节序号和标题之间的缩紧,无论我怎么设置label都没用。很奇怪。
还有一个问题是,“abstract”如何加粗呢?
我在amsclass.dtx
中找到了
\newenvironment{abstract}{%
\ifx\maketitle\relax
\ClassWarning{\@classname}{Abstract should precede
\protect\maketitle\space in AMS document classes; reported}%
\fi
\global\setbox\abstractbox=\vtop \bgroup
\normalfont\Small
\list{}{\labelwidth\z@
\leftmargin3pc \rightmargin\leftmargin
\listparindent\normalparindent \itemindent\z@
\parsep\z@ \@plus\p@
% \end{macrocode}
% In order to get equation numbers indented with the rest of the
% abstract, we have to do this:
% \begin{macrocode}
\let\fullwidthdisplay\relax
}%
\item[\hskip\labelsep\scshape\abstractname.]%
}{%
\endlist\egroup
% \end{macrocode}
% If the abstract was supposed to be typeset earlier, then
% \cs{@setabstract} is now equal to \cs{relax}, and we had better
% drop the contents of the abstract box onto the page immediately, to
% salvage the situation as best we can.
% \begin{macrocode}
\ifx\@setabstract\relax \@setabstracta \fi
}
感谢各位前辈抽出宝贵时间指点,附件为MWE
mwe.zip
titlesec
目前可能并不兼容 AMS 文档类:https://tex.stackexchange.com/questions/543478/
如果只是想改一下 \section
的字体,可以在导言区加上:
\makeatletter
% \def\contentsnamefont{\bfseries} % 如果要改Contents
\def\section{\@startsection{section}{1}%
\z@{.7\linespacing\@plus\linespacing}{.5\linespacing}%
{\normalfont\large\bfseries\centering}}
\makeatother
想把 Abstract 加粗,只要把你贴出的那段代码
\item[\hskip\labelsep\scshape\abstractname.]
里的 \scshape
改成 \bfseries
即可。最好在导言区重定义 abstract
环境,而不修改 amsart.cls
文件。
另外,如果要查看某个文档类里的某个命令或环境的定义,.dtx
文件不是最好的选择,它可能包含无关代码,查看对应的 .cls
文件即可。
补充一下后续,在@雾月大佬的帮助下,成功解决。另外我修改了目录,参考了(https://tex.stackexchange.com/questions/322268/table-of-contents-amsart)
最终效果:
修改后的mwe见附件。
具体修改的代码如下
\makeatletter
\def\contentsnamefont{\bfseries} % 如果要改Contents
\def\section{\@startsection{section}{1}%
\z@{.7\linespacing\@plus\linespacing}{.5\linespacing}%
{\normalfont\large\bfseries\centering}}
\def\subsubsection{\@startsection{subsubsection}{1}%
\z@{.7\linespacing\@plus\linespacing}{.5\linespacing}%
{\normalfont}}
\renewenvironment{abstract}{%
\ifx\maketitle\relax
\ClassWarning{\@classname}{Abstract should precede
\protect\maketitle\space in AMS document classes; reported}%
\fi
\global\setbox\abstractbox=\vtop \bgroup
\normalfont\Small
\list{}{\labelwidth\z@
\leftmargin3pc \rightmargin\leftmargin
\listparindent\normalparindent \itemindent\z@
\parsep\z@ \@plus\p@
\let\fullwidthdisplay\relax
}%
\item[\hskip\labelsep\bfseries\abstractname.]%
}{%
\endlist\egroup
\ifx\@setabstract\relax \@setabstracta \fi
}
\def\@setabstract{\@setabstracta \global\let\@setabstract\relax}
\def\@setabstracta{%
\ifvoid\abstractbox
\else
\skip@20\p@ \advance\skip@-\lastskip
\advance\skip@-\baselineskip \vskip\skip@
\box\abstractbox
\prevdepth\z@ % because \abstractbox is a vtop
\fi
}
\renewcommand\contentsnamefont{\Large\bfseries}
%Table of Contents
\setcounter{tocdepth}{3}
% Add bold to \section titles in ToC and remove . after numbers
\renewcommand{\tocsection}[3]{%
\indentlabel{\@ifnotempty{#2}{\bfseries\ignorespaces#1 #2\quad}}\bfseries#3}
% Remove . after numbers in \subsection
\renewcommand{\tocsubsection}[3]{%
\indentlabel{\@ifnotempty{#2}{\ignorespaces#1 #2\quad}}#3}
%\let\tocsubsubsection\tocsubsection% Update for \subsubsection
%...
\newcommand\@dotsep{4.5}
\def\@tocline#1#2#3#4#5#6#7{\relax
\ifnum #1>\c@tocdepth % then omit
\else
\par \addpenalty\@secpenalty\addvspace{#2}%
\begingroup \hyphenpenalty\@M
\@ifempty{#4}{%
\@tempdima\csname r@tocindent\number#1\endcsname\relax
}{%
\@tempdima#4\relax
}%
\parindent\z@ \leftskip#3\relax \advance\leftskip\@tempdima\relax
\rightskip\@pnumwidth plus1em \parfillskip-\@pnumwidth
#5\leavevmode\hskip-\@tempdima{#6}\nobreak
\leaders\hbox{$\m@th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill
\nobreak
\hbox to\@pnumwidth{\@tocpagenum{\ifnum#1=1\bfseries\fi#7}}\par% <-- \bfseries for \section page
\nobreak
\endgroup
\fi}
\AtBeginDocument{%
\expandafter\renewcommand\csname r@tocindent0\endcsname{0pt}
}
\def\l@subsection{\@tocline{2}{0pt}{2.5pc}{5pc}{}}
\def\l@subsubsection{\@tocline{2}{0pt}{4pc}{5pc}{}}
\makeatother
请问大佬:
如果我想学习写出
我该去看什么书呢,我看了刘海洋的LaTeX入门,似乎讲到的不多。
@u781 The TeXBook、TeX by Topic 这两本书讲的是 TeX 里最基础的东西。里面的和断行、分页、Output Routine 相关的如果不感兴趣可以不看;如果只是想用 LaTeX,这两本书里的和数学模式相关的也可以不看,它们非常底层,用 LaTeX 的时候很少用到。其它内容的话,如果想对 TeX 了解得更深一点则是必看。
看完这两本书后就有能力看懂一部分宏包的代码了。但是还需要了解一些 LaTeX 的命令,比如要知道
\centering
是做什么的。首先要读的就是clsguide.pdf
;其次是source2e.pdf
(如果安装了 TeXLive,在命令行输入texdoc clsguide
、texdoc source2e
即可查看)里,有了前两本书的基础,这个source2e.pdf
能看懂一些,按需查看即可,不必按顺序读。但还有些命令的定义很复杂或者是与驱动、字体相关,看不懂也正常。还有就是一些常见的宏包了,读它们的文档即可,用的时候有问题再去读源码。具体到上面这个问题,就是在
amsart.cls
里找\section
和abstract
的定义,然后找到设置字体的地方,再按需修改。感谢大佬指点迷津!