Списки LaTeX: разные счетчики для разных сред листинга - PullRequest
3 голосов
/ 10 октября 2010

Как мне создать две среды списка, каждая из которых имеет свой собственный счетчик?

Если я использую, например,

\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
    ...

Я бы хотел, чтобы подсчет был независимым для разных сред листинга.

Я также использую пакет подписи, чтобы создать красивую подпись.Я уже перепробовал много вещей, но ни один из них не удался.Единственный способ, который я нашел, который указывает, как изменить счетчик / расширение файла, это через ie \ DeclareCaptionType [fileext = alg] {алгоритм}, но проблема в том, что эта команда уже определяет новую среду, поэтому я не знаю, как использоватьэто вместе с новой средой списков и пакетом подписи.Я использую, например, следующие настройки:

\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}}

1 Ответ

1 голос
/ 13 ноября 2010
\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
...