![为“文章”文档设计样式](https://linux22.com/image/250920/%E4%B8%BA%E2%80%9C%E6%96%87%E7%AB%A0%E2%80%9D%E6%96%87%E6%A1%A3%E8%AE%BE%E8%AE%A1%E6%A0%B7%E5%BC%8F.png)
我正在使用该类编写文档文章。有些事情我想改变,例如:
- 始终居中
\section
并\subsection
显示标题,无需每次手动操作\begin{center} ... \end{center}
- 减少列表元素之间的间距,而无需
\begin{enumerate}[itemsep=-1mm]
每次都写入。 - ETC。
我可以在哪里找到有关此内容的说明?我找不到可以查找所有选项和键的“手册”。如果没有手册,我该如何实现这些结果?
答案1
要自定义分段单元,您可以使用sectsty
包(用于相对“较小”的更改)或titlesec
包;为了定制列表式环境,您可以使用enumitem
包;enumitem
和titlesec
都有很好的文档记录,文档中包含大量示例。这里有一个小例子来说明你在问题中提到的变化:
\documentclass{article}
\usepackage{titlesec}
\usepackage{enumitem}
\titleformat*{\section}{\centering\bfseries\Large}
\titleformat*{\subsection}{\centering\bfseries\large}
\setlist[enumerate]{itemsep=-1mm}
\begin{document}
\section{A test numbered section}
\begin{enumerate}
\item First item.
\item Second item.
\end{enumerate}
\subsection{A test numbered subsection}
\subsection*{A test unnumbered subsection}
\section*{A test unnumbered section}
\end{document}
上述方法主要适用于标准文档类(book
、article
和report
);其他类(memoir
或来自包的类KOMA-Script
)有自己的机制;例如,应该注意,memoir
或KOMA-Script
类和titlesec
是不兼容的(参见关于 memoir 和 titlesec 不兼容和KOMA-Script 与 titlesec 之间的不兼容性)。
出于完整性考虑,我将使用 document 类为问题中提到的两个问题添加一个可能的解决方案memoir
。正如我之前所说,现在不建议使用titlesec
来自定义章节单元标题,而是使用类提供的功能;我使用了 class 选项article
和预定义的crosshead
章节样式来获取章节的居中标题(现在使用 生成\chapter
),并用于\setsecheadstyle
居中小节标题(现在使用 生成\section
);enumitem
仍然用于自定义enumerate
环境:
\documentclass[article]{memoir}
\usepackage{enumitem}
\chapterstyle{crosshead}
\setsecheadstyle{\centering\bfseries\large}
\setlist[enumerate]{itemsep=-1mm}
\begin{document}
\chapter{A test numbered section}
\begin{enumerate}
\item First item.
\item Second item.
\end{enumerate}
\section{A test numbered subsection}
\section*{A test unnumbered subsection}
\chapter*{A test unnumbered section}
\end{document}
scrartcl
从捆绑包中使用KOMA-Script
,再次使用titlesec
是不可取的,但你可以改用\sectfont
:
\documentclass{scrartcl}
\usepackage{enumitem}
\renewcommand\sectfont{\centering\bfseries}
\setlist[enumerate]{itemsep=-1mm}
\begin{document}
\section{A test numbered section}
\begin{enumerate}
\item First item.
\item Second item.
\end{enumerate}
\subsection{A test numbered subsection}
\subsection*{A test unnumbered subsection}
\section*{A test unnumbered section}
\end{document}
正如我所使用的\sectfont
,这些变化也会影响子部分。
最后,如果您想将更改应用于amsart
文档类,则只需更改子节格式(默认情况下,此类中的节标题居中);可以通过重新定义来实现更改,\subsection
如在 中实现的amsart.cls
,或使用titlesec
(如第一个示例所示,因为它titlesec
与 AMS 系列文档类兼容),或者通过借助包等修补此命令etoolbox
。一个小例子(此类中的列表具有更紧密的垂直间距,因此我保留了修改注释):
\documentclass{amsart}
\usepackage{enumitem}
\makeatletter
\def\subsection{\@startsection{subsection}{2}%
\z@{.5\linespacing\@plus.7\linespacing}{.5\linespacing}%
{\normalfont\bfseries\centering}}
\makeatother
%\setlist[enumerate]{itemsep=-1mm}
\begin{document}
\section{A test numbered section}
\begin{enumerate}
\item First item.
\item Second item.
\end{enumerate}
\subsection{A test numbered subsection}
\subsection*{A test unnumbered subsection}
\section*{A test unnumbered section}
\end{document}