我想使用该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}
瞧!