如何向 itemize 环境添加行号?

如何向 itemize 环境添加行号?

我有一个 itemize 环境,用于在图中描述算法或过程。我想包含行号,所有行号都对齐在图形的最左侧,以便我可以引用图中的 x 行和 y 行(在文本本身中)。我认为可以使用包来实现这一点lineno,但它似乎为整个文档添加了行。

有没有办法将其本地化并说成是类似这样:

  \begin{locallineno}
   some text with line numbers
  \end{locallineno}

另外,我宁愿空行(空白行)不被编号,但这似乎在 中得到了很好的处理lineno

编辑:例如,我可以拥有以下环境:

  \begin{locallineno}
       \begin{itemize}
         \item First clean the dishes.
         \item Now fill the tea pot with water.
              \begin{itemize}
                  \item First open the tea pot.
                  \item Turn on the tap
               \end{itemize}
        \end{itemize}
  \end{locallineno}

我希望每个项目符号左侧都有行号。

答案1

通过该lineno包,您可以使用linenumbers环境在本地启用编号:

嵌套 <code>itemize</code> 环境中的行号

如果需要,您还可以使用\nolinenumbers来禁用嵌套编号:itemize

仅限顶级项目的行号


代码:使用linenumbers环境

\documentclass[10pt,a4paper]{article}
\usepackage{lipsum}
\usepackage{lineno}

\begin{document}
\lipsum[1]
\begin{linenumbers}
       \begin{itemize}
         \item First clean the dishes.
         \item Now fill the tea pot with water.
              \begin{itemize}
                  \item First open the tea pot.
                  \item Turn on the tap
               \end{itemize}
        \end{itemize}
\end{linenumbers}
 \lipsum[1] 
\end{document}

代码:用于\nolinenumbers禁用编号

\documentclass[10pt,a4paper]{article}
\usepackage{lipsum}
\usepackage{lineno}

\begin{document}
\lipsum[1]
\begin{linenumbers}
       \begin{itemize}
         \item First clean the dishes.
         \item Now fill the tea pot with water.
              \begin{itemize}\nolinenumbers
                  \item First open the tea pot.
                  \item Turn on the tap
               \end{itemize}
        \end{itemize}
\end{linenumbers}
 \lipsum[1] 
\end{document}

答案2

可以使用enumitem包及其wide选项来完成。我创建了一个类似 itemize 的环境,numitemise其标签宽度随级别增加,与文本左边距对齐(wide选项):

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{enumitem}
\newcounter{numln}
\setlength\fboxsep{0pt}
\newlist{numitemise}{itemize}{2}
\setlist[numitemise]{wide}%
\setlist[numitemise, 1]{labelindent=0pt,labelwidth=2em, label=\stepcounter{numln}\makebox[2em]{\thenumln.\hfill\textbullet}, leftmargin=\dimexpr\labelwidth+\labelsep\relax}%
 \setlist[numitemise, 2]{labelindent=\dimexpr -2em-\labelsep\relax, labelwidth=\dimexpr 2em+\labelsep\relax, label=\stepcounter{numln}\makebox[\dimexpr\labelwidth + \labelsep\relax]{\thenumln.\hfill\textbullet}, leftmargin=\dimexpr\leftmargin+2\labelsep\relax}%

 \begin{document}

Text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text.

\begin{numitemise}%{A}
  \item The text of a first short item.
  \item The text of a second, longer item. The text of a second, longer item. The text of a second, longer item.
  \begin{numitemise}%{B}
    \item And now a nested subitem. It can be short or long. It can be short or long.
    \item Another nested subitem.
  \end{numitemise}
\item Back to a third item.
\end{numitemise}

\end{document} 

在此处输入图片描述

相关内容