2010-10-10 2 views
3

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

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

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

Вы могли бы иметь больше удачи, спрашивая свой вопрос на http://tex.stackexchange.com/ – Seamus

+0

Хорошая идея, я не знаю, это одно, благодаря! – fraktalek

ответ

1
\newcounter{algorithm} 
\newcounter{program} 

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

\lstnewenvironment{program}[2]{ 
    \renewcommand\lstlistingname{Program} 
    \let\[email protected]=\[email protected] 
    \let\thelstlisting=\theprogram 
    \lstset{caption=#1} 
} {} 
\makeatother 
Смежные вопросы