我正在使用这些包
\documentclass{amsart}
\usepackage{amsmath}
它们不会在章节标题和后续文本之间留出垂直空间。
因此我尝试使用 titlesec 包的 titlespacing 命令。
\titlespacing{<command>}{<left>}{<before-sep>}{<after-sep>}
where:
<left> increases the left margin.
<before-sep> is the vertical space before the title.
<after-sep> is the separation between title and non-sectioning text.
所以我尝试
\usepackage{titlesec}
\titlespacing{\subsection}{0em}{0em}{0.5em}
但我得到了错误
Undefined control sequence.
<argument> ...on\endcsname \protect \@secnumpunct
在线
\section{main}
和
\subsection{subsection title}
我不明白错误是什么,以及为什么它会在 触发\section
,而我只是想修改\subsection
另外,文档在哪里?我花了半个小时搜索,什么也没找到。
以下是完整的代码
\documentclass{amsart}
\usepackage{amsmath}
\usepackage{titlesec} % <- This lines try to modify the subsection
\titlespacing{\subsection}{0em}{0em}{0.5em} % <- This lines try to modify the subsection
\begin{document}
\section{Main section}% <- This line triggers the error
text main section is on new line
\subsection{subsection title} % <- This line triggers the error
I want this text separated on a new line
\end{document}
答案1
你得到
! Undefined control sequence.
<argument> ...on\endcsname \protect \@secnumpunct
l.9 \section{Main section}
% <- This line triggers the error
?
! Undefined control sequence.
<argument> ...on\endcsname \protect \@secnumpunct
l.12 \subsection{subsection title}
% <- This line triggers the error
?
这仅意味着一件事:titlesec
与不兼容amsart
。
为什么?因为amsart
重新定义了\@startsection
而titlesec
期望命令的内核版本。而且因为在 AMS 他们不希望用户修改样式。
\documentclass{amsart}
\usepackage{amsmath}
\makeatletter
% here the original definition
%\def\subsection{\@startsection{subsection}{2}%
% \z@{.5\linespacing\@plus.7\linespacing}{-.5em}%
% {\normalfont\bfseries}}
\def\subsection{\@startsection{subsection}{2}%
\z@{-.5\linespacing\@plus-.7\linespacing}{1sp}%
{\normalfont\bfseries}}
\makeatother
\begin{document}
\section{Main section}
The text main section is on a new line
\subsection{Subsection title}
I want this text separated on a new line
\end{document}
如果希望标题后的第一行缩进,请将相关代码更改为
\def\subsection{\@startsection{subsection}{2}%
\z@{.5\linespacing\@plus.7\linespacing}{1sp}%
{\normalfont\bfseries}}
答案2
我通过在小节标题末尾添加“幻影”文本,然后进行段落跳转来“解决”了这个问题。
\subsection{subsection title}\phantom{dummy_text}\par\samepage
编辑:在 egreg 注释之后,我\samepage
在行尾添加了内容,以防止标题与不同页面上的下一行分开。