列表编号

列表编号

我想根据章节对列表进行编号。如果列表在子章节中,则应该有子章节编号。

这个例子非常好,我正在用它来做其他的数字,但它给了我错误,因为我似乎无法猜测参数renewcommand

\renewcommand{\thelstlistingname}{%
  \ifnum\value{subsection}=0
    \thesection.\arabic{lstlistingname}%
  \else
    \ifnum\value{subsubsection}=0
      \thesubsection.\arabic{lstlistingname}%
    \else
      \thesubsubsection.\arabic{lstlistingname}%
    \fi
  \fi
}

这是 MWE

\documentclass[11pt]{article}
\usepackage{listings}
\renewcommand{\lstlistingname}{Pseudokod} 

\begin{document}
\section{Section}
\subsection{Subsection}

\begin{lstlisting}[caption=Pseudokod za algoritam segmentacije slike u boji.]
  ...
  ucitaj sliku
  ucitaj zeljeni prag ili pragove za segmentaciju
  podijeli sliku na kanale //ako je u pitanju RGB slika podijela je na R, G i B kanal boje
  primjeni prag na svakom kanalu
  AND operacija na kanalima
  prikazi sliku
  ...
\end{lstlisting}
\end{document}  

由于列表位于第 1.1 节,我希望将其编号为 1.1.1。该节中的下一个列表将是 1.1.2,等等。

答案1

我不太清楚你到底想要实现什么。

无论如何,lstlisting只有在文档开始后才会定义正确的计数器。

因此,你可以在后面放置以下代码\begin{document}

\renewcommand{\thelstlisting}{%
  \ifnum\value{subsection}=0
    \thesection.\arabic{lstlisting}%
  \else
    \ifnum\value{subsubsection}=0
      \thesubsection.\arabic{lstlisting}%
    \else
      \thesubsubsection.\arabic{lstlisting}%
    \fi
  \fi
}

或序言中的以下内容

\AtBeginDocument{%
  \renewcommand{\thelstlisting}{%
    \ifnum\value{subsection}=0
      \thesection.\arabic{lstlisting}%
    \else
      \ifnum\value{subsubsection}=0
        \thesubsection.\arabic{lstlisting}%
      \else
        \thesubsubsection.\arabic{lstlisting}%
      \fi
    \fi
  }
}

结果是一样的,但我建议后者。

答案2

您应该重新定义\thelstlisting,但请注意,您只能在之后执行此操作,\begin{document}因为它在该点被定义:

\documentclass[11pt]{article}
\usepackage{listings}

\begin{document}

\makeatletter
\renewcommand\thelstlisting{\thesection.\@arabic\c@lstlisting}
\makeatother

\section{Section}
\subsection{Subsection}

\begin{lstlisting}[caption=Pseudokod za algoritam segmentacije slike u boji.]
  ...
  ucitaj sliku
  ucitaj zeljeni prag ili pragove za segmentaciju
  podijeli sliku na kanale //ako je u pitanju RGB slika podijela je na R, G i B kanal boje
  primjeni prag na svakom kanalu
  AND operacija na kanalima
  prikazi sliku
  ...
\end{lstlisting}
\end{document}

这遵循一个常见模式:当您定义支持交叉引用的环境时,总会有一个同名的计数器保留环境的唯一 ID;宏\the<counter>负责“格式化”它。例如,我们在这里使用\thesection以相同方式工作的。

相关内容