我想根据章节对列表进行编号。如果列表在子章节中,则应该有子章节编号。
这个例子非常好,我正在用它来做其他的数字,但它给了我错误,因为我似乎无法猜测参数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
以相同方式工作的。