
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:
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 \documentclass
até \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 l
coluna 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: