lstset 中的断线有时不起作用

lstset 中的断线有时不起作用

我通过 将一些代码包含到我的 tex 文件中\lstinputlisting[]{}。不幸的是,有时breaklines=true-command 不起作用。示例: 在此处输入图片描述

在第 65 行,换行符不起作用,但在第 70 行却起作用。为什么?我的lstset是:

\lstset{literate=
  {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
  {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
  {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
  {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
  {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
  {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
  {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
  {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
  {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
  {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
  {€}{{\EUR}}1 {£}{{\pounds}}1,
  breaklines=true, postbreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\color{red}\hookrightarrow\space}},
  rulecolor=\color{black}
}

完整列表:

\documentclass[a4paper,11pt]{article}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{amsmath}
\usepackage{bibgerm} 
\usepackage{amssymb}
\usepackage{makeidx}
\usepackage[automark]{scrpage2}
\usepackage{listings}
\pagestyle{scrheadings}
\usepackage{graphicx}
\usepackage{wrapfig}
\usepackage{subcaption}
\usepackage{siunitx}
\usepackage{multicol}
\usepackage{xcolor}
\usepackage{yfonts}
\usepackage[bw,numbered,framed,autolinebreaks]{mcode}
%\usepackage[per-mode=fraction,output-decimal-marker={,}]{siunitx}
%\usepackage{multirow}
%\usepackage{bigstrut}
%\usepackage{rotating}

\setlength{\parindent}{0ex}
\setlength{\parskip}{1.5ex plus0.5ex minus0.2ex}
\setlength{\headheight}{26pt}
\addtolength{\topmargin}{-0.2in}
\addtolength{\headsep}{0.2in}
\addtolength{\oddsidemargin}{-0.2in}
\addtolength{\textwidth}{0.5in}

\renewcommand{\topfraction}{1.0}
\renewcommand{\bottomfraction}{1.0}
\renewcommand{\textfraction}{0.0}

\newcommand{\unit}[1]{\ensuremath{\, \mathrm{#1}}}
\newcommand{\sinc}{\mathrm{sinc}}
\newcommand{\cosc}{\mathrm{cosc}}


\begin{document}
\begin{lstlisting}
def jonswap(self, w, wp = None, alpha = 0.0081, gamma = 3.3, beta = 1.25):

            S.append(alpha*gamma*gamma/elem**5*math.exp(-beta*(wp/elem)**4)*gamma**r)
        return S 
\end{lstlisting}
\end{document}

答案1

问题在于它breaklines不做决定。它有两个简单的规则可以打破:

  1. 不要破坏初始缩进(即,在行上至少留下一些除空格之外的内容)
  2. 仅在空白处中断。

由于您的行不包含任何空格,因此没有可行的断点,因此没有断点。

相关内容