von Rueben Ase » Di 25. Jan 2022, 11:52
minted hat eine eingebaute
listing-Umgebung, die wahlweise auf dem Paket
float oder dem Paket
newfloat basiert (das zweite würde ich bevorzugen). Man benötigt dafür also das Paket
listing nicht und sollte es auch nicht zusammen mit
minted verwenden. Leider bietet das Paket keine Möglichkeit, stattdessen das von den KOMA-Script-Klassen verwendete
tocbasic oder eine bereits definierte Umgebung zu verwenden. Die mit
newfloat oder notfalls mit
float definierte Umgebung kann aber ebenso für Algorithmen verwendet werden, wie das im zweiten Beispiel mit der dort per
\DeclareNewTOC definierten Umgebung gezeigt wurde:
\documentclass[a4paper,12pt, oneside]{scrbook}
\usepackage[ngerman]{babel}
\usepackage{algpseudocode, algorithmicx}
\usepackage[frozencache,newfloat]{minted}% Option frozencache, damit es im Online-Compiler läuft.
%\DeclareNewTOC[ float,
% name=listing,
% type=listing,
% listname=Verzeichnis der Listings und Algorithmen,
%]{lol}
\begin{document}
\chapter{Testkapitel}
\begin{listing}
\captionabove{ABC}
\begin{algorithmic}
\Procedure{processRequest}{$request$}
\State $p\gets someLogic()$
\If {$request.featureA$}
\State $result\gets calcA(p)$
\EndIf
\State \Return{$result$}
\EndProcedure
\end{algorithmic}
\end{listing}
\begin{listing}
\captionabove{DEF}
Hier steht in echt ein Minted-Codeschnipsel
\end{listing}
\listoflistings
\end{document}
Zusammen mit dem Paket
caption ist es sogar per Option möglich, die Algorithmen trotzdem als "Algorithmus" zu benennen:
\documentclass[a4paper,12pt, oneside]{scrbook}
\usepackage[ngerman]{babel}
\usepackage{algpseudocode, algorithmicx}
\usepackage[frozencache,newfloat]{minted}
\usepackage{caption}
%\DeclareNewTOC[ float,
% name=listing,
% type=listing,
% listname=Verzeichnis der Listings und Algorithmen,
%]{lol}
\begin{document}
\chapter{Testkapitel}
\begin{listing}
\captionsetup{name=Algorithmus}
\captionabove{ABC}
\begin{algorithmic}
\Procedure{processRequest}{$request$}
\State $p\gets someLogic()$
\If {$request.featureA$}
\State $result\gets calcA(p)$
\EndIf
\State \Return{$result$}
\EndProcedure
\end{algorithmic}
\end{listing}
\begin{listing}
\captionabove{DEF}
Hier steht in echt ein Minted-Codeschnipsel
\end{listing}
\listoflistings
\end{document}
Man kann das aber auch etwas mehr low-level lösen:
\documentclass[a4paper,12pt, oneside]{scrbook}
\usepackage[ngerman]{babel}
\usepackage{algpseudocode, algorithmicx}
\usepackage[frozencache,newfloat]{minted}
%\DeclareNewTOC[ float,
% name=listing,
% type=listing,
% listname=Verzeichnis der Listings und Algorithmen,
%]{lol}
\begin{document}
\chapter{Testkapitel}
\begin{listing}
\renewcommand{\listingname}{Algorithmus}
\captionabove{ABC}
\begin{algorithmic}
\Procedure{processRequest}{$request$}
\State $p\gets someLogic()$
\If {$request.featureA$}
\State $result\gets calcA(p)$
\EndIf
\State \Return{$result$}
\EndProcedure
\end{algorithmic}
\end{listing}
\begin{listing}
\captionabove{DEF}
Hier steht in echt ein Minted-Codeschnipsel
\end{listing}
\listoflistings
\end{document}
BTW: Bist du sicher, dass du ein einseitiges Buch und nicht einfach
scrreprt statt
scrbook haben willst? Buch und einseitig passt eigentlich nicht zusammen.
[ctan]minted[/ctan] hat eine eingebaute [tt]listing[/tt]-Umgebung, die wahlweise auf dem Paket [ctan]float[/ctan] oder dem Paket [ctan]newfloat[/ctan] basiert (das zweite würde ich bevorzugen). Man benötigt dafür also das Paket [tt]listing[/tt] nicht und sollte es auch nicht zusammen mit [tt]minted[/tt] verwenden. Leider bietet das Paket keine Möglichkeit, stattdessen das von den KOMA-Script-Klassen verwendete [ctan]tocbasic[/ctan] oder eine bereits definierte Umgebung zu verwenden. Die mit [tt]newfloat[/tt] oder notfalls mit [tt]float[/tt] definierte Umgebung kann aber ebenso für Algorithmen verwendet werden, wie das im zweiten Beispiel mit der dort per [tt]\DeclareNewTOC[/tt] definierten Umgebung gezeigt wurde:
[code]
\documentclass[a4paper,12pt, oneside]{scrbook}
\usepackage[ngerman]{babel}
\usepackage{algpseudocode, algorithmicx}
\usepackage[frozencache,newfloat]{minted}% Option frozencache, damit es im Online-Compiler läuft.
%\DeclareNewTOC[ float,
% name=listing,
% type=listing,
% listname=Verzeichnis der Listings und Algorithmen,
%]{lol}
\begin{document}
\chapter{Testkapitel}
\begin{listing}
\captionabove{ABC}
\begin{algorithmic}
\Procedure{processRequest}{$request$}
\State $p\gets someLogic()$
\If {$request.featureA$}
\State $result\gets calcA(p)$
\EndIf
\State \Return{$result$}
\EndProcedure
\end{algorithmic}
\end{listing}
\begin{listing}
\captionabove{DEF}
Hier steht in echt ein Minted-Codeschnipsel
\end{listing}
\listoflistings
\end{document}
[/code]
Zusammen mit dem Paket [ctan]caption[/ctan] ist es sogar per Option möglich, die Algorithmen trotzdem als "Algorithmus" zu benennen:
[code]
\documentclass[a4paper,12pt, oneside]{scrbook}
\usepackage[ngerman]{babel}
\usepackage{algpseudocode, algorithmicx}
\usepackage[frozencache,newfloat]{minted}
\usepackage{caption}
%\DeclareNewTOC[ float,
% name=listing,
% type=listing,
% listname=Verzeichnis der Listings und Algorithmen,
%]{lol}
\begin{document}
\chapter{Testkapitel}
\begin{listing}
\captionsetup{name=Algorithmus}
\captionabove{ABC}
\begin{algorithmic}
\Procedure{processRequest}{$request$}
\State $p\gets someLogic()$
\If {$request.featureA$}
\State $result\gets calcA(p)$
\EndIf
\State \Return{$result$}
\EndProcedure
\end{algorithmic}
\end{listing}
\begin{listing}
\captionabove{DEF}
Hier steht in echt ein Minted-Codeschnipsel
\end{listing}
\listoflistings
\end{document}
[/code]
Man kann das aber auch etwas mehr low-level lösen:
[code]
\documentclass[a4paper,12pt, oneside]{scrbook}
\usepackage[ngerman]{babel}
\usepackage{algpseudocode, algorithmicx}
\usepackage[frozencache,newfloat]{minted}
%\DeclareNewTOC[ float,
% name=listing,
% type=listing,
% listname=Verzeichnis der Listings und Algorithmen,
%]{lol}
\begin{document}
\chapter{Testkapitel}
\begin{listing}
\renewcommand{\listingname}{Algorithmus}
\captionabove{ABC}
\begin{algorithmic}
\Procedure{processRequest}{$request$}
\State $p\gets someLogic()$
\If {$request.featureA$}
\State $result\gets calcA(p)$
\EndIf
\State \Return{$result$}
\EndProcedure
\end{algorithmic}
\end{listing}
\begin{listing}
\captionabove{DEF}
Hier steht in echt ein Minted-Codeschnipsel
\end{listing}
\listoflistings
\end{document}
[/code]
BTW: Bist du sicher, dass du ein einseitiges Buch und nicht einfach [tt]scrreprt[/tt] statt [tt]scrbook[/tt] haben willst? Buch und einseitig passt eigentlich nicht zusammen.