\section 标题为空。在第一段旁边显示数字

\section 标题为空。在第一段旁边显示数字

我正在处理一个文档,其中页眉的数字显示在左边距,例如

1     Main header
      some text within the given section.

1.1   A Subheader
      Some text within the subheader.

我在网上某处找到了以下代码,可以实现这一点

\newlength\titleindent
\setlength\titleindent{1.35cm}

\titleformat{\chapter}[block]
  {\normalfont\huge\bfseries\center}{}{0pt}{\hspace*{-\titleindent}}

\titleformat{\section}
  {\normalfont\Large\bfseries}{\llap{\parbox{\titleindent}{\thesection\hfill}}}{0em}{}

\titleformat{\subsection}
  {\normalfont\large}{\llap{\parbox{\titleindent}{\thesubsection\hfill}}}{0em}{\bfseries}

\titleformat{\subsubsection}
  {\normalfont\normalsize}{\llap{\parbox{\titleindent}{\thesubsubsection}}}{0em}{\bfseries}

\titleformat{\paragraph}[runin]
  {\normalfont\large}{\llap{\parbox{\titleindent}{\theparagraph\hfill}}}{0em}{}

\titleformat{\subparagraph}[runin]
  {\normalfont\normalsize}{\llap{\parbox{\titleindent}{\theparagraph\hfill}}}{0em}{}

\titlespacing*{\chapter}{0pt}{0pt}{20pt}
\titlespacing*{\subsubsection}{0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}
\titlespacing*{\paragraph}{0pt}{3.25ex plus 1ex minus .2ex}{0em}
\titlespacing*{\subparagraph}{0pt}{3.25ex plus 1ex minus .2ex}{0em}

我需要的是某种方式,让我也可以将这些数字添加到文本部分。想象一下这样的事情

\section{Main header}
some text within the given section.

\subsection{A Subheader}
\subsubsection{} Some text within the subheader

会产生

1      Main header
       some text within the given section.

1.1    A Subheader
1.1.1  Some text within the subheader.

这就是我想要的。无论我在哪个级别执行此操作,这都应该有效。在这种情况下,它是一个subsubsection,但它也可能是一个paragraph

我从当前的序言中实际得到的是

1      Main header
       some text within the given section.

1.1    A Subheader
1.1.1  
       Some text within the subheader.

也就是说,subsubsection标题为空的 仍然占据一行,段落显示如下。

tex 标记不必完全像这样,带有空标题。重要的是

  • 数字显示在左边距
  • 层次结构得以保留,因此目录看起来正确(并尊重级别)
  • \ref{...}将插入正确的数字

编辑:这个问题与章节和段落的编号但我无法自己把这些点联系起来

答案1

使用explicit选项titlesec;现在您可以使用来获取部分标题单元#1,并且可以执行条件测试:如果标题为空,则添加一些负垂直间距;否则,排版标题。该想法针对部分、小节和小小节进行了说明(您可以使用我的代码作为参考轻松修改其余级别):

\documentclass{book}
\usepackage[explicit]{titlesec}

\setcounter{secnumdepth}{5}

\newlength\titleindent
\setlength\titleindent{1.35cm}

\titleformat{\chapter}[block]
  {\normalfont\huge\bfseries\center}{}{0pt}{\hspace*{-\titleindent}#1}

\titleformat{\section}
  {\normalfont\Large\bfseries}
  {\llap{\parbox[t]{\titleindent}{\thesection\hfill}}}{0em}
  {\if\detokenize{#1}\relax\relax
      {\Large\bfseries\vspace*{-\dimexpr2.3ex+0.5\baselineskip\relax}}
    \else#1
    \fi
  }

\titleformat{\subsection}
  {\normalfont\large}{\llap{\parbox[t]{\titleindent}{\thesubsection\hfill}}}
  {0em}
  {\if\detokenize{#1}\relax\relax
      {\Large\bfseries\vspace*{-\dimexpr1.5ex+0.5\baselineskip\relax}}
    \else\bfseries#1
    \fi
  }

\titleformat{\subsubsection}
  {\normalfont\normalsize}{\llap{\parbox[t]{\titleindent}{\thesubsubsection}}}
  {0em}
  {\if\detokenize{#1}\relax\relax
      {\Large\bfseries\vspace*{-\dimexpr1.5ex+0.5\baselineskip\relax}}
    \else\bfseries#1
    \fi
  }

\titleformat{\paragraph}[runin]
  {\normalfont\large}{\llap{\parbox{\titleindent}{\theparagraph\hfill}}}{0em}{}

\titleformat{\subparagraph}[runin]
  {\normalfont\normalsize}{\llap{\parbox{\titleindent}{\theparagraph\hfill}}}{0em}{}

\titlespacing*{\chapter}{0pt}{0pt}{20pt}
\titlespacing*{\section}
{0pt}{3.5ex}{2.3ex}
\titlespacing*{\subsection}
{0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}
\titlespacing*{\subsubsection}{0pt}{3.25ex}{1.5ex}
\titlespacing*{\paragraph}{0pt}{3.25ex plus 1ex minus .2ex}{0em}
\titlespacing*{\subparagraph}{0pt}{3.25ex plus 1ex minus .2ex}{0em}

\begin{document}

\chapter{A test chapter}
Some test text. And cross-references to~\ref{sec:test}, \ref{ssec:test} and~\ref{sssec:test}
\section{A test section}
Some test text.
\section{}
\label{sec:test}
Some test text.
\subsection{A test subsection}
Some test text.
\subsection{}
\label{ssec:test}
Some test text.
\subsubsection{A test subsubsection}
Some test text.
\subsubsection{}
\label{sssec:test}
Some test text.

\end{document}

在此处输入图片描述

附带说明一下,您的\parbox数字应该t对齐以获得正确的垂直定位(我在修改后的部分单元的示例代码中使用了它)。

相关内容