
Я пытаюсь встроить код Maxima в LaTeX с помощью lstlisting и получаю лишние пробелы над листингом. Это в моей преамбуле:
\lstset{basicstyle=\ttfamily\color{blue},
breaklines=true,
breakatwhitespace=true,
boxpos=t,
resetmargins=true}
Вот соответствующий код LaTeX:
\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}
и вот результат:
Я хочу, чтобы первая строка списка была выровнена по верху таблицы.
Может ли кто-нибудь подсказать, как это исправить?
решение1
Было бы очень мило с вашей стороны представить полный отчет о состоянии окружающей среды с \documentclass
по \end{document}
, чтобы нам не пришлось гадать или гадать.
Тем не менее, я использовал мяч и немного изменил ваш пример. Пожалуйста, не вините меня за какие-либо неправильные предположения.
Вы используете таблицу, чтобы представить маркер в левом столбце и пример кода в правом столбце. Вы заключаете пример кода в -окружение lstlisting
, которое действует очень похоже на отображаемые формулы, то есть добавляет пустое пространство сверху и снизу вашего кода.
Вместо этого вы хотите, чтобы ваш код был выровнен с меткой в левом столбце, я прав?
Чтобы выровнять код, вам нужно использовать команду \lstinline!code!
вместо вышеуказанной среды. Вместо восклицательного знака в качестве разделителя ( !
) вы можете выбрать любой другой символ, которого нет в коде, который вы хотите представить.
Наконец, вы должны убедить свою таблицу, мирно сотрудничать с \lstinline
. Я сделал это, изменив второй столбец на столбец определенной ширины, который может разделять длинные строки. Чтобы он был похож на обычный l
-столбец, он был раньше, я добавил >{\raggedright\arraybackslash}
к нему. Этот новый тип столбца был назван L
(заглавная L).
Вот мой пример:
\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}
И вот результат: