2

私は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}います。

これを行うためのより良い方法があるかもしれませんが、いずれにせよ、番号をリセットする方法、またはグループ化を追跡する方法についてはまだわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

0

上記の私のコメントにもかかわらず、ここに 2 つの新しい環境を作成するためのコードがいくつかあり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}
}{
}
于 2010-07-02T11:50:19.953 に答える