В документе, содержащем много других вещей, у меня есть следующий код, который я сохранил дословно (за неимением других идей). Как вы можете видеть, выравнивание выглядит не очень хорошо.
Как сделать его более презентабельным, чтобы он стал более читабельным, возможно, с отступами (похоже, 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
select и заменяю табуляции, скажем, на 4 (или любое количество, если на то пошло) пробелов (но только внутри выделения).