他にもたくさんの内容を含むドキュメントの中に、次のコードをそのまま残しています (他にアイデアがないため)。ご覧のとおり、配置はあまり良くありません。
インデントなどを使って、より見やすく、読みやすくするにはどうすればよいでしょうか (verbatim はスペースとタブを処理できないようです)?
\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}
答え1
このようなもの?
\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}
見るLatex ドキュメント内のコード抽出の背後に灰色の背景を配置する (このサイトのように)たとえば、背景色を追加する場合などです。外部ファイルからコードを読み込むこともできます。関連する質問を参照してください。
答え2
逐語的
質問で主張していることとは反対に、verbatim はスペースとインデントをサポートしているので、なぜそれを使用しないのですか?
\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}
リスト
パッケージlistings
には色を追加できます。
\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}
鋳造
パッケージminted
はさらに強力になりました…
% 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
もちろん、tcolorbox や他のものと組み合わせることもできます...
% 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}
答え3
すでに他の人が述べているように、verbatim
コードには機能します (私はその目的で使用しています)。 表示される問題は、通常、コードをタブでフォーマットしますが、verbatim
何らかの理由で無視されることです。 そのため、私はコードをverbatim
選択してタブを 4 個 (または任意の数) のスペース (ただし、選択範囲内のみ) に置き換えます。