Как можно однозначно перечислить абзацы в LaTeX? - PullRequest
24 голосов
/ 12 февраля 2009

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

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}

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

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

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

Ответы [ 4 ]

17 голосов
/ 13 февраля 2009

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

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{}), если вы хотите настроить форматирование. Я не сразу смог найти для этого хороший онлайн-справочник, кроме статьи в Руководство по LaTeX

4 голосов
/ 24 июня 2012

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

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

2 голосов
/ 28 июля 2013

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

Я знаю это решение со следующей веб-страницы http://www.ub -filosofie.ro / ~ Solcan / вес / ГНУ / н / np.html

2 голосов
/ 13 февраля 2009

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

Однако я никогда не пытался сделать это сам.

...