我正在尝试在列表中编写一些代码,但是,每个反斜杠都会在其右侧添加一个空格,我试图保持原样。我怎么才能删除它们呢?
\begin{lstlisting}[showstringspaces=false]
1 package org.jmlspecs.samples.jmlrefman
2
3 public abstract class IntHeap{
4
5 //@ public model non_null int[] elements;
6
7 /*@ public normal_behaviour
8 @ requires elements.length >= 1;
9 @ assignable \nothing
10 @ ensures \result
11 @ == (\max int j;
12 @ 0 <= j && j < elements.length;
13 @ elements[j]);
14 @*/
15 public abstract /*@ pure @*/ int largest();
16
17 //@ ensures \result == elements.length;
18 public abstract /*@ pure @*/ int size();
19 };
\end{lstlisting}
例如,第 9 行显示为
9 @ assignable \ nothing
代替
9 @ assignable \nothing
编辑:被告知添加一个最小的工作示例,因此这里有一个:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}
\usepackage[english]{babel}
\usepackage{multicol}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{comment}
\usepackage{titlesec}
\usepackage{parskip}
\usepackage{fontenc}
\usepackage{geometry}
\setlength{\columnsep}{1cm}
\usepackage{listings}
\begin{document}
\title{Brief Article}
\author{The Author}
\maketitle
\section{example}
\begin{lstlisting}
1 public class BubbleSort {
2 /*@
3 @ requires arr != null;
4 @ ensures \forall int k; 0 <= k && k < arr.length -1;
5 @ arr[k] > arr[k+1];
6 @*/
7 public static void sort(int [] arr) {
8 for (int i = 0; i < arr.length; i++) {
9 for (int j = arr.length-1; j > i; j--) {
10 if (arr[j-1] < arr[j]) {
11 int tmp = arr[j];
12 arr[j] = arr[j-1];
13 arr[j-1] = tmp;
14 }
15 }
16 }
17 }
18 }
\end{lstlisting}
\end{document}
答案1
欢迎使用 TeX.SX!您在代码中看到的并不是真正的空格,但这是该listings
包将所有字符放置在每列 0.6em 宽的列中的结果。这实际上是该包的一个功能。
您可能需要咨询listings
包装手册并尝试以下不同的选项(一起或单独):
- 将选项设置
basewidth
为小于 0.6em 的值, - 将选项设置
columns
为flexible
或fullflexible
, - 设置选项
basicstyle
以{\ttfamily}
使用等宽字体系列。
顺便说一下,该包可以自动添加行号。例如,listings
只需添加选项即可。numbers=left
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{listings}
\begin{document}
\begin{lstlisting}[columns=fixed, basewidth=0.5em, basicstyle={\ttfamily}] % set options here
1 public class BubbleSort {
2 /*@
3 @ requires arr != null;
4 @ ensures \forall int k; 0 <= k && k < arr.length -1;
5 @ arr[k] > arr[k+1];
6 @*/
7 public static void sort(int [] arr) {
8 for (int i = 0; i < arr.length; i++) {
9 for (int j = arr.length-1; j > i; j--) {
10 if (arr[j-1] < arr[j]) {
11 int tmp = arr[j];
12 arr[j] = arr[j-1];
13 arr[j-1] = tmp;
14 }
15 }
16 }
17 }
18 }
\end{lstlisting}
\end{document}