형식 코드/의사 코드

형식 코드/의사 코드

다른 많은 내용을 포함하는 문서에는 (다른 아이디어가 없기 때문에) 그대로 유지한 다음 코드가 있습니다. 보시다시피 정렬이 그리 좋지는 않습니다.영상
들여쓰기를 사용하여 더 읽기 쉽게 만들려면 어떻게 해야 합니까(문자 그대로 공백과 탭을 처리하지 못하는 것 같습니다)?

\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

그대로

귀하의 질문에서 주장하는 것과는 달리 축어적으로 공백과 들여쓰기를 지원하므로 사용하지 않으시겠습니까?

말 그대로

\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나 다른 것과 결합할 수도 있습니다.

tcblisting

% 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개(또는 해당 문제에 대해서는 임의의 수)의 공백(그러나 선택 항목 바로 안쪽)으로 바꾸는 것입니다.

관련 정보