Latex 使用清单,如何维护清单编号的分组?

Latex 使用清单,如何维护清单编号的分组?,latex,listings,lstlisting,Latex,Listings,Lstlisting,我使用清单包来显示代码以及伪代码中的算法 这就是我希望发生的事情: 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.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}


也许有更好的方法可以做到这一点,但无论如何,我仍然不知道如何重置编号,或者如何跟踪分组。任何帮助都将不胜感激。

尽管我在上面发表了评论,但这里有一些代码可以创建两个新环境,
算法和
代码,它们可以满足您的要求

\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
参数(例如
语言=…


更新:要对所有计数器使用相同的编号,只需删除所有计数器相关代码:

\lstnewenvironment{algorithm}[1][]{
    \renewcommand*{\lstlistingname}{Algorithm}
    \lstset{#1}
}{
}
\lstnewenvironment{code}[1][]{
    \renewcommand*{\lstlistingname}{Code}
    \lstset{#1}
}{
}

尽管有我上面的评论,这里还是有一些代码来创建两个新环境,
算法
代码
,它们可以满足您的要求

\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
参数(例如
语言=…


更新:要对所有计数器使用相同的编号,只需删除所有计数器相关代码:

\lstnewenvironment{algorithm}[1][]{
    \renewcommand*{\lstlistingname}{Algorithm}
    \lstset{#1}
}{
}
\lstnewenvironment{code}[1][]{
    \renewcommand*{\lstlistingname}{Code}
    \lstset{#1}
}{
}

我强烈建议不要更改编号。手稿中的所有物品都有一个编号,这使读者更容易找到东西。我有一本数学书,上面有定理3.6,引理3.2,练习3.6,注释3.1,很难找到任何东西,因为你必须搜索相同类型的对象,甚至在看它们的数字之前。使用单一编号方案,您可以更轻松地进行“二进制搜索”。您可能是对的。我假设读者会发现将伪代码与常规代码分开排序是很直观的。就像我有一套不同的数字、表格、方程式的编号一样。我必须同意托马斯的观点。我发现,如果一本书中的各种物品都按相同的顺序排列,那么浏览它们就容易多了。但是,如果有人知道解决方案,我想知道。只要启用它,回忆起曾经发生过的事情就好了。我强烈建议不要更改编号。手稿中的所有物品都有一个编号,这使读者更容易找到东西。我有一本数学书,上面有定理3.6,引理3.2,练习3.6,注释3.1,很难找到任何东西,因为你必须搜索相同类型的对象,甚至在看它们的数字之前。使用单一编号方案,您可以更轻松地进行“二进制搜索”。您可能是对的。我假设读者会发现将伪代码与常规代码分开排序是很直观的。就像我有一套不同的数字、表格、方程式的编号一样。我必须同意托马斯的观点。我发现,如果一本书中的各种物品都按相同的顺序排列,那么浏览它们就容易多了。但是,如果有人知道解决方案,我想知道。只要启用它,回忆起曾经发生过的事情就好了。太好了。总有一天,我需要完全了解乳胶环境及其微妙之处。首先我需要完成我的论文。不过,我会听从你的建议,并对多个挂牌柜台的管理至关重要。祝您愉快,先生。它工作得很好!如果要使用相同的编号,则在两种环境中使用相同的计数器。我和latex的关系最初充满了仇恨和蔑视。现在不再有仇恨了。我希望我能用语言以外的东西来表达我的感激之情,但是唉:谢谢你。不客气:)但是如果你想使用相同的编号,根本不需要弄乱柜台。看我的更新。太好了。总有一天,我需要完全了解乳胶环境及其微妙之处。首先我需要完成我的论文。不过,我会听从你的建议,并对多个挂牌柜台的管理至关重要。祝您愉快,先生。它工作得很好!如果要使用相同的编号,则在两种环境中使用相同的计数器。我和latex的关系最初充满了仇恨和蔑视。现在不再有仇恨了。我希望我能用语言以外的东西来表达我的感激之情,但是唉:谢谢你。不客气:)但是如果你想使用相同的编号,根本不需要弄乱柜台。查看我的更新。