我正在尝试制作一本编程电子书,但 listings 包正在将列表中的所有空格转换为不间断空格。我尝试过breakatwhitespace
true 和 false 以及其他几种设置。我尝试过定义\def\lst@outputspace{\char32}
和
\def\lst@visiblespace{\char32}
(以及将它们定义为HCode{ }
和\
),但我不确定我是否做得正确。无论如何,我似乎无法让它在通过 tex4ht 运行时停止输出不间断空格。
我知道它们是不间断空格的原因是,(1)当我在电子书阅读器中查看它时,如果书太小,它们不会中断,并且(2)在 HTML 代码中,它充斥着 x00A0(我省略了 HTML-y 部分,因为我不知道如何在这里写它们)。
理想情况下,领导空格不会中断,但所有其他空格都将是普通空格。
另外,如果我可以使用其他包,那就太好了。我只需要来自外部文件的逐字输入。
我正在使用 tex4book 来构建,如果有任何区别的话。
答案1
我们可以使用lst@outputspace
配置字间距,但 id 不足以将其设置为正常间距,我们还必须配置CSS
列表环境以换行。
尝试这个配置文件:
\Preamble{xhtml}
\begin{document}
\makeatletter
\def\lst@outputspace{\HCode{ }}
\makeatother
\Css{div.lstlisting{white-space:pre-wrap;}}
\EndPreamble
环境的默认white-space
属性是,根据lstlisting
nowrap
Mozzila 开发者网络:
像平常一样折叠空格,但抑制文本内的换行符(文本换行)。
这显然不是我们想要的,pre-wrap
看起来更好:
保留空格序列。行会在换行符、 处换行
<br>
,并根据需要填充行框。
一些示例-无换行符:
并换行: