自动段落编号

自动段落编号

我正在尝试创建一个 LaTeX 文档,该文档将自动对段落进行编号而无需使用\paragraph- 这样做的原因是我正在处理由不使用 LaTeX 的其他人编写的文本。

编辑:这就是为什么解决方案段落编号无法解决我的特定问题,因为它要求\paragraph将 替换为\item。据我所知,这给了我同样的问题。

我搜索了几种解决方案,这些解决方案帮助我取得了进展,同时也警告说使用\everypar可能会有问题……目前的情况是我几乎有解决方案,但新的\section\subsection导致后续段落的编号丢失,如附图所示。其他段落的编号正确。

对于我来说,其他的编号解决方案也是可以接受的——我对于段落编号是否连续流经所有章节或遵循章节内的模式并没有真正的偏好。

我的最小工作示例如下(请注意,我需要使用该\titlesec包使文档看起来漂亮)。我真的对这个很困惑 - 任何帮助或指示都将不胜感激!

\documentclass[11pt]{article}
\usepackage{lipsum}
\usepackage{titlesec}    
\setcounter{secnumdepth}{3}

\newcounter{para}
\newcommand*{\numberedparagraph}{%
\refstepcounter{para}
\textbf{\thepara.\space}
}

\let\oldep\everypar\newtoks\everypar  
\oldep{\the\everypar\everypar{\numberedparagraph}}

\begin{document}

\everypar{\numberedparagraph}

\section{Section 1}

\lipsum[1-2]

\section{Section 2}

\lipsum[4-5]

\subsection{A Subsection}

\lipsum[6-7]

\end{document}

平均能量损失

答案1

感谢@NicolaTalbot 为我指明正确的方向。

解决方案是重新定义\@afterheading。但这并不完全正确,因为段落编号的缩进有点不对,所以我通过将段落缩进设置为 0 来解决这个问题。

更正后的代码和图像如下:

\documentclass[11pt]{article}
\usepackage{lipsum}
\usepackage{titlesec}
\setcounter{secnumdepth}{3}

\setlength{\parindent}{0em} % indent subsequent paragraphs

\newcounter{para}
\newcommand*{\numberedparagraph}{%
    \refstepcounter{para}
    \textbf{\thepara.\space}
}

\let\oldep\everypar\newtoks\everypar  
\oldep{\the\everypar\everypar{\numberedparagraph}}


\makeatletter %
\renewcommand{\@afterheading}{%
  \@nobreaktrue
\everypar{%
    \if@nobreak
      \@nobreakfalse
      \clubpenalty\@M
      \if@afterindent
      \else
    {\setbox\z@\lastbox}%
  \fi
\else
  \clubpenalty\@clubpenalty
  \everypar{\numberedparagraph}% <- modification
\fi
\numberedparagraph% <- modification
  }%
}


\begin{document}



\everypar{\numberedparagraph}

\section{Section 1}

\lipsum[1-2]

\section{Section 2}

\lipsum[4-5]

\subsection{A Subsection}

\lipsum[6-7]

\end{document}

在此处输入图片描述

相关内容