Mit Listen, wie pflege ich Zahlen für das Auflisten Gruppierung?
-
02-10-2019 - |
Frage
Ich bin mit dem listings
Paketcode zu zeigen, sowie Algorithmen in Pseudo-Code.
Dies ist, was würde Ich mag geschehen:
Algorithm 1.1: myFirstAlgorithm()
... content ...
Algorithm 1.2: mySecondAlgorithm()
... content ...
Code 1.1: My First Code Block
... content ...
Algorithm 1.3: myThirdAlgorithm()
... content ...
Während das ist, was ich bekommen:
Algorithm 1.1: myFirstAlgorithm()
... content ...
Algorithm 1.2: mySecondAlgorithm()
... content ...
Code 1.3: My First Code Block
... content ...
Algorithm 1.4: myThirdAlgorithm()
... content ...
Um die Beschriftung Namen zu ändern, ich bin mit \renewcommand*{\lstlistingname}{Code}
und \renewcommand*{\lstlistingname}{Algorithm}
.
Es könnte ein besserer Weg, dies zu tun, aber auf jedem Fall, dass ich bin immer noch ratlos, wie die Nummerierung zurückgesetzt werden, oder, wie um zu verfolgen, zu gruppieren. Jede Hilfe wäre sehr geschätzt.
Lösung
Trotz meines Kommentars oben, hier einige Code zwei neue Umgebungen zu schaffen, algorithm
und code
, die das tun, was Sie verlangen.
\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}}
}
Verbrauch:
\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}
Diese Zahl von Kapiteln, wie Sie wahrscheinlich gedacht und sind unabhängig von „normalen“ lstlisting
Umgebungen nummerieren. Darüber hinaus können Sie zusätzliche \lstset
Argumente angeben (z language=...
) in der Umwelt Definition, wenn Sie möchten.
Update: Um die gleiche Nummerierung für alle von ihnen zu verwenden, entfernen Sie einfach all Gegen zugehörigen Code:
\lstnewenvironment{algorithm}[1][]{
\renewcommand*{\lstlistingname}{Algorithm}
\lstset{#1}
}{
}
\lstnewenvironment{code}[1][]{
\renewcommand*{\lstlistingname}{Code}
\lstset{#1}
}{
}