Разрыв строки после lstlisting не работает

Разрыв строки после lstlisting не работает

введите описание изображения здесь

Я только начал работать с Latex, поэтому это может показаться очень нубским вопросом. Я помещаю некоторый код в lstlisting, а затем хочу добавить пустую строку, а затем строку "Определите бла-бла".

Проблема 1: Этот пробел перед Define, я не знаю, почему он появляется... В остальной части моего документа его нет...

Проблема 2: Я пытаюсь вставить перенос строки после \lstlisting с помощью \, но это не работает...

Вот мой код для этой области:

\subsection*{Part C}

Read over and experiment with the following code:\\

\begin{lstlisting}
def is_b_list(x):
    """(object) -> bool
    Return whether x is a binary list.
    >>> is_b_list("b_list")
    False
    >>> is_b_list(0)
    True
    >>> is_b_list([0, 0])
    True
    >>> is_b_list([[0]])
    False
    """
    return (x == 0 or
           (isinstance(x, list) and len(x) == 2
            and all([is_b_list(y) for y in x])))
\end{lstlisting}

\\Define the size of a binary list as the number of left brackets in its Python representation, i.e the total number of list objects in the binary list. So 0 has size 0 and [0, 0] has size 1.

\begin{enumerate}
\item Experiment until you find a formula (probably recursive) that computes the number of different binary lists of size s. Notice that if you call the formula C(s) then C(0) computes 1 and (C1) also computes 1.

Вот чего я хотел бы добиться:

введите описание изображения здесь

решение1

Не стоит использовать его \\слишком часто. Обычно его вообще не следует использовать в обычном тексте. Вам нужно решить, где начинается новый абзац (пустая строка в коде), а где его не должно быть (нет пустой строки или %). Новый абзац всегда будет получать этот отступ (перед «Определить размер...»), чтобы сделать этот новый абзац видимым. Если вы не хотите этого в этом отдельном случае, используйте \noindent.

Лучшим способом было бы оставить пустые строки, так как вы не хотите получать новые абзацы. Это сохранит семантику вашего кода правильной. Если вы хотите увеличить интервал вокруг вашего листинга, он должен быть одинаковым для каждого листинга. И, таким образом, он должен быть определен в преамбуле. Пожалуйста, посмотрите мой MWE:

% arara: pdflatex

\documentclass{article}
\usepackage{listings}
\lstset{aboveskip=\baselineskip,belowskip=\baselineskip,basicstyle=\ttfamily}

\begin{document}
\subsection*{Part C}
%
Read over and experiment with the following code:
%
\begin{lstlisting}
def is_b_list(x):
"""(object) -> bool
Return whether x is a binary list.
>>> is_b_list("b_list")
False
>>> is_b_list(0)
True
>>> is_b_list([0, 0])
True
>>> is_b_list([[0]])
False
"""
return (x == 0 or
(isinstance(x, list) and len(x) == 2
and all([is_b_list(y) for y in x])))
\end{lstlisting}
%
Define the size of a binary list as the number of left brackets in its Python representation, i.e.\ the total number of list objects in the binary list. So $0$ has size $0$ and $[0, 0]$ has size $1$.
%
\begin{enumerate}
    \item Experiment until you find a formula (probably recursive) that computes the number of different binary lists of size $s$. Notice that if you call the formula $C(s$) then $C(0)$ computes $1$ and $(C1)$ also computes $1$.
\end{enumerate}
\end{document}

введите описание изображения здесь

Если позже вы решите изменить интервал, вы можете просто переопределить aboveskip=10ptили любую другую меру или оставить ее. Это может произойти, если вы измените стиль своих листингов. Например, чтобы быть окруженным коробкой или чем-то подобным. Это дает вам максимальную гибкость.


NB: Я заменил все ваши пустые строки на , %так как это похоже на один большой абзац. Вам следует поиграться с ними (удалить по одному), чтобы увидеть, что происходит. Например, интервал перед вашим перечислением был слишком большим (что говорит о том, что это не начало нового абзаца).

Связанный контент