Как можно пронумеровать абзацы в LaTeX?

Учитывая кучу абзацев:

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: Как мне пронумеровать абзацы в LaTeX?

Затем используйте \ N перед каждым нумерованным абзацем, т.е.

\N Para. A. ...

\N Para. B. ...

\N Para. C. ...

Я также видел ссылки на Саровар и numberpar, но оба они называются" нестабильными "или" непредсказуемыми ", и т. д. "случайно ломается", что меня настораживает.

Я хотел бы получить некоторые сведения о том, что может быть лучшим курсом действий здесь, и я думаю, что это тема, заслуживающая некоторого обсуждения.

Спасибо за проявленный к этому интерес и внимание.

ИЗМЕНИТЬ: я пробовал следующее

\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}

и заголовок раздела «Часть II» иногда оказывается в самом низу страницы (т.е. не соответствует следующему тексту).


person Brian M. Hunt    schedule 12.02.2009    source источник


Ответы (4)


Я думаю, есть три возможных решения (по крайней мере!), Которые не связаны с запуском вашего собственного или чужого макроса, в зависимости от того, что именно вы пытаетесь сделать.

1 Если нумерация требуется по всему документу, используйте \paragraph, которая является командой нижнего уровня секционирования (например, \ chapter, \ section, \ subsction и т. Д.)

Дополнительную информацию см. В викибуке LaTeX.

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

(Вы можете найти это излишним / уродливым, потому что для этого нужна правильно вложенная структура разделов и подразделов)

Обратите внимание, что если вы используете класс мемуарных документов (что я без колебаний рекомендую), строка \setcounter становится \maxsecnumdepth{paragraph}

2 Если это небольшой кусок, используйте список:

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

3 Или обобщенный список (\begin{list}...\end{list{}), если вы хотите настроить форматирование. Мне не сразу удалось найти хорошую онлайн-ссылку для этого, кроме фрагмента в Руководство по LaTeX

person Brent.Longborough    schedule 12.02.2009
comment
\ setcounter {secnumdepth} {5} + \ paragraph - это функциональность, которую я искал. Спасибо! - person Brian M. Hunt; 13.02.2009
comment
Есть ли способ убрать первые вторые / вторые числа перед номерами абзацев? Сейчас мои абзацы пронумерованы 0.0.0.x и c. - person flamsmark; 31.08.2013
comment
@flamsmark \renewcommand{\theparagraph}{\arabic{paragraph}} - person ScumCoder; 02.10.2019

В моем случае я решил эту проблему, переопределив новый макрос \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}

Я знаю, что это на самом деле провал, но в итоге у меня сработало.

person FKaria    schedule 24.06.2012
comment
Это работает, за исключением случаев, когда вы ссылаетесь на абзац, он получается не так, как ожидалось (как section.paragraph). Вместо этого я использую следующее: \newcounter{paranum}[section] \renewcommand{\theparanum}{\thesection.\arabic{paranum}} \newcommand{\mypar}{\vspace{10pt}\noindent\refstepcounter{paranum}\textbf{\theparanum}\ } - person tvk; 20.05.2014
comment
Я использовал еще более простую версию, \newcommand{\NP}{\textbf{\refstepcounter{paranum}\theparanum}\textbf} - person Charney Kaye; 09.06.2016

Я считаю, что еще один вариант - это пакет 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

Однако я никогда не пробовал этого сам.

person Jon Ericson    schedule 12.02.2009

Решением этой проблемы является использование пакета parano, написанного CV Radhakrishnan из River Valley Technologies, Тривандрам, Индия.

Я знаю это решение по следующей веб-странице http://www.ub-filosofie.ro/~solcan/wt/gnu/n/np.html

person Yong Yang    schedule 28.07.2013
comment
Обратите внимание, что ответы только по ссылкам не приветствуются, ответы SO должны быть конечной точкой поиска решения (по сравнению с еще одной остановкой ссылок, которые со временем устаревают). Пожалуйста, подумайте о добавлении здесь отдельного синопсиса, сохранив ссылку в качестве справочной. - person kleopatra; 28.07.2013