清单包中方程与代码框的交点

清单包中方程与代码框的交点

我使用了带有单框架的 listings 包,并且我的代码前面有一个方程。问题是框架与方程有一点交叉,输出结果很难看。当我在方程和代码之间留空行时和没有留空行时都会发生这种情况。我该如何解决这个问题?为什么会发生这种情况? 在此处输入图片描述

编辑一:

\documentclass[12pt]{article}

\usepackage{amsmath}
\usepackage{unicode-math}

\usepackage{listings}

\begin{document}

$\displaystyle y(t)=\frac{1}{12}-\frac{e^{2t}}{4}+\frac{e^{3t}}{6}$, for $t\ge 0$

\begin{lstlisting}[frame=single,breaklines=true]
clc;
clear all;
close all;
t=0:0.1:20;
y= 1/12 -exp(2*t)/4 + exp(3*t)/6;
G=tf(1,[2 -10 12]);
[y2, t2]=step(G,t);
subplot(2,2,1)
plot(t,y);
subplot(2,2,2)
plot(t2,y2);
\end{lstlisting}

\end{document}

答案1

您使用的\displaystyle是数学模式的分数inline。这会导致较大的分数超出基线以下。因此发生了冲突。

没有\displaystyle

在此处输入图片描述

它们不会冲突。因此,如果您\displaystyle需要更多垂直空间,我们会通过aboveskip列表提供这些空间。通过列表,aboveskip您可以调整列表和其上方段落之间的间距。

使用aboveskip合适的dimension

\documentclass[12pt]{article}

\usepackage{amsmath}
\usepackage{unicode-math}

\usepackage{listings}

\begin{document}

$\displaystyle y(t)=\frac{1}{12}-\frac{e^{2t}}{4}+\frac{e^{3t}}{6}$, for $t\ge 0$

\begin{lstlisting}[aboveskip=\baselineskip,frame=single,breaklines=true]
clc;
clear all;
close all;
t=0:0.1:20;
y= 1/12 -exp(2*t)/4 + exp(3*t)/6;
G=tf(1,[2 -10 12]);
[y2, t2]=step(G,t);
subplot(2,2,1)
plot(t,y);
subplot(2,2,2)
plot(t2,y2);
\end{lstlisting}

\end{document}

在此处输入图片描述

belowskip如果你愿意的话,也有类似的。

附注:由于它是 matlab 代码,您可以考虑Jubobs matlab-prettifiermcode排版这些代码。matlab-prettifier具有良好的功能。另请参阅这个问题及其答案。

答案2

你也可以直接使用displaymath环境。这样就不需要做任何调整了:

在此处输入图片描述

笔记:

  • 我还添加了basicstyle=\ttfamilylistsings否则,代码(尤其是G=内联的代码)看起来就不正确。

代码:

\documentclass[12pt]{article}

\usepackage{amsmath}
%\usepackage{unicode-math}

\usepackage{listings}

\begin{document}
\begin{equation*} 
    y(t)=\frac{1}{12}-\frac{e^{2t}}{4}+\frac{e^{3t}}{6}, \text{ for } t\ge 0
\end{equation*}
%
\begin{lstlisting}[frame=single,breaklines=true,basicstyle=\ttfamily]
clc;
clear all;
close all;
t=0:0.1:20;
y= 1/12 -exp(2*t)/4 + exp(3*t)/6;
G=tf(1,[2 -10 12]);
[y2, t2]=step(G,t);
subplot(2,2,1)
plot(t,y);
subplot(2,2,2)
plot(t2,y2);
\end{lstlisting}

\end{document}

相关内容