避免在 \lstinline 后换行

避免在 \lstinline 后换行

我正在用 LaTeX 写一篇计算机科学论文,有很多内联代码。现在,当此代码后跟逗号且位于行末时,会插入换行符逗号,这是错误的并且看起来很奇怪。

以下是一个例子:

这是带有一些inlined code、、more inlined code
和的普通文本even more inlined code

基本上,相应的 LaTeX 代码是(尽管我在重现此 MWE 中的问题时遇到了问题):

\documentclass{minimal}
\usepackage{listings}
\begin{document}
This is normal text with some \lstinline{inlined code}, 
\lstinline{more inlined code}, and \lstinline{even more inlined code}.
\end{document}

如何避免代码和逗号之间的换行?我发现将\mbox逗号和\lstinline宏放在一起是可行的,但这感觉不对。有更好的解决方案吗?

如果问题是由于我的大学.sty.cls文件中的设置引起的,有没有办法可以快速找到有问题的选项?...也就是说,不注释掉大部分内容,然后逐一重新引入每个选项。


编辑

最终设法编写了一个简短的工作示例:

\documentclass[11pt]{book}

\usepackage{listings}
\lstset{
basicstyle=\ttfamily\footnotesize,
breaklines=true
}

\begin{document}
Bacon ipsum dolor sit amet ball tip shankle i Nrtdy uses \lstinline{System.LongerCode}, whereas Uiae uses \lstinline{System.OtherCode}.
\end{document}

删除breaklines=true似乎可以避免这个问题。这很不幸,因为我需要在其他地方的列表中自动换行。有合理的解决办法吗?

答案1

添加选项breakatwhitespace

\usepackage{listings}
\lstset{
  basicstyle=\ttfamily\footnotesize,
  breaklines,
  breakatwhitespace,
}

由于排版的文本\ttfamily不会被连字符,所以这将按照您想要的方式进行并且不会产生其他后果。

相关内容