连续文本中的枚举

连续文本中的枚举

我正在尝试在文本中使用枚举。它看起来像这个例子:

“宠物中最常见的是(i)狗、(ii)猫和(iii)兔子。
(i)狗是非常可爱的动物。但是它们需要每天遛几次……[连续的长段落跨越多行]

(ii) 猫通常被认为是比较容易相处的动物,但是……

[...]”

我想我不需要多次引用每个段落,所以我也可以只输入括号和数字。但是,使用 LaTeX 时只输入“(ii)”似乎不太好。有没有一种更简单、更优雅的方法来像示例中那样进行枚举?

答案1

\documentclass{article}
\usepackage[inline]{enumitem}
\begin{document}
Among pets the most common ones are \begin{enumerate*}[label=(\roman*)]
\item dogs,\label{item:dogs}
\item cats and \label{item:cats}
\item rabbits.\label{item:rabbits}
\end{enumerate*}

\ref{item:dogs} Dogs are very nice animals. However they need to be walked several times a day\ldots [continuous long passage spreading over multiple lines]

\ref{item:cats} Cats are often considered easier animals but\ldots
\end{document}

使用 enumitem 的结果

答案2

使用包的替代解决方案paralist

    \documentclass{article}
\usepackage{paralist}
    \begin{document}
    Among pets the most common ones are 
        \begin{inparaenum}[(i)]
            \item dogs, 
            \item cats and 
            \item rabbits.
        \end{inparaenum}

        \begin{enumerate}[(i)]
            \item Dogs are very nice animals. However they need to be walked several times a day\ldots [continuous long passage spreading over multiple lines]
            \item Cats are often considered easier animals but\ldots 
            \item \ldots
        \end{enumerate}
    \end{document}

使用 paralist 的结果

答案3

我会用不同的方法做这件事。我不会使用列表环境来记录动物名称的第一次出现,而是将其用于主要描述,并使用参考资料来记录初始列表。这样做的一个优点是,如果您忘记实际描述初始列表中的任何动物,TeX 会发出警告。但大多数情况下,这对我来说似乎是更自然的方法,因为您真正想要格式化为列表的是描述。

接下来,我使用enumitem来定义一个新列表。然后,我animals为主描述列表定义一个新环境,并为初始列表定义一个新命令。在环境中重新定义\animalref常规以接受标签(动物组),该标签用于自动设置我们可以在 的定义中引用的标签。结果如下:\itemanimals\animalref

  • 环境animals需要一个可选参数。如果使用可选参数,其内容基本上会传递给 的enumitem环境enumerate。如果您想要更改列表格式,则只需担心这一点。
  • \item[]{} 之内animals仅限接受一个可选参数和一个强制参数。可选参数是 的常用可选参数。强制参数是或 之\item类的标签。dogscats
  • \animalsref{}接受一个强制参数。此参数旨在与主列表中项目的标签集相对应,例如dogscats。它将排版相关项目标签,后跟标签本身。因此,您将得到例如“(i) 狗”或“(ii) 猫”。如果您传递主列表中未出现的标签,您将得到问号,例如“?? 兔子”,并且 TeX 将输出警告。

这听起来比实际要复杂得多。

\documentclass{article}
\usepackage{enumitem, xparse, kantlipsum}
\newlist{animalslist}{enumerate}{1}
\setlist[animalslist]{label=(\roman*)}
\global\let\olditem\item
\NewDocumentCommand\animalsitem { o m }{%
  \IfNoValueTF{#1}{%
    \olditem\label{animals:#2}}{%
    \olditem[#1]\label{animals:#2}}%
  }
\newenvironment{animals}[1][]{%
  \let\item\animalsitem
  \begin{animalslist}[#1]%
  }{%
  \end{animalslist}%
}
\newcommand*\animalsref[1]{\ref{animals:#1} #1}
\begin{document}
  Among pets the most common ones are \animalsref{dogs}, \animalsref{cats} and \animalsref{rabbits}.
  \begin{animals}
    \item{dogs} Some people consider dogs very nice animals. However they need to be walked several times a day and tend to eat your shoes.

    \kant[1]

    \item{cats} Cats are nicer animals but need to be worshipped several times a day and tend to walk over your keyboard.

    \kant[2]
  \end{animals}
\end{document}

如您所见,“??”表示我实际上没有记得说任何有关兔子的事情,而猫和狗则得到了相应的标签。编译两次以稳定引用。

有猫和狗,但没有兔子

相关内容