我正在使用listings
包来显示代码,以及伪代码中的算法。
这就是我想要发生的事情:
Algorithm 1.1: myFirstAlgorithm()
... content ...
Algorithm 1.2: mySecondAlgorithm()
... content ...
Code 1.1: My First Code Block
... content ...
Algorithm 1.3: myThirdAlgorithm()
... content ...
虽然这是我得到的:
Algorithm 1.1: myFirstAlgorithm()
... content ...
Algorithm 1.2: mySecondAlgorithm()
... content ...
Code 1.3: My First Code Block
... content ...
Algorithm 1.4: myThirdAlgorithm()
... content ...
要更改字幕名称,我正在使用\renewcommand*{\lstlistingname}{Code}
和\renewcommand*{\lstlistingname}{Algorithm}
。
可能有更好的方法可以做到这一点,但无论如何我仍然无法重置如何重置编号,或如何跟踪分组。任何帮助将不胜感激。
答案 0 :(得分:0)
尽管我在上面发表了评论,但这里有一些代码可以创建两个新环境,algorithm
和code
,可以满足您的要求。
\newcounter{oldlstlisting}
\newcounter{algorithm}[chapter]
\newcounter{code}[chapter]
\lstnewenvironment{algorithm}[1][]{
\setcounter{oldlstlisting}{\value{lstlisting}}
\setcounter{lstlisting}{\value{algorithm}}
\renewcommand*{\lstlistingname}{Algorithm}
\lstset{#1}
}{
\stepcounter{algorithm}
\setcounter{lstlisting}{\value{oldlstlisting}}
}
\lstnewenvironment{code}[1][]{
\setcounter{oldlstlisting}{\value{lstlisting}}
\setcounter{lstlisting}{\value{code}}
\renewcommand*{\lstlistingname}{Code}
\lstset{#1}
}{
\stepcounter{code}
\setcounter{lstlisting}{\value{oldlstlisting}}
}
用法:
\begin{algorithm}[caption={myFirstAlgorithm()}]
... content ...
\end{algorithm}
\begin{algorithm}[caption={mySecondAlgorithm()}]
... content ...
\end{algorithm}
\begin{code}[caption={My First Code Block}]
... content ...
\end{code}
\begin{algorithm}[caption={myThirdAlgorithm()}]
... content ...
\end{algorithm}
这些数字的章节,正如您可能想要的那样,并且独立于“常规”lstlisting
环境进行编号。此外,如果需要,您可以在环境定义中指定其他\lstset
个参数(例如language=...
)。
更新:要对所有这些编号使用相同的编号,只需删除所有与计数器相关的代码:
\lstnewenvironment{algorithm}[1][]{
\renewcommand*{\lstlistingname}{Algorithm}
\lstset{#1}
}{
}
\lstnewenvironment{code}[1][]{
\renewcommand*{\lstlistingname}{Code}
\lstset{#1}
}{
}