不要在列表中的某些字符处换行

不要在列表中的某些字符处换行

是否可以配置 lstlisting 使其不在某些字符处换行?在此示例中,在左括号后插入换行符:

public void someMethod(
    String parameter)

相反,我希望左括号出现在第二行:

public void someMethod
    (String parameter)

编辑(MWE 添加):

\documentclass{article}
\usepackage{listings}

\begin{document}

\begin{lstlisting}[breaklines=true, linewidth=5cm, frame=single]
public void someMethod(String parameter)
\end{lstlisting}

\end{document}

答案1

接下来的内容更像是一种丑陋的破解,而不是正确的解决方案,但它可能会对您有所帮助。

简而言之,该方法包括(在列表中出现任何字符后立即在本地设置非常高的换行惩罚;这样,在之后就不会出现(所需的换行。

在此处输入图片描述

\documentclass{article}
\usepackage{listings}

\lstset{
  breaklines=true,
  frame=single,
  literate=({{(\penalty10000\hspace{-.7em}}}2, % <--- ugly hack right there
}

\begin{document}

\begin{lstlisting}[linewidth=5cm]
public void someMethod(String parameter)
\end{lstlisting}

\begin{lstlisting}
public void someMethod(String parameter)
\end{lstlisting}

\end{document}

相关内容