原生块换行

默认的 Asciidoctor 样式表通过应用 CSS white-space: pre-wrapword-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: preword-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> 元素中。

现在,您可以根据您和您的读者最喜欢的方式来使用行换行策略。