我正在用 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
不会被连字符,所以这将按照您想要的方式进行并且不会产生其他后果。