【问题标题】:How can one number paragraphs in LaTeX?如何在 LaTeX 中为段落编号?
【发布时间】:2010-10-07 06:59:29
【问题描述】:

给定一堆段落:

Para. A ...

Para. B ...

Para. C ...

如何让 LaTeX 自动为它们编号,即

1. Para. A. ...

2. Para. B. ...

3. Para. C. ...

我看到了以下建议:

\newcounter{parnum}
\newcommand{\N}{%
   \noindent\refstepcounter{parnum}%
    \makebox[\parindent][l]{\textbf{\arabic{parnum}.}}}
% Use a generous paragraph indent so numbers can be fit inside the
% indentation space.
\setlength{\parindent}{2em}

从这里:comp.text.tex: Re: How do I number paragraphs in LaTeX?

然后在每个要编号的段落前面使用\N,即

\N Para. A. ...

\N Para. B. ...

\N Para. C. ...

我还看到了对Sarovarnumberpar 的引用,但两者都被称为“不稳定”或“不可预测”,以及诸如“随机中断”之类的东西,这让我很警惕。

我想在这里就什么可能是最好的行动方案提供一些意见,我认为这是一个值得讨论的话题。

感谢您对此的关注和关注。

编辑:我尝试了以下方法

\begin{enumerate}
\item Para No. 1
\item Para No. 2
...
\end{enumerate}

但是它会导致排版问题,特别是因为我在散布部分标题 ala。

\begin{enumerate}
\item Para No. 1
\item Para No. 2
\section{Part II}
\item Para No. 5
\item Para No. 6
...
\end{enumerate}

标题“第二部分”的部分有时会出现在页面的最底部(即,它与以下文本不一致)。

【问题讨论】:

    标签: latex paragraph


    【解决方案1】:

    我认为有三种可能的解决方案(至少!)不涉及滚动您自己或其他人的宏,具体取决于您要执行的操作。

    1 如果整个文档都需要编号,请使用\paragraph,这是一个较低级别的分段命令(如\chapter、\section、\subsection等)

    请参阅LaTeX wikibook 了解更多信息。

    \setcounter{secnumdepth}{5}
    ...
    \paragraph{If we want to} do something ... 
    

    (你可能会觉得这有点矫枉过正/丑陋,因为它需要一个正确嵌套的节和小节结构)

    请注意,如果您使用 memoir 文档类(我毫不犹豫地推荐),\setcounter 行将变为 \maxsecnumdepth{paragraph}

    2 如果只是一小块,用列表:

    \begin{enumerate}
    \item Para No. 1
    \item Para No. 2
    ...
    \end{enumerate} 
    

    3 如果您想调整格式,请使用通用列表 (\begin{list}...\end{list{})。除了A Guide to LaTeX中的那篇文章之外,我还没有立即找到一个好的在线参考资料。

    【讨论】:

    • \setcounter{secnumdepth}{5} + \paragraph 是我正在寻找的功能。谢谢!
    • 有没有办法在段落编号之前抑制前导 sec/subsec 数字?现在我的段落编号为 0.0.0.x &c。
    • @flamsmark \renewcommand{\theparagraph}{\arabic{paragraph}}
    【解决方案2】:

    在我的例子中,我最终通过重新定义一个像段落一样工作的新宏\P 来解决这个问题。

    \newcounter{paranum}
    \newcommand{\P}{\vspace{10pt}\noindent\textbf{\refstepcounter{paranum}\theparanum}\textbf}
    

    我要写一个新的“段落”

    \P{Paragraph title No. 1} ...text...
    ...
    \P{Paragraph title No. 2} ...text...
    

    使枚举链接到我使用的部分

    \newcounter{paranum}[section]
    \newcommand{\P}{\vspace{10pt}\noindent\textbf{\thesection.\refstepcounter{paranum}\theparanum}\textbf}
    

    我知道这实际上是拙劣的,但最终为我工作。

    【讨论】:

    • 这有效,除非你引用一个段落,它没有按预期出现(如“section.paragraph”)。我改用以下内容:\newcounter{paranum}[section] \renewcommand{\theparanum}{\thesection.\arabic{paranum}} \newcommand{\mypar}{\vspace{10pt}\noindent\refstepcounter{paranum}\textbf{\theparanum}\ }
    • 我使用了一个更简单的版本,\newcommand{\NP}{\textbf{\refstepcounter{paranum}\theparanum}\textbf}
    【解决方案3】:

    我相信另一个选择是ledmac 包。这是文档中的引述:

    普通的\label、\ref 和\label \pageref 宏可以在编号文本中使用,并以熟悉的方式操作。例如,这是一种编号方式 编号文本中的段落,然后能够引用段落编号, 除了行号和页码。

    \newcounter{para} \setcounter{para}{0}
    \newcommand{\newpara}{%
      \refstepcounter{para}%
      \noindent\llap{\thepar. }\quad}
    \newcommand{\oldpara}[1]{%
      \noindent\llap{\ref{#1}. }\quad}
    

    \newpara 和 \oldpara 的定义将数字放在左边距和 段落的第一行是缩进的。您现在可以编写如下内容:

    \linenummargin{right}
    \beginnumbering
    \pstart
    \newpara\label{P1} A paragraph about \ldots
    \pend
      In paragraph~\ref{P1} the author \ldots
    \pstart
    \oldpara{P1} This has the same
                 \edtext{number}{\Afootnote{\ref{P1} is the paragraph, not line}}
      as the first paragraph.
    \pend
    \endnumbering
    

    不过,我自己从未尝试过。

    【讨论】:

      【解决方案4】:

      解决此问题的方法是使用包 parano,该包由印度特里凡得琅河谷技术公司的 CV Radhakrishnan 编写。

      我从以下网页知道此解决方案 http://www.ub-filosofie.ro/~solcan/wt/gnu/n/np.html

      【讨论】:

      • 请注意,不鼓励仅链接的答案,因此答案应该是搜索解决方案的终点(相对于另一个参考中途停留,随着时间的推移往往会变得陈旧)。请考虑在此处添加独立的概要,并保留链接作为参考。
      猜你喜欢
      • 2010-11-21
      • 2021-09-23
      • 2013-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-15
      相关资源
      最近更新 更多