![在我使用的自定义类中,什么可以阻止列表中的换行?](https://linux22.com/image/289906/%E5%9C%A8%E6%88%91%E4%BD%BF%E7%94%A8%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E7%B1%BB%E4%B8%AD%EF%BC%8C%E4%BB%80%E4%B9%88%E5%8F%AF%E4%BB%A5%E9%98%BB%E6%AD%A2%E5%88%97%E8%A1%A8%E4%B8%AD%E7%9A%84%E6%8D%A2%E8%A1%8C%EF%BC%9F.png)
我已经发现如何将代码包装在 lstlisting 块内。当我的文档有article
类时,一切都按预期工作。
但是,当我将文档的类别更改为工作中需要的类别时,行不再断开。我不是此类的作者,也不知道问题可能出在哪里。你能帮助我吗?
最小工作示例:
\documentclass{templates/mgragh}
\usepackage[utf8]{inputenc}
\usepackage{listings}
\usepackage[polish]{babel}
\usepackage[OT4]{fontenc}
\usepackage{color}
\lstset{
frame=single,
breaklines=true,
postbreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\color{red}\hookrightarrow\space}}
}
\begin{document}
\begin{lstlisting}
public void createVoiceComment(File recodedFile) throws CommentNotAddedException;
\end{lstlisting}
\end{document}
文档类别可在此处获取:https://copy.com/sijTRKuBQ9L2
答案1
简短回答
替换中的第 172 行mbwk.cls
,
\exhyphenpenalty=10000
经过
\exhyphenpenalty=9999
成功了。
更详细的答案
mwbk.cls
由您使用的类内部加载的类()mgraph
在第 171-172 行设置,
\hyphenpenalty=100
\exhyphenpenalty=10000
将这些值与 Plain TeX(以及 LaTeX 内核)使用的值进行对比:
\hyphenpenalty=50
\exhyphenpenalty=50
这些宏有什么用呢?下面是 TeXbook 中的一段相关段落(第 14 章第 96 页底部):
每个潜在的断点都有一个相关的“惩罚”,它代表在该处断点的“美学成本”。[...] 普通 TeX 集
\hyphenpenalty=50
和\exhyphenpenalty=50
。
练习 14.6...
解释如何指示 TeX 不要在显式连字符和破折号后进行任何换行。(这在较长的参考书目中很有用。)
及其解决方案......
\exhyphenpenalty=10000
根据本章后面的规则,禁止所有此类中断。同样,\hyphenpenalty=10000
禁止在隐式(自由)连字符后中断。
... 也相关。
mwbk
显然,这些类(和)的作者mgraph
希望通过设置\exhyphenpenalty
如此高的值(10000 在 TeX 中被认为是无限糟糕),以防止在显式连字符和破折号后出现任何中断。然而,这似乎也会阻止列表中的换行。事实上,只需\exhyphenpenalty
在第 172 行中将值减一即可mwbk.cls
\exhyphenpenalty=9999
似乎解决了这个问题。
\documentclass{templates/mgragh}
\usepackage[utf8]{inputenc}
\usepackage{listings}
\lstset{
frame=single,
breaklines=true,
}
\begin{document}
\begin{lstlisting}
public void createVoiceComment(File recodedFile) throws CommentNotAddedException;
\end{lstlisting}
\end{document}