自动生成的休息编号

自动生成的休息编号

我已经改革了来自答案。它会自动为特定行生成数字。请参阅此代码。

\documentclass{article}
\usepackage{lipsum}
\newcounter{mynumber}
\newcommand{\myno}[1][1]{\hfill\refstepcounter{mynumber}(\arabic{mynumber})\label{#1}}
\def\NewLLLLLast{\texttt{[\the\numexpr\value{mynumber}-4\relax]}\space}
\def\NewLLLLast{\texttt{[\the\numexpr\value{mynumber}-3\relax]}\space}
\def\NewLLLast{\texttt{[\the\numexpr\value{mynumber}-2\relax]}\space}
\def\NewLLast{\texttt{[\the\numexpr\value{mynumber}-1\relax]}\space}
\def\NewLast{\texttt{[\the\value{mynumber}]}\space}

\begin{document}
    \lipsum[1] \myno\\
    \lipsum[1] \myno[second]\\
    \lipsum[1] \myno\\
    \lipsum[1] \myno\\

    \NewLLLLast is the first paragraph.\\
    \NewLLLast is the second paragraph.\\
    \NewLLast is the third paragraph.\\
    \NewLast is the fourth paragraph.\\

    In \ref{second} paragraph bla bla bla.
\end{document}

现在我想要一个从 1 重新开始编号的命令。假设命令是\restartnum。每当我输入它时,下一个\myno都应该生成 (1)。

答案1

使用\setcounter{mynumber}{0}

另一方面,您可以应用许多改进。

首先,如果文本最后位于页边距附近,则在右边距附加数字的代码将不起作用。我添加了一个有效的代码(请参阅https://tex.stackexchange.com/a/91564/4427):如果最后一行几乎已满,数字将移动到下一行,仍然与右边距对齐;使用您的代码,它将出现在左边距。

其次,不需要定义一堆命令并计算 L,只需使用一个参数。

\documentclass{article}
\usepackage{lipsum}

\newcounter{mynumber}
\newcommand{\myno}[1][]{%
  \begingroup
  \nobreak\hfill\penalty50\hskip1em\null\nobreak\hfill
  \refstepcounter{mynumber}(\arabic{mynumber})%
  \if\relax\detokenize{#1}\relax\else
    \label{#1}%
  \fi
  \parfillskip=0pt \finalhyphendemerits=0 \par
  \endgroup
}
\newcommand{\NewLast}[1]{%
  \texttt{[\the\numexpr\value{mynumber}-#1+1\relax]}%
}
\newcommand{\resetmyno}{\setcounter{mynumber}{0}}

\begin{document}

\lipsum[1][1-3] \myno

\lipsum[1][1-3] \myno[second]

\lipsum[1][1-3] \myno

\lipsum[1][1-3] \myno

\NewLast{4} is the first paragraph.

\NewLast{3} is the second paragraph.

\NewLast{2} is the third paragraph.

\NewLast{1} is the fourth paragraph.

In \ref{second} paragraph bla bla bla.

\resetmyno

\lipsum[1][1-3] \myno

\lipsum[1][1-3] \myno

\end{document}

在此处输入图片描述

相关内容