原生块换行
默认的 Asciidoctor 样式表通过应用 CSS white-space: pre-wrap 和 word-wrap: break-word 来实现 verbatim 块中长行的换行。行会在单词边界处断开,类似于大多数文本编辑器中的行换行方式。这可以防止水平滚动,因为一些用户认为水平滚动比行换行对可读性的影响更大。
但是,这种行为是可以配置的,因为有时您可能不希望在 listing 和 literal 块中的行进行换行。
防止换行
有两种方法可以防止行换行,转而使用水平滚动:
-
nowrap块选项 -
取消设置
prewrap文档属性(默认开启)
您可以在 literal 或 listing 块中使用 nowrap 选项来阻止行在 HTML 中被换行。
示例 1. 带有 nowrap 选项语法的 listing 块
[%nowrap,java]
----
public class ApplicationConfigurationProvider extends HttpConfigurationProvider
{
@Override
public Configuration getConfiguration(ServletContext context)
{
return ConfigurationBuilder.begin()
.addRule()
.when(Direction.isInbound().and(Path.matches("/{path}")))
.perform(Log.message(Level.INFO, "Client requested path: {path}"))
.where("path").matches(".*");
}
}
----
当使用 nowrap 选项时,nowrap 类会被添加到 <pre> 元素中。这个类会将 CSS 更改为 white-space: pre 和 word-wrap: normal。
示例 2. 结果:应用了 nowrap 选项的 listing 块
public class ApplicationConfigurationProvider extends HttpConfigurationProvider
{
@Override
public Configuration getConfiguration(ServletContext context)
{
return ConfigurationBuilder.begin()
.addRule()
.when(Direction.isInbound().and(Path.matches("/{path}")))
.perform(Log.message(Level.INFO, "Client requested path: {path}"))
.where("path").matches(".*");
}
}
要全局阻止行换行,请在文档中取消设置 prewrap 属性。
示例 3. 全局禁用 prewrap(从而启用 nowrap)
:prewrap!:
当 prewrap 属性被取消设置时,nowrap 类会被添加到任何 <pre> 元素中。
现在,您可以根据您和您的读者最喜欢的方式来使用行换行策略。