3

それぞれ独自のカウンターを持つ 2 つの lstlisting 環境を作成するにはどうすればよいですか?

たとえば、

\lstnewenvironment{algorithm}[2]{
    \renewcommand\lstlistingname{Algorithm}
    \lstset{ ... }
} {}

\lstnewenvironment{program}[2]{
    \renewcommand\lstlistingname{Program}
    \lstset{ ... }
} {}

その後

\begin{algorithm}{Algorithm caption}{alg-label}
...
\end{algorithm}

\begin{program}{Program caption}{prg-label}
...
\end{program}

次に、カウンターを共有します。つまり、たとえば次のようになります。

Algorithm 1.1
    ...
Program 1.2
    ...

さまざまなリスティング環境でカウントが独立していることを望みます。

また、キャプション パッケージを使用して、素敵なキャプションを作成します。私はすでに多くのことを試しましたが、実際に成功したものはありません。カウンター/ファイル拡張子を変更する方法を示すことがわかった唯一の方法は、つまり \DeclareCaptionType[fileext=alg]{algorithm} を使用することですが、問題は、このコマンドが既に新しい環境を定義しているため、使用方法がわからないことです新しいリスティング環境とキャプション パッケージと一緒に。たとえば、次の設定を使用しています。

\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{\colorbox[cmyk]{0.43, 0.35, 0.35,0.01}{\parbox{\textwidth}{\hspace{15pt}#1#2#3}}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singlelinecheck=false, margin=0pt, font={bf,footnotesize}}
4

1 に答える 1

1
\newcounter{algorithm}
\newcounter{program}

\makeatletter
\lstnewenvironment{algorithm}[2]{
  \renewcommand\lstlistingname{Algorithm}
  \let\c@lstlisting=\c@algorithm
  \let\thelstlisting=\thealgorithm
  \lstset{caption=#1}
} {}

\lstnewenvironment{program}[2]{
  \renewcommand\lstlistingname{Program}
  \let\c@lstlisting=\c@program
  \let\thelstlisting=\theprogram
  \lstset{caption=#1}
} {}
\makeatother
于 2010-11-13T14:36:33.390 に答える