Каким образом titlesec неявно вызывает sectionbreak?

Каким образом titlesec неявно вызывает sectionbreak?

Как работает package titlesec? Я никогда не вызывал его \sectionbreakявно в своем коде, но, похоже, \sectionbreakон вызывается между\section

\documentclass[fleqn]{report}
\usepackage{titlesec}
\newcommand{\sectionbreak}{\clearpage \setcounter{equation}{0}}

\begin{document}
\section{One}
\begin{equation} 2+2=3.99      \end{equation}
\begin{equation} \pi^2=9.86    \end{equation}

\section{Two}
\begin{equation} E=mc^2        \end{equation}
\begin{equation} v=\frac{e}{t} \end{equation}

\subsection{Two \& One}
\begin{equation} 2+2=22 \end{equation}
\end{document}

решение1

Согласно странице 8 пфтитулсекmanual, \sectionbreakприменяется после каждой команды раздела. Если вы просмотрите код пакета, в titlesec.sty, то вы найдете два экземпляра:

\@ifundefined{#6break}%
  {\addpenalty{\@secpenalty}}%
  {\csname#6break\endcsname}%

Здесь #6имя команды секционирования, поэтому одно из section, subsection, subsubsection, paragraphили subparagraph. В особом случае, когда #6это sectionкод выше говорит:

если sectionbreakне определено, то добавьте \@secpenaltyштраф, а если определено, то добавьте\sectionbreak

Если вы хотите увидеть, как это происходит при компиляции файла, то, например, вы можете добавить \typeout{Adding a section break!!!}определение команды \sectionbreak(см. ниже), а затем посмотреть в файл журнала — скомпилируйте файл в терминале и посмотрите на вывод.

\documentclass[fleqn]{report}
\usepackage{titlesec}
\newcommand{\sectionbreak}{\clearpage \setcounter{equation}{0}\typeout{Adding a section break!!!}}

\begin{document}
\section{One}
\begin{equation} 2+2=3.99      \end{equation}
\begin{equation} \pi^2=9.86    \end{equation}

\section{Two}
\begin{equation} E=mc^2        \end{equation}
\begin{equation} v=\frac{e}{t} \end{equation}

\subsection{Two \& One}
\begin{equation} 2+2=22 \end{equation}
\end{document}

Связанный контент