重置新段落中的計數器值

重置新段落中的計數器值

這些\newcounter{<counter-name>}[<outer-counter>]命令將定義一個新的計數器。例如,\newcounter{example}[section] 命令會建立一個名為的新計數器example,每次該計數器都會重置部分計數器增加。

但對於段落計數器,\newcounter{<counter-name>}[paragraph]不起作用。

這是 MWE:

\documentclass{article}


\newcounter{sentencenum}[paragraph]
\newcommand{\sno}[0]{\refstepcounter{sentencenum}$_{\arabic{sentencenum}}$}


\begin{document}


\sno{}Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\sno{}Ut purus elit, vestibulum ut, placerat ac,adipiscing vitae, felis. Curabitur dictum gravida mauris.
\sno{}Nam arcu libero, nonummy eget, consectetuerid, vulputate a, magna.
\sno{}Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus etnetus et malesuada fames ac turpis egestas.
\sno{}Mauris ut leo. Cras viverra metus rhoncus sem.
\sno{}Nulla et lectusvestibulum urna fringilla ultrices.
\sno{}Phasellus eu tellus sit amet tortor gravida placerat.
\sno{}Integer sapien est,iaculis in, pretium quis, viverra ac, nunc.
\sno{}Praesent eget sem vel leo ultrices bibendum.
\sno{}Aenean faucibus.
\sno{}Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla.
\sno{}Curabitur auctor semper nulla.
\sno{}Donec variusorci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis eget orci sit amet orcidignissim rutrum.



%
% Bug: The second paragraph should reset the counter value of `sentencenum` since here start a new paragraph
%
\sno{}Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi.
\sno{}Morbi auctor lorem non justo.
\sno{}Namlacus libero, pretium at, lobortis vitae, ultricies et, tellus.
\sno{}Donec aliquet, tortor sed accumsan bibendum,erat ligula aliquet magna, vitae ornare odio metus a mi.
\sno{}Morbi ac orci et nisl hendrerit mollis.
Suspendisseut massa.


\end{document}

答案1

我不能說這是推薦的方法,但可以解決這個問題。請在更複雜的文檔中測試它,因為我無法真正知道副作用。這是您的範例的程式碼:

\documentclass{article}



\newcounter{sentencenum}
\newcommand{\sno}[0]{\refstepcounter{sentencenum}$_{\arabic{sentencenum}}$}

\let\oldpar\par
\def\par{\setcounter{sentencenum}{0}\oldpar}


\begin{document}


\sno{}Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\sno{}Ut purus elit, vestibulum ut, placerat ac,adipiscing vitae, felis. Curabitur dictum gravida mauris.
\sno{}Nam arcu libero, nonummy eget, consectetuerid, vulputate a, magna.
\sno{}Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus etnetus et malesuada fames ac turpis egestas.
\sno{}Mauris ut leo. Cras viverra metus rhoncus sem.
\sno{}Nulla et lectusvestibulum urna fringilla ultrices.
\sno{}Phasellus eu tellus sit amet tortor gravida placerat.
\sno{}Integer sapien est,iaculis in, pretium quis, viverra ac, nunc.
\sno{}Praesent eget sem vel leo ultrices bibendum.
\sno{}Aenean faucibus.
\sno{}Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla.
\sno{}Curabitur auctor semper nulla.
\sno{}Donec variusorci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis eget orci sit amet orcidignissim rutrum.



%
% Bug: The second paragraph should reset the counter value of `sentencenum` since here start a new paragraph
%
\sno{}Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi.
\sno{}Morbi auctor lorem non justo.
\sno{}Namlacus libero, pretium at, lobortis vitae, ultricies et, tellus.
\sno{}Donec aliquet, tortor sed accumsan bibendum,erat ligula aliquet magna, vitae ornare odio metus a mi.
\sno{}Morbi ac orci et nisl hendrerit mollis.
Suspendisseut massa.


\end{document}

在此輸入影像描述

這個想法是:

對於 Latex 中的每個新段落,\par都會執行該指令。因此,我添加了通過重新定義將計數器歸零的功能\par(在我第一次思考時似乎很危險......但可能沒關係......)

PS:文字段落是用文字之間的空白行建立的...但是您在 MWE 中也有一個\paragraph「試圖使用」錯誤的分段命令。

相關內容