LaTeX - lstinline

LaTeX - lstinline

我想使用该listings包包含一个简短的代码片段。我已经选择了参数,\lstset并且我的 C++ 代码在使用这些设置后看起来很不错。

对于内联代码片段,我尝试使用命令\lstinline。但是当尝试这样的操作时:

\lstinline$#define EXAMPLE$

the output is like this: 
# 
define

EXAMPLE

instead of this:
#define EXAMPLE

我制作了一个最小版本,发现这是由于\singlespacing我的\lstset设置造成的。我该如何在不丢失\singlespacing命令的情况下修复此问题?

最低版本:

\documentclass[a4paper,oneside,12pt,2.1headlines]{scrreprt}

\usepackage{setspace}
\usepackage{listings}

\lstset{
  basicstyle=\singlespacing
}

\begin{document}

  \lstinline$#define EXAMPLE$

\end{document}

答案1

basicstyle在每一行开头都应用。因此你正在呼叫\singlespacing每条线路都在呼叫

让我们尝试编写一个最小文件,其中没有列表,但每行都混入命令\singlespacing。例如

Mary had a little lamb%
\singlespace%
and his fur was white as%
\singlespace%
snow.

您会发现每次启动该命令时都会跳过一行。让我们看一下 setspace 代码,如下所示 kpsewhich setspace.sty

\newcommand{\setstretch}[1]{%
  \def\baselinestretch{#1}%
  \@currsize
}

\newcommand{\SetSinglespace}[1]{%
  \def\setspace@singlespace{#1}%
}

% Here's the default single line spacing value.
\SetSinglespace{1}

\newcommand{\singlespacing}{%
  \setstretch {\setspace@singlespace}%  normally 1
  \vskip \baselineskip  % Correction for coming into singlespace
}

看看最后一行:... 罪名成立。现在让我们做一下它所做的事情,不用“进入单行空间的更正”:

\documentclass[a4paper,oneside,12pt,2.1headlines]{scrreprt}

\usepackage{setspace}
\usepackage{listings}


\newcommand{\mysinglespacing}{%
  \setstretch{1}% no correction afterwards
}

\lstset{
  basicstyle=\mysinglespacing,
  breaklines=no
}

\begin{document}

\lstinline$#define EXAMPLE$

\end{document}

瞧!

相关内容