In einem Dokument, das eine Menge anderer Sachen enthält, habe ich den folgenden Code, den ich wörtlich beibehalten habe (mangels anderer Ideen). Wie Sie sehen, sieht die Ausrichtung nicht so gut aus.
Wie kann ich es ansprechender gestalten, sodass es besser lesbar ist, vielleicht durch Einrückungen (Verbatim scheint mit Leerzeichen und Tabulatoren nicht klarzukommen)?
\documentclass[]{article}
\begin{document}
\begin{verbatim}
if (n == 0 || n == 1){
return n;
}
j = 0;
for (i = 0; i < n-1; i++){
if (arr[i] != arr[i+1]){
arr[j] = arr[i];
j++;
}
}
arr[j++] = arr[n-1];
\end{verbatim}
\end{document}
Antwort1
Etwas wie das?
\documentclass{book}
\usepackage{listings}
\lstdefinestyle{myListingStyle}
{
basicstyle = \small\ttfamily,
breaklines = true,
}
\begin{document}
\begin{lstlisting}[
style = myListingStyle,
caption = {Nice listing.}
]
if (n == 0 || n == 1){
return n;
}
j = 0;
for (i = 0; i < n-1; i++){
if (arr[i] != arr[i+1]){
arr[j] = arr[i];
j++;
}
}
arr[j++] = arr[n-1];
\end{lstlisting}
\end{document}
SehenSetzen Sie einen grauen Hintergrund hinter Codeauszüge in einem Latex-Dokument (wie es diese Site tut)zum Beispiel zum Hinzufügen einer Hintergrundfarbe. Es ist auch möglich, den Code aus einer externen Datei zu laden – sehen Sie sich einfach die verwandten Fragen an.
Antwort2
Wörtlich
Im Gegensatz zu Ihrer Behauptung in der Frage unterstützt Verbatim Leerzeichen und Einrückungen. Warum also nicht nutzen?
\documentclass[]{article}
\begin{document}
\begin{verbatim}
if (n == 0 || n == 1){
return n;
}
j = 0;
for (i = 0; i < n-1; i++){
if (arr[i] != arr[i+1]){
arr[j] = arr[i];
j++;
}
}
arr[j++] = arr[n-1];
\end{verbatim}
\end{document}
Notierung
Dem listings
Paket können Farben hinzugefügt werden.
\documentclass[]{article}
\usepackage{listings}
\usepackage{xcolor}
\lstset{basicstyle=\ttfamily,language=c,keywordstyle=\color{blue}}
\begin{document}
\begin{lstlisting}
if (n == 0 || n == 1){
return n;
}
j = 0;
for (i = 0; i < n-1; i++){
if (arr[i] != arr[i+1]){
arr[j] = arr[i];
j++;
}
}
arr[j++] = arr[n-1];
\end{lstlisting}
\end{document}
Geprägt
Das minted
Paket ist noch leistungsfähiger …
% arara: pdflatex: {shell: yes}
\documentclass[]{article}
\usepackage{minted}
\begin{document}
\begin{minted}{c}
if (n == 0 || n == 1){
return n;
}
j = 0;
for (i = 0; i < n-1; i++){
if (arr[i] != arr[i+1]){
arr[j] = arr[i];
j++;
}
}
arr[j++] = arr[n-1];
\end{minted}
\end{document}
Tcblisting
Sie können es natürlich mit tcolorbox oder etwas anderem kombinieren …
% arara: pdflatex: {shell: yes}
\documentclass[]{article}
\usepackage{minted}
\usepackage[minted]{tcolorbox}
\newtcblisting{mylisting}{listing only,listing engine=minted, minted language=c,colback=gray!20}
\begin{document}
\begin{mylisting}
if (n == 0 || n == 1){
return n;
}
j = 0;
for (i = 0; i < n-1; i++){
if (arr[i] != arr[i+1]){
arr[j] = arr[i];
j++;
}
}
arr[j++] = arr[n-1];
\end{mylisting}
\end{document}
Antwort3
Wie bereits von anderen erwähnt, verbatim
funktioniert es für Code (ich verwende es für diesen Zweck). Das Problem, das Sie sehen, ist, dass Sie Ihren Code normalerweise mit Tabulatoren formatieren, die verbatim
aus irgendeinem Grund ignoriert werden. Ich füge meinen Code also in verbatim
„select it“ ein und ersetze die Tabulatoren durch beispielsweise 4 (oder eine beliebige Anzahl) Leerzeichen (aber nur innerhalb der Auswahl).