lstinputlisting 忽略 showlines=true

lstinputlisting 忽略 showlines=true

我正在尝试使用 在我的文档中显示一些代码lstinputlisting。我想显示用 Stan 编写的代码。我有一个单独的 Stan 文件,然后在我的 Latex 文档中调用它。

下面是一个工作示例。由于序言很长,所以它并不是那么精简。我担心我的序言中的某些内容可能会压倒论点showlines=true,因此我将整个序言粘贴在这里,以便您查看。文档的其余部分已精简为工作示例以及 Stan 代码。

要使此示例正常运行,您必须先用 Stan 代码创建一个单独的文件。这就是为什么我要粘贴两个代码块,一个用于 Stan 代码,一个用于 Latex 代码。

首先,这是 Stan 代码。文件名为stan_code.stan

data {
  real X;
  }

parameters {
  real Y;
}

model {
  X ~ normal(Y, 1);
}

讽刺的是,我也无法在 Stack Exchange 上添加最后一行空代码,但请手动添加。我的真实 Stan 文件包含最后一行空代码。

这是我的 Latex 文件的代码以及大序言。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage[
    backend=biber,
    style=apa,
  ]{biblatex}
\addbibresource{bibliography.bib}
\usepackage{multirow}
\usepackage{rotating}
\usepackage[svgnames]{xcolor}
\usepackage{listings}
\usepackage{lmodern}
\usepackage{appendix}
\usepackage{booktabs}
\usepackage[flushleft]{threeparttable}
\usepackage[strict]{changepage}
\usepackage{csquotes}
\usepackage[export]{adjustbox}
\usepackage{multirow}
\usepackage{makecell}
\renewcommand{\cellalign}{cl}
\renewcommand{\theadalign}{cl}
\usepackage{amssymb}
\usepackage[labelsep=period]{caption}
\usepackage{subcaption}
\DeclareCaptionLabelFormat{myformat}{\tablename\ #2}
\captionsetup[subtable]{labelformat=myformat,labelsep=period}  
\renewcommand{\thesubtable}{\thetable\alph{subtable}}
\makeatletter
\renewcommand\p@subtable{}
\makeatletter

\usepackage[noabbrev]{cleveref} 

\lstset{
  aboveskip=1ex,
  backgroundcolor=\color{gray!25},
  basicstyle=\normalsize\ttfamily\linespread{.9}\selectfont,
  belowskip=1ex,
  breaklines=true,
  columns=fullflexible,
  framerule=0pt,
  framexrightmargin=0em,
  framexleftmargin=0em,
  numbers=left,
  numberstyle=\footnotesize\sffamily,
  tabsize=2,
  showlines=true
}

\usepackage{lstbayes}
\usepackage{graphicx}
\usepackage{float}
\usepackage[english]{babel}
\usepackage{abstract}
\addto\captionsenglish{\renewcommand{\abstractname}{}}    
\renewcommand{\absnamepos}{empty} 
\usepackage{setspace}
\doublespacing
\interfootnotelinepenalty=\@M
\usepackage[margin=1in]{geometry}


\DeclareMathOperator\diag{diag}

\begin{document}

\lstinputlisting[language=Stan]{stan_code.stan}

\end{document}

这就是我得到的:

在此处输入图片描述

因此,即使我的代码包含最后一个空行,并且我showlines=true在 中使用lstset,它也会被完全忽略,并且最后一个空行会被截断。是否有东西覆盖了这一点,还是存在其他问题?我该如何解决这个问题?

编辑:日志文件可以在这里找到:https://0bin.net/paste/qipTojzM#WVKH-wbIDq7KdT4LyS2goZE4kU7XY6Zt+Ul7H31giHA

相关内容