我正在尝试使用 lstlisting 将 Maxima 代码嵌入 LaTeX,但在列表上方出现了多余的空白。这是我的序言:
\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
如果您能展示从到的完整 MWE,那就太好了\end{document}
,这样我们就不必猜测或使用水晶球了。
不过,我使用了球并稍微修改了你的例子。请不要因为任何错误的假设而责怪我。
您使用表格在左列显示标记,在右列显示代码示例。您将代码示例放在 -environment 中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}
结果如下: