我们很高兴宣布http://rubygems.org/gems/asciidoctor[Asciidoctor 0.1.3]的发布。阅读安装或更新Asciidoctor以了解如何进行设置。
Asciidoctor是一个开源文本处理器和发布工具链,使用Ruby编写,用于将AsciiDoc标记转换为HTML 5、DocBook 4.5和自定义格式。Asciidoctor是用Ruby编写的,但可以通过Java集成库被任何JVM语言使用。
这个版本标志着一个重要的里程碑。自从Dan开始使用Asciidoctor并推动它向前发展,至今已经整整6个月了。从那时起,项目确实已经走了很长的路。通过这次发布,我们不仅仅是在实现AsciiDoc,更是在推进它,正如这篇文章所强调的那样。
概述
这个发布周期的焦点是:
-
AsciiDoc 符合性(是的,仍然)
-
新的速记语法和宏
-
改进的样式
-
Markdown 兼容性
-
修复错误
我们收到的宝贵反馈已帮助 Asciidoctor 达到了 99.5% 的 AsciiDoc 语法符合度,并且涵盖了 Markdown 语法的关键部分。这些改进为 Asciidoctor 与前一版本相比增加了 10% 的速度提升,几乎是原生 AsciiDoc 处理器的 40倍速。
本文档涵盖了大多数新颖而值得注意的修复和增强。如果你急着想了解,这里有个简短的版本。
-
文件编码和Windows路径错误已修复!
-
受Haml/Slim/Jade启发的语法,用于定义块内容的id和角色。
-
使用块定界符的第一个位置来设置表格格式的速记语法。
-
在定义块引用时使用替代的“气引号”定界符。
-
对Markdown块引用和标题的支持(与围栏代码块一起使用)
-
基于字体的警告图标由http://fortawesome.github.io/Font-Awesome[Font Awesome^]提供支持,CSS 基于的标号图标。
-
作为浮动锚点或链接的标题文本的相关部分标题
-
链接的目标窗口和角色(即CSS类)属性
-
使用 google-code-prettify 来高亮源代码块的选项
-
include 宏目标中解析的属性
-
对包含内容的块缩进进行控制
-
目录侧边栏的放置(
toc2
) -
键盘快捷键、菜单选择以及UI按钮的宏(实验性的)
-
目录按照节标题的编号设置进行排版
-
内联文档类型用于渲染简单、非结构化的内容
-
传递属性给Asciidoctor API的简写语法
-
默认样式表中的一般样式改进
-
更新了asciidoc.conf兼容性配置
-
测试套件中有1000多个测试
-
解决了超过 40个问题
继续阅读以了解这些重大改进!
使用新的速记语法更快地编写!
快捷方式设置+id+和+role+块属性
在Haml、Jade和Slim的精神指导下,Asciidoctor允许你使用属性快捷方式为块分配+id+和+role+属性。这种简写语法对于用AsciiDoc创建演示文稿非常有用,因为在标记中需要大量的样式类。
考虑以下AsciiDoc标记:
[[goals]]
[role="incremental"]
* Goal 1
* Goal 2
在Asciidoctor中,现在可以写成:
[#goals.incremental]
* Goal 1
* Goal 2
''The prefix is recognized as shorthand for
id=
, and the .
prefix is recognized as shorthand for role=
.'' 翻译成中文是:识别 '' 前缀作为 '+id=
' 的简写,识别 '.
' 前缀作为 'role=
' 的简写。
两段源代码生成了以下的HTML:
<div id="goals" class="ulist incremental">
<ul>
<li><p>Goal 1</p></li>
<li><p>Goal 2</p></li>
</ul>
</div>
这种简写符号是块样式的一部分。因此,它充分利用了第一个属性位置。
假设你想要从一个开放的区块创建一个块引用,并且为其分配一个id和角色。你需要在第一个属性位置前加上样式 quote
,然后把+#+
(id
)和+.(+role
)分别对应添加,正如这个例子所示:
“路?我们要去的地方,不需要道路。”
这生成以下HTML代码:
<div id="roads" class="quoteblock dramatic">
<blockquote>
<div class="paragraph">
<p>Roads? Where we're going, we don't need roads.</p>
</div>
</blockquote>
<div class="attribution">
— Dr. Emmett Brown
</div>
</div>
关于这种记法,你还需要了解一些其他事项:
-
要使用简写语法指定多个角色,请用点分隔它们。
例如,
+[.summary.incremental]+
会发出HTML属性+class="summary incremental"+
。 -
在简写语法中,id和role值的顺序并不重要。
例如,
[#goals.incremental]
和[.incremental#goals]
生成的输出是相同的。
了解更多关于Asciidoctor文档的信息:块属性
简写记法用于设置 csv
和 dsv
表格格式
表格块定界符的第一个位置(即,|===
)可以被数据定界符替换,以设定表格格式。
如下所示,不是使用块属性来指定+csv+格式:
|===
[format="csv"]
a,b,c
|===
你可以简单地将开头的竖线 (|
) 替换为逗号 (,
):
=== a,b,c ,===
同样地,通过将前导的管道符号(|
)替换为冒号(:
),可以指定+dsv+格式。
a:b:c
现在,您只需要区块属性列表来设置任何其他选项。
在Asciidoctor文档中学习更多关于表格的信息
替代的引用块语法
Asciidoctor 0.1.3带来了三种新的语法变体,用于标记引用块:
引用段落。空气引号。Markdown风格。
这是一个传统的AsciiDoc引用块的例子,包含三个部分(引用文本、归属和来源):
[quote, "托马斯·杰斐逊", "托马斯·杰斐逊文集:第11卷"]
____
我认为,偶尔的小叛乱是一件好事,这在政治世界中就像风暴在自然界中一样必要。
____
这里有三个新的选择。
引用段落引文区块
你可以通过以下方式将单个段落变成引用块:
-
将它用双引号包围起来 b. 在引用文本下方添加一个可选的署名(前缀为两个破折号)。
我认为,偶尔的小反抗是一件好事,它在政治世界中就像自然界中的风暴一样必要。
-- 托马斯·杰斐逊,托马斯·杰斐逊文集:第11卷
这是缩写引用语法的结果:
我认为,偶尔的小范围叛乱是一件好事,这在政治世界中就像自然界的风暴一样必要。
手指引号
Asciidoctor识别两个"`"之间的文本作为引用块。空气引号是自围栏代码块以来最好的东西。
[]
如果你不知道自己要去哪里,任何道路都能带你到达那里。
这种语法灵感来自于人们在引用某人时用手指做的手势,比如著名的http://knowyourmeme.com/memes/dr-evil-air-quotes[Dr. Evil]空中引号。
Markdown风格的引用区块
Asciidoctor 甚至支持 Markdown 风格的区块引用:
> 我认为偶尔的小反叛是一件好事,
> 和在政治世界中一样必要,就像在物理世界中的风暴。
> -- 托马斯·杰斐逊,《托马斯·杰斐逊文集:第11卷》
这种标记的渲染效果与上面的例子相同。
就像Markdown一样,Asciidoctor支持在块引用中嵌入块内容,包括嵌套的块引用:
> > 有什么新鲜事吗?
>
> 我的AsciiDoc里有了Markdown!
>
> > 比如说有什么?
>
> * 引用块
> * 标题
> * 围栏代码块
>
> > 还有更多吗?
>
> 有的。AsciiDoc和Markdown已经有很多共同的语法了。
这是这段对话的呈现方式:
有什么新鲜事吗?
我的AsciiDoc中有Markdown语法啦!
比如说呢?
引用块
标题
代码块围栏
还有更多吗?
有的。AsciiDoc和Markdown已经有很多共同的语法了。只管试试看。
在Asciidoctor文档中了解更多信息:blocks
目标窗口和链接的角色属性
你经常需要在链接元素(<a>
)上设置target属性,以便链接在新窗口中打开(例如,<a href="..." target="_blank">
)。
这种类型的配置通常使用属性来指定。但是,默认情况下AsciiDoc不解析链接宏中的属性。在Asciidoctor中,您现在可以通过在头部设置+linkattrs+文档属性来启用对链接宏属性的解析。
您可以使用 +window+ 属性来指定目标窗口的名称:
http://google.com[Google, window="_blank"]
既然 _blank
是最常见的窗口名称,我们引入了一个简写方式。
只需在链接文本末尾加上一个插入符号(^
):
http://google.com[Google^]
注意:如果你在一个段落中多次使用尖角符号语法,你可能需要用反斜杠转义第一次出现的地方。 如果链接文本包含逗号,那么你需要用双引号将链接文本包围起来。
由于Asciidoctor正在解析属性,这为在链接中添加角色(也就是CSS类)打开了大门:
http://google.com[Google^, role="external"]
尽情设计你的链接样式吧!
Font awesome图标、花哨章节锚点和其他样式选项
你不再需要到处携带图标了!Asciidoctor 0.1.3引入了基于字体的警告图标和基于CSS的标注图标。
警告图标由 Font Awesome 提供支持
图标可以让你的文档看起来很精致,但管理起来却很麻烦。就是,到现在为止!Asciidoctor可以使用[Font Awesome^](http://fortawesome.github.io/Font-Awesome)和CSS“绘制”图标。
要使用这个功能,只需将+icons+文档属性的值设置为+font+。然后Asciidoctor会发出HTML标记,从Font Awesome字体中为每个警告块选择一个适当的字体字符。
这是一个例子,从AsciiDoc源码开始:
:icons: font
NOTE: Asciidoctor 现在支持基于字体的警示图标,由 Font Awesome 提供支持!
它生成的HTML是:
<div class="admonitionblock note"> <table> <tr> <td class="icon"> <i class="icon-note" title="Note"></i> </td> <td class="content"> Asciidoctor now supports font-based admonition icons, powered by Font Awesome! </td> </tr> </table> </div>
这里是它的渲染预览:
Asciidoctor now supports font-based admonition icons, powered by Font Awesome! |
Asciidoctor会在文档头部添加一个引用,该引用通过CDN提供的Font Awesome样式表。 然后样式表从同一服务器导入字体。
<link rel="stylesheet"
href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.1.0/css/font-awesome.min.css">
重要提示:默认样式表(或由Asciidoctor样式表工厂生成的任何样式表)是使用此功能所必需的。
在Asciidoctor文档中学习更多信息:警告块 | Asciidoctor样式表
基于CSS的提示图标
字体图标设置也启用了使用CSS绘制的标注图标。
:icons: font (1)
NOTE: Asciidoctor 现在支持基于字体的警示图标,由 Font Awesome 提供支持! (2)
1 | 在HTML5后端激活基于字体的图标 |
2 | 使用基于字体图标的警告区块 |
把那个图标目录踢到一边去。 你现在自由了!
将章节标题设置为链接并用浮动图标进行样式设计
有两个文档属性可用于控制部分链接:
当在文档上启用这个属性时,在章节标题之前会添加一个锚点(空链接)。默认的Asciidoctor样式表将锚点渲染为一个章节符号(§),它浮动在章节标题的左侧。
启用此属性后,文档中的章节标题将变成链接。Asciidoctor默认样式表将链接的章节标题显示为与普通章节标题相同的颜色。
注意:章节标题锚点依赖于默认的Asciidoctor样式表来正确渲染。
在Asciidoctor文档中了解更多:节标题
清洁的引用块和诗句
如果引用或诗歌块没有归属标记,在HTML5输出中不再显示空的归属div。这将纠正由空div导致的任何输出样式不一致性。
AsciiDoc引用块语法,不带出处。
[quote] ____ 智慧语录。 ____
<div class="quoteblock"> <blockquote> <div class="paragraph"> <p>Words of wisdom.</p> </div> </blockquote>
<div class="attribution"> </div>
</div>
------
[source, html]
.使用Asciidoctor 0.1.3生成HTML输出
<div class="quoteblock"> <blockquote> <div class="paragraph"> <p>Words of wisdom.</p> </div> </blockquote> </div>
默认的样式表已经更新以配合调整。此外,诗歌块也进行了样式改造,因此它们应该与默认的外观和感觉保持一致。 样式表也更新了,加入了一些新样式,用于实验性用户输入宏。 == 宏观回归:明确读者应当按下的是什么 IMPORTANT: 你*必须*设置 +experimental+ 属性以启用这些宏。 === 键盘快捷键 Asciidoctor 现在能识别用来创建键盘快捷键的宏,其语法遵循 `kbd:[key(+key)*]`。 例如: [source, asciidoc]
[options="header", caption=""] .常见浏览器键盘快捷键 |
快捷键 |
功能 |
F11 |
切换全屏 |
Ctrl+T |
打开新标签页 |
Ctrl+Shift+N |
新的隐身窗口 |
Ctrl++ |
放大 |
渲染为: |=== [options="header", caption=""] .常见浏览器键盘快捷键 |快捷键 |功能 |kbd:[F11] |切换全屏 |kbd:[Ctrl+T] |打开新标签页 |kbd:[Ctrl+Shift+N] |新的隐身窗口 |kbd:[Ctrl + +] |放大 |=== 你不再需要努力解释给用户他们应该按哪些键的组合了。 === 菜单选择 尝试向某人解释如何选择菜单项可能很麻烦。通过新的+menu+宏,符号就可以完成这项工作。 例如: [source, asciidoc]
要保存文件,请选择菜单:文件[保存]。
选择菜单:查看[缩放 > 重置]以将缩放级别重置为默认设置。
上面例子中的指令显示为: ==== 要保存文件,请选择菜单:文件[保存]。 选择菜单:查看[缩放 > 重置],以将缩放级别重置为默认设置。 ==== === 用户界面按钮 将信息传达给读者他们需要按一个按钮也可能同样困难。他们无法分辨你是在说“好的”,还是应该寻找一个标有“OK”的按钮。这全都是关于正确理解语义。新的 +btn+ 宏来救援了! 例如: [source, asciidoc]
完成后请按下[确定]按钮。
在文件导航器中选择一个文件,然后点击“打开”按钮。
答案是:这是结果: ==== 完成后请按下按钮:[确定]。 在文件导航器中选择一个文件,并点击“打开”按钮。 ==== 我们希望建立这些宏之前先得到反馈。如果你有任何建议,我们希望收到你的意见! == 一个更好的程序员最好的朋友 AsciiDoc 是程序员最好的朋友,因为它使你的源代码与文档保持紧密联系,并简化了源代码的插入过程。现在,它甚至提供了更多选项,可以将源代码片段拉入你的文档中并对其进行高亮显示。 === 规范化包含源代码的块缩进 外部文件中的源代码片段通常会用前导块缩进进行填充。这种前导块缩进在其原始上下文中是相关的。然而,一旦进入到文档中,这种前导块缩进就不再需要了。 属性 +indent+ 允许去除开头的块缩进,并且在有逐字内容(列表、文字、源码、诗歌等)的块中,可以选择性地加入新的块缩进。 * 当 +indent+ 为0时,会剥离掉前置的块级缩进(制表符将被替换为4个空格)。 * 当+indent+大于0时,首先去除块引导的缩进(标签被替换成4个空格),然后一个块将按照等于这个值的列数进行缩进。 例如,这段AsciiDoc源码: [source, asciidoc] .... [source,ruby,indent=0]
def names @name.split ' ' end
.... 输出: [source, ruby] .... def names @name.split ' ' end .... 当包含内容时,你会需要这个功能。 [source, asciidoc] .... [source,ruby,indent=0]
include::lib/document.rb[lines=5..10]
.... 这个AsciiDoc源代码: [source, asciidoc] .... [indent=2]
def names @name.split ' ' end
.... 输出: [source, ruby]
def names @name.split ' ' end
IMPORTANT: 源代码行之间的相对缩进*不受影响*。 === 包含相对于一个公共源目录的文件 Asciidoctor现在可以展开include宏中目标的属性。这意味着当链接到一个源文件时,你只需要输入路径的唯一部分。 例子: [source, asciidoc] .... :sourcedir: src/main/java [source,java]
include::{sourcedir}/org/asciidoctor/Asciidoctor.java[]
.... include 宏的目标解析为: src/main/java/org/asciidoctor/Asciidoctor.java 在Asciidoctor文档中学习更多内容:{list-block-ref}[include 宏和块] === 新的源码高亮工具:google-code-prettify 源代码片段现在可以通过 {prettify-ref}[google-code-prettify library] 进行高亮显示。 要使用prettify,需要在文档头部设置+source-highlighter+属性来启用它(或者作为参数传递)。 [source, asciidoc]
Asciidoctor 将会链接到 prettify JavaScript 库和样式表,并输出 HTML 代码,以便 prettify 所需的源代码高亮显示。 考虑这个源代码块: [source, asciidoc] .... [source,java]
public class Person { private String name;
public String getName() { return name; } }
.... Asciidoctor 生成以下 HTML: [source, html]
<div class="listingblock"> <div class="content monospaced"> <pre class="prettyprint java language-java"><code>public class Person { private String name;
public String getName() { return name; } }</code></pre> </div> </div>
关键的添加是在`<pre>`标签上加上`+prettyprint+`类。 在Asciidoctor文档中了解更多信息:{highlight-ref}[启用源代码高亮显示器] == 文件内容更深入,更宏观的视角以及小型内容 === 新增了五级标题 Asciidoctor 0.1.3 包括了第5级节标题的语法。 [source, asciidoc]
五级章节标题
五级标题在html5后端对应于`<h6>`标签。 === HTML后端中的部分标题 在之前,部分标题(在书籍文档类型中的0级节)与其他的+<h1>+标签无法区分。在0.1.3版本中,这些+<h1>+标签被赋予了+sect0+类名,以与分配给其他节级别的类名保持一致。这项新增简化了为部分标题添加自定义样式的工作。 === 目录布局和样式选项 Asciidoctor 0.1.3包括了众多目录(TOC)风格的更改和选项。 ==== 更多目录位置选项 AsciiDoc +toc2+ 布局现在已包含在Asciidoctor默认样式表中作为 +toc2+ 类。要使用另一种目录,请在头部指定文档属性 +toc2+。 目录也可以直接插入到文档序言的下方。要将目录放在序言下方,将新值+preamble+分配给+toc-placement+属性。 TOC宏需要设置+toc+属性。若要禁用内置的TOC,请取消分配+toc-placement+属性(+toc-placement!+)。 ==== 更新了0级标题样式 零级节标题(仅适用于书籍文档类型)现在在目录(在HTML后端)中拥有自己的级别。每个大纲级别(即,`<ol>`元素)都添加了一个与其所包含的章节级别相对应的CSS类(例如,`sect1level`)。这些CSS类的添加使得样式化目录变得更加容易。 在默认样式表中,对目录(TOC)进行了以下样式更改: * 一级标题和二级标题在垂直方向上对齐。 * 在0级和1级标题之间增加了额外的间距,以使0级标题更加醒目。 * 0级标题(即部分标题)以斜体文本显示 还添加了`type="none"`属性到`<ol>`元素中,为的是向浏览器提供一个提示,即不在每个项目前添加数字。这一更改满足了目录(TOC)应该"无需样式表即可正常工作"的要求。 === 引入+inline+文档类型,用于输入文本的内联格式化。 在某些情况下,你可能只希望对输入文本应用内联AsciiDoc格式,而不需要将其包装在块元素中。例如,在{asciidoclet-ref}[Asciidoclet项目]中(Javadoc中的AsciiDoc),Javadoc标签中的文本只需要内联格式。 内联文档类型的规则如下: * 从AsciiDoc源文档中只读取了一个单独的段落。 * 内联格式已应用 * 输出没有包裹在正常的段落标签中 考虑到以下输入: [source, asciidoc] http://asciidoc.org[AsciiDoc] is a _lightweight_ markup language... 使用选项+doctype=inline+和+backend=html5+进行处理会产生: [source, html] <a href="http://asciidoc.org">AsciiDoc</a> 是一个 <em>轻量级</em> 标记语言… Asciidoctor 处理器现在能够涵盖从非结构化(内联)文本到完整独立文档的全部输出范围! == 在你的AsciiDoc中使用Markdown? 那是对的!Asciidoctor 支持 Markdown 语法中的三个关键元素(在 AsciiDoc 和 Markdown 尚未重叠的地方)。 * 标题 * 引用模块 * 围栏代码块 除了用于定义单行节标题的等号标记(+=+),Asciidoctor还识别Markdown中的井号符号(+#+)。这意味着Markdown文档的大纲在作为AsciiDoc文档时也能很好地渲染。 [source, markdown]
Document Title
第一节
内容
Markdown风格的块引用先前在<<alternate-blockquote-syntax>>中描述过。 Markdown风格的标题和引用块与支持围栏代码块(来自GitHub风格的Markdown)的功能一起加入,这是在之前的版本中添加的。 [source, markdown]
ruby require asciidoctor
puts Asciidoctor.render("AsciiDoc is a lightweight markup language…")
我们希望这些附加功能有助于减轻和鼓励从Markdown过渡到AsciiDoc的迁移负担。为了缓解因AsciiDoc产生的碎片化担忧,我们在项目中维护了一个{compat-ref}[AsciiDoc配置文件],当使用AsciiDoc时,它能带来这些相同的增强功能。 == 重要的错误修复 === Windows路径错误已修复 Asciidoctor 0.1.3能够正确地检测Windows环境,并将所有的反斜杠转换为正斜杠。这消除了Windows中文件路径解析错误。解决了问题{issue-ref}/330[330]。 === 在Ruby 1.9及以上版本中修复了文件编码错误。 当系统默认编码不是UTF-8时,Asciidoctor没有正确设置从文件读取的数据的编码。为了解决这个问题,在Ruby 1.9及以上版本中,任何输入Asciidoctor 0.1.3的数据都被强制编码为UTF-8。解决了问题{issue-ref}/308[308]。 === 附加的错误修复 * Asciidoctor CLI不再将属性键/值对在第一个等号上分割。解决了问题{issue-ref}/291[291]。 * 如果同时设置了 +to_file+ 和 +base_dir+,Asciidoctor 不再崩溃。 解决了问题 {issue-ref}/335[335]。 * 如果使用文档属性定义了作者,DocBook 渲染器可以工作。解决了问题{issue-ref}/301[301]。 == 合规性修复 === 文档标题的属性 '''The +doctitle+ attribute can be used anywhere in a document. It's value is identical to the value returned by +Document#doctitle+.''' 可以把它翻译成中文如下: '''可以在文档中的任何地方使用 +doctitle+ 属性。它的值与 +Document#doctitle+ 返回的值相同。''' [source, asciidoc] .AsciiDoc +doctitle+ 语法
文件标题
文档的标题是 Asciidoctor 0.1.3 发布了!。
.文档标题 输出结果 .... 文档的标题是“文档标题”。 .... === 为DocBook 4.5后端添加了标签列表的水平布局 例子: [source, asciidoc]
first term |
定义 更多细节 |
第二学期:定义
渲染: [source, xml]
<informaltable tabstyle="horizontal" frame="none" colsep="0" rowsep="0"> <tgroup cols="2"> <colspec colwidth="15*"/> <colspec colwidth="85*"/> <tbody valign="top"> <row> <entry> <simpara>first term</simpara> </entry> <entry> <simpara>definition</simpara> <simpara>more detail</simpara> </entry> </row> <row> <entry> <simpara>second term</simpara> </entry> <entry> <simpara>definition</simpara> </entry> </row> </tbody> </tgroup> </informaltable>
=== 连续的术语在标记列表中共享相同的 +varlistentry+ 在标记列表中的连续条目在+docbook+后端共享相同的+varlistentry+。 例子: [source, asciidoc]
- 术语
- 替代术语
-
定义
输出: [source, xml]
<variablelist> <varlistentry> <term> term </term> <term> alt term </term> <listitem> <simpara> definition </simpara> </listitem> </varlistentry> </variablelist>
=== 特殊部分和样式 "+partintro+" 和 "+abstract+" 这两种样式可以用于开放块,并且渲染器可以正确处理。 现在,分配了+glossary+(术语表)和+appendix+(附录)样式的节在Asciidoctor中可以正确处理。 === 内联分配文档变量 可以使用以下语法分配文档变量: {set:<attrname>[!][:<value>]} 例如: [source, asciidoc] {set:sourcedir:src/main/java} 它实际上和以下相同: :sourcedir: src/main/java 这对于能够在通常不处理属性条目行的地方分配文档属性很重要,例如在一个表格单元格中。 这可能被用于的一个例子记录在{doc-variable-ref}[如何设置表格单元格的背景颜色]小提示中。 === 不允许在文档标题上方使用块标题。 之前,一个位于0级标题上方的块标题行被处理并传递给了第一个内容块。AsciiDoc将块标题视为内容的第一行,并因此不创建头部。Asciidoctor的行为现在与AsciiDoc一致。 例子: [source, asciidoc]
错误放置的块标题 = 文件标题 作者姓名
=== irc: 方案被渲染为链接 以下输入现在呈现为链接。 [source, asciidoc] irc://irc.freenode.org/#asciidoctor == 命令行界面和应用程序编程接口更新 === 使用Asciidoctor命令行界面指定任何后端 以前,Asciidoctor CLI只允许用户指定+html5+或+docbook45+以外的后端。现在,任何非空的值都可以被指定为后端。当你想要使用一个{backend-git-ref}[自定义后端],比如deck.js或者dzslides时,这是至关重要的。 === 在Asciidoctor API中使用字符串、符号或整数设置安全模式。 安全级别选项现在接受一个符号、字符串或整数值来查找安全级别。 [source, ruby] result = Asciidoctor.render_file('master.ad', :safe => 'server') 现在可以写成: [source, ruby] result = Asciidoctor.render_file('master.ad', :safe => :server) === 在Asciidoctor API中使用字符串或符号来设置后端 后端选项现在接受一个符号或字符串值。 [source, ruby] result = Asciidoctor.render_file('master.ad', :backend => 'docbook') 现在可以写成: [source, ruby] result = Asciidoctor.render_file('master.ad', :backend => :docbook) === 将属性作为字符串或数组传递给Asciidoctor API 以前,属性以哈希表的形式传递给Asciidoctor API方法。有时,这使得参数列表显得很臃肿。现在这些方法接受以字符串或数组形式的属性。 例如,考虑一个用户想要传递启用目录(+toc+)和自动编号(+numbered+)的属性。以前,这需要: [source, ruby] result = Asciidoctor.render_file('master.ad', :attributes => {'toc' => '', 'numbered' => ''}) 由于这两个属性都是简单的标记,调用可以简化为: [source, ruby] result = Asciidoctor.render_file('master.ad', :attributes => ['toc', 'numbered']) 它可以通过在Ruby中使用字符串到数组的简写方式来进一步简化: [source, ruby] result = Asciidoctor.render_file('master.ad', :attributes => %w(toc numbered)) 这引导我们进入了指定为字符串的属性: [source, ruby] result = Asciidoctor.render_file('master.ad', :attributes => 'toc numbered') 这是对原始呼叫的相当大的改进。 如果属性需要一个值,例如+source-highlighter+,你只需使用key=value的形式: [source, ruby] result = Asciidoctor.render_file('master.ad', :attributes => 'toc numbered source-highlighter=coderay') 这个API调用与这个命令行调用相对应: asciidoctor -a toc -a numbered -a source-highlighter=coderay master.adoc 这种增强功能在整合中特别有用,比如 {gradle-git-ref}[Gradle 插件]。 '''Learn more in the Asciidoctor Docs: {ruby-api-ref}[Asciidoctor Ruby API] | {java-api-ref}[Asciidoctor Java API]''' 那就结束了! == 谢谢! 正如我们所希望的,Asciidoctor 0.1.2 的下载量突破了下一个1万的增量。RubyGems.org 在本次发布之前报告了超过20,000次的Asciidoctor gem下载量,Maven Central的Java集成下载量超过了100次。我们期待着用0.1.3达到新的里程碑。 Asciidoctor 项目的参与度持续以惊人的速度增长。在这个开发周期中,我们欢迎了几个新项目的加入,包括由 John Ericksen 开发的一个用于用 AsciiDoc 写 Javadoc 的 Javadoclet —— {asciidoclet-ref}[Asciidoclet],以及几个 AsciiDoc 编辑器的计划。我们非常感谢每一位参与者,特别是那些做出贡献和传播信息的人们 :) 我们特别感谢以下人员对这次发布的贡献和反馈: - {gh-ref}/bleathem[Brian Leathem] (增强功能、补丁和QA) - {gh-ref}/lightguard[Jason Porter] (CLI improvements) - {gh-ref}/graphitefriction[Sarah White] (文档、用户体验和质量保证) - {gh-ref}/lordofthejars[Alex Soto] (Java integration improvements) - {gh-ref}/johncarl81[John Ericksen] (Asciidoclet) - {gh-ref}/aalmiray[Andres Almiray] (Doctorpad 编辑器) - {gh-ref}/glaforge[Guillaume Laforge](Doctorpad 编辑器) - {gh-ref}/pilhuhn[Heiko Rupp](Bug报告和建议) - {gh-ref}/eddelplus[乔亨·艾德尔布特尔](错误报告和Windows测试) - {gh-ref}/davidfavor[David Favor] (Bug reports) - {gh-ref}/snowolfe[Bruce Wolfe] (错误报告) - {gh-ref}/ge0ffrey[Geoffrey De Smet] (功能请求) - {gh-ref}/dobermai[Obermaier Dominik] (功能请求) - {gh-ref}/lincolnthree[林肯·巴克斯特三世] (功能请求) 特别感谢Brian Leathem在发布前一晚发现了一个关键性的回归问题。 补充感谢每一个使用这个项目并为之做出贡献的人。大家共同努力,我们让编写文档变得有趣、容易并且有益! == 下一步是什么? 这个版本仅仅是发布列车的开始。期待Java集成、Maven插件、Gradle插件以及最新添加的编辑器等的发布。