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.

War es hilfreich?

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}
}{
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top