Como remover espaços em branco no início da listagem

Como remover espaços em branco no início da listagem

Estou tentando incorporar o código Maxima no LaTeX usando lstlisting e estou obtendo espaço em branco extra acima da listagem. Isto está no meu preâmbulo:

\lstset{basicstyle=\ttfamily\color{blue},
breaklines=true,
breakatwhitespace=true,
boxpos=t,
resetmargins=true}

Aqui está o código LaTeX relevante:

\begin{tabular}{ll}
\textcolor{red}{\ttfamily (\%i1)} &
\begin{lstlisting}
divide(x*((x^2*p^2-t^2)^2 + 2*x*p^3*(x-(2*x^3+2*x^2+x+1)*t)), (x+1)*(t^2-x^2*p^2)^2, t);
\end{lstlisting}
\end{tabular}

e este é o resultado:

insira a descrição da imagem aqui

Quero que a primeira linha da listagem esteja alinhada com o topo da tabela.

Alguém pode sugerir como consertar isso?

Responder1

Seria muito legal da sua parte apresentar um MWE completo de \documentclassaté \end{document}, para não termos que adivinhar ou usar a bola de cristal.

Mesmo assim, usei a bola e modifiquei um pouco o seu exemplo. Por favor, não me culpe por quaisquer suposições erradas.

Você está usando uma tabela para apresentar um marcador na coluna da esquerda e o exemplo de código na coluna da direita. Você coloca o código de exemplo em um lstlisting-environment, que age de forma muito semelhante a uma fórmula exibida, ou seja, adiciona espaço em branco na parte superior e inferior do seu código.

Em vez disso, você deseja que seu código esteja alinhado com o rótulo na coluna da esquerda, certo?

Para alinhar seu código, você deve usar o comando \lstinline!code!em vez do ambiente acima. Em vez do ponto de exclamação como delimitador ( !), você pode escolher qualquer outro caractere que não esteja presente no código que deseja apresentar.

Finalmente, você deve convencer sua mesa a cooperar pacificamente \lstinline. Fiz isso transformando a segunda coluna em uma coluna de largura definida e capaz de dividir linhas longas. Para gostar de uma lcoluna comum, costumava ser, acrescentei >{\raggedright\arraybackslash}a ela. Este novo tipo de coluna foi nomeado L(L maiúsculo).

Este é o meu exemplo:

\documentclass{article}
\usepackage{listings}
\usepackage{color}

%% New
\usepackage{array}              % to define new column declarations.

%% Define a new column declaration
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}

\lstset{basicstyle=\ttfamily\color{blue},
breaklines=true,
breakatwhitespace=true,
boxpos=t,
resetmargins=true}

\begin{document}
\begin{tabular}{l L{5cm} } % <--- I used the new L-column, made it 5
                           % <--- cm wide!
\textcolor{red}{\ttfamily (\%i1)} &
%% New: use inline listing, it has to be one line!
\lstinline!divide(x*((x^2*p^2-t^2)^2 + 2*x*p^3*(x-(2*x^3+2*x^2+x+1)*t)), (x+1)*(t^2-x^2*p^2)^2, t);!
\end{tabular}
\end{document}

E o resultado:

insira a descrição da imagem aqui

informação relacionada