使用文章文档类,如何删除小节标题末尾的换行符?
我正在使用\documentclass{article}
;我目前不使用titlesec
或任何替代方案;我确实使用fancyhdr
。
答案1
无需任何附加软件包,您需要更新第五论据\@startsection
并使其成为消极的- 通过调用隐式传递\subsubsection
:
\documentclass{article}
\begin{document}
\section{A section} Some text
\subsection{A subsection} Some text
\subsubsection{A subsubsection} Some text
\makeatletter
\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{-1.5ex \@plus -.2ex}% Formerly 1.5ex \@plus .2ex
{\normalfont\normalsize\bfseries}}
\makeatother
\section{A section} Some text
\subsection{A subsection} Some text
\subsubsection{A subsubsection} Some text
\end{document}
这看起来可能魔法...这就是为什么第五论点,以及为什么它必须是负面的。要了解原因,你必须遵循LaTeX 内核。解决此问题的相关代码包含在\@startsection
和中\@sect
:
\def\@startsection#1#2#3#4#5#6{%
\if@noskipsec \leavevmode \fi
\par
\@tempskipa #4\relax
\@afterindenttrue
\ifdim \@tempskipa <\z@
\@tempskipa -\@tempskipa \@afterindentfalse
\fi
\if@nobreak
\everypar{}%
\else
\addpenalty\@secpenalty\addvspace\@tempskipa
\fi
\@ifstar
{\@ssect{#3}{#4}{#5}{#6}}%
{\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
\def\@sect#1#2#3#4#5#6[#7]#8{%
\ifnum #2>\c@secnumdepth
\let\@svsec\@empty
\else
\refstepcounter{#1}%
\protected@edef\@svsec{\@seccntformat{#1}\relax}%
\fi
\@tempskipa #5\relax
\ifdim \@tempskipa>\z@
\begingroup
#6{%
\@hangfrom{\hskip #3\relax\@svsec}%
\interlinepenalty \@M #8\@@par}%
\endgroup
\csname #1mark\endcsname{#7}%
\addcontentsline{toc}{#1}{%
\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}%
\fi
#7}%
\else
\def\@svsechd{%
#6{\hskip #3\relax
\@svsec #8}%
\csname #1mark\endcsname{#7}%
\addcontentsline{toc}{#1}{%
\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}%
\fi
#7}}%
\fi
\@xsect{#5}}
在上面的代码中,我们将焦点放在第五个参数上,用#5
in表示\@startsection
。虽然在 中没有发生任何事情\@startsection
,但它也会#5
作为第五的参数\@sect
。因此,在 内部\@sect
,#5
是存储在 中的长度\@tempskipa
,随后使用
\ifdim \@tempskipa>\z@
%... \@tempskipa (or #5) is positive
\else
%... \@tempskipa (or #5) is negative
\fi
评估参考文献\z@
或0pt
(见做什么\z@
?),因此指定了肯定或否定之间的选择\@tempskipa
。 里面的构造\else
正是您想要的,因为它不包含\@@par
(或换行符/段落符)。 作为比较,请参见 的定义\paragraph
:
\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
{3.25ex \@plus1ex \@minus.2ex}%
{-1em}%
{\normalfont\normalsize\bfseries}}
请注意,参数#5
为负数(-1em
)。
上述讨论的简要摘要载于内核文档,还涵盖在哪里可以找到类似\@startsection
LaTeX 的命令的帮助文件或文档?
使用类似的包titlesec
删除此魔法以更用户友好的方式。例如,请参阅小节以小节名称所在的同一行开始。