我试图防止在(子)节声明之后发生自动换行,但仅限于某些子节。
我知道我可以使用:
\titleformat{\subsection}[runin]
但这将适用于所有小节,而不仅仅是我想要的小节。
这样做的动机是我想要定义将出现在目录中的部分,所以我不能使用像 \textbf{...} 这样的东西。
这可能吗?任何帮助都将不胜感激。
答案1
欢迎来到 TeX.SE!由于我一开始忽略了“未编号标准”,我将提供两种实现。最简单的一种是针对编号的插入小节,让我们先从它开始。
编号插入小节
\documentclass{article}
\usepackage{lipsum}
\makeatletter
\newcommand*{\runinsubsection}{%
\@startsection{subsection}%
{2}% level
{\z@}% indentation of heading from the left margin
{-3.25ex\@plus -1ex \@minus -.2ex}% absolute value = beforeskip
{-1.5em \@plus -.1em}% when negative, opposite = skip to leave right of a
% run-in heading.
{\normalfont\large\bfseries}% style
}
\makeatother
\begin{document}
\tableofcontents
\section{A section}
\lipsum[1]
\subsection{A subsection}
\lipsum[2]
\runinsubsection{A run-in subsection}
\lipsum[3]
\runinsubsection{Other run-in subsection}
\lipsum[4]
\subsection{Other subsection}
\lipsum[2]
\end{document}
未编号的插入小节
这些稍微有点棘手,因为未编号的章节、子章节等通常不会到达目录。因此,我们对未编号的子章节使用正常代码,只是我们临时对其进行修补,将插入的子章节标题添加到目录中。
\documentclass{article}
\usepackage{etoolbox}
\usepackage{lipsum}
\makeatletter
\let\@ssect@ORIG\@ssect
\let\@runin@ssect\@ssect
\apptocmd{\@runin@ssect}{%
\addcontentsline{toc}{subsection}{%
% Comment out the following line to remove “phantom number” indentation in
% the TOC
\protect\numberline{}% no number in TOC
#5% the title
}%
\let\@ssect\@ssect@ORIG % restore the normal \@ssect
}{}{\FAILED}
\newcommand*{\runinsubsection}{%
\let\@ssect\@runin@ssect
\@startsection{subsection}%
{2}% level
{\z@}% indentation of heading from the left margin
{-3.25ex\@plus -1ex \@minus -.2ex}% absolute value = beforeskip
{-1.5em \@plus -.1em}% when negative, opposite = skip to leave right of a
% run-in heading.
{\normalfont\large\bfseries}% style
*% we want an unnumbered subsection
}
\makeatother
\begin{document}
\tableofcontents
\section{A section}
\lipsum[1]
\subsection{A subsection}
\lipsum[2]
\runinsubsection{A run-in subsection}
\lipsum[3]
\runinsubsection{Other run-in subsection}
\lipsum[4]
\subsection{Other subsection}
\lipsum[2]
\end{document}