Quebra de linha após lstlisting não funcionar

Quebra de linha após lstlisting não funcionar

insira a descrição da imagem aqui

Acabei de começar a trabalhar com Latex, então isso pode parecer uma pergunta muito nova. Coloquei um código em um lstlisting e depois quero adicionar uma linha em branco e depois a linha "Definir o bla bla".

Problema 1: Aquele espaço antes de Definir, não sei porque isso está ocorrendo... não acontece no resto do meu documento...

Problema 2: tento inserir uma quebra de linha após \lstlisting usando \ mas não funciona...

Este é o meu código para essa área:

\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.

Isso é o que eu gostaria de alcançar:

insira a descrição da imagem aqui

Responder1

Você não deve usar \\muito isso. Normalmente, você não deve usá-lo em texto normal. Você tem que decidir onde um novo parágrafo começa (linha em branco no código) e onde não deveria (sem linha em branco ou um %). Um novo parágrafo sempre terá aquele recuo (antes de "Definir o tamanho...") para tornar o novo parágrafo visível. Se você não quiser isso neste único caso, use \noindent.

A melhor maneira seria deixar de lado as linhas vazias, pois você não deseja obter novos parágrafos. Isso manterá a semântica do seu código correta. Se você deseja obter um espaçamento maior em torno de sua listagem, deve ser o mesmo para todas as listagens. E assim, tem que ser definido no preâmbulo. Por favor, veja meu 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}

insira a descrição da imagem aqui

Se posteriormente você decidir alterar o espaçamento, basta redefinir aboveskip=10ptou qualquer outra medida ou deixá-la de lado. Isso pode acontecer se você alterar o estilo de sua listagem. Por exemplo, estar rodeado por uma caixa ou algo semelhante. Isso lhe dá flexibilidade máxima.


NB: Substituí todas as suas linhas em branco por %um grande parágrafo, pois parece ser um grande parágrafo. Você deve brincar com eles (excluir um por um) para ver o que está acontecendo. Por exemplo, o espaçamento na frente da sua enumeração era muito grande (sugerindo que este não era o início de um novo parágrafo).

informação relacionada