asciidoctor 2.0.13 → 2.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.adoc +151 -30
  3. data/LICENSE +1 -1
  4. data/README-de.adoc +9 -12
  5. data/README-fr.adoc +9 -12
  6. data/README-jp.adoc +10 -13
  7. data/README-zh_CN.adoc +9 -12
  8. data/README.adoc +40 -19
  9. data/asciidoctor.gemspec +2 -9
  10. data/data/locale/attributes-fr.adoc +2 -2
  11. data/data/locale/attributes-th.adoc +23 -0
  12. data/data/locale/attributes-vi.adoc +23 -0
  13. data/data/stylesheets/asciidoctor-default.css +54 -53
  14. data/data/stylesheets/coderay-asciidoctor.css +9 -9
  15. data/lib/asciidoctor/abstract_block.rb +11 -9
  16. data/lib/asciidoctor/abstract_node.rb +9 -8
  17. data/lib/asciidoctor/attribute_list.rb +1 -1
  18. data/lib/asciidoctor/block.rb +6 -6
  19. data/lib/asciidoctor/cli/invoker.rb +1 -2
  20. data/lib/asciidoctor/cli/options.rb +25 -25
  21. data/lib/asciidoctor/convert.rb +1 -0
  22. data/lib/asciidoctor/converter/docbook5.rb +45 -26
  23. data/lib/asciidoctor/converter/html5.rb +130 -102
  24. data/lib/asciidoctor/converter/manpage.rb +69 -64
  25. data/lib/asciidoctor/converter/template.rb +12 -13
  26. data/lib/asciidoctor/converter.rb +6 -4
  27. data/lib/asciidoctor/core_ext/hash/merge.rb +1 -1
  28. data/lib/asciidoctor/document.rb +61 -57
  29. data/lib/asciidoctor/extensions.rb +20 -12
  30. data/lib/asciidoctor/list.rb +2 -6
  31. data/lib/asciidoctor/load.rb +11 -9
  32. data/lib/asciidoctor/logging.rb +10 -8
  33. data/lib/asciidoctor/parser.rb +177 -193
  34. data/lib/asciidoctor/path_resolver.rb +3 -3
  35. data/lib/asciidoctor/reader.rb +73 -72
  36. data/lib/asciidoctor/rx.rb +5 -4
  37. data/lib/asciidoctor/section.rb +7 -0
  38. data/lib/asciidoctor/substitutors.rb +121 -121
  39. data/lib/asciidoctor/syntax_highlighter/coderay.rb +2 -1
  40. data/lib/asciidoctor/syntax_highlighter/highlightjs.rb +1 -1
  41. data/lib/asciidoctor/syntax_highlighter/pygments.rb +16 -7
  42. data/lib/asciidoctor/syntax_highlighter/rouge.rb +2 -1
  43. data/lib/asciidoctor/syntax_highlighter.rb +8 -11
  44. data/lib/asciidoctor/table.rb +18 -20
  45. data/lib/asciidoctor/timings.rb +3 -3
  46. data/lib/asciidoctor/version.rb +1 -1
  47. data/lib/asciidoctor.rb +10 -10
  48. data/man/asciidoctor.1 +26 -28
  49. data/man/asciidoctor.adoc +33 -27
  50. metadata +8 -62
data/README-zh_CN.adoc CHANGED
@@ -1,6 +1,6 @@
1
1
  = Asciidoctor
2
- Dan Allen <https://github.com/mojavelinux[@mojavelinux]>; Sarah White <https://github.com/graphitefriction[@graphitefriction]>; Ryan Waldron <https://github.com/erebor[@erebor]>
3
- v2.0.13, 2021-04-10
2
+ Dan Allen <https://github.com/mojavelinux[@mojavelinux]>; Sarah White <https://github.com/graphitefriction[@graphitefriction]>
3
+ v2.0.17, 2022-01-05
4
4
  // settings:
5
5
  :page-layout: base
6
6
  :idprefix:
@@ -10,7 +10,6 @@ v2.0.13, 2021-04-10
10
10
  ifndef::env-github[:icons: font]
11
11
  ifdef::env-github[]
12
12
  :status:
13
- :outfilesuffix: .adoc
14
13
  :caution-caption: :fire:
15
14
  :important-caption: :exclamation:
16
15
  :note-caption: :paperclip:
@@ -18,7 +17,7 @@ ifdef::env-github[]
18
17
  :warning-caption: :warning:
19
18
  endif::[]
20
19
  // Variables:
21
- :release-version: 2.0.13
20
+ :release-version: 2.0.17
22
21
  // URIs:
23
22
  :uri-org: https://github.com/asciidoctor
24
23
  :uri-repo: {uri-org}/asciidoctor
@@ -34,8 +33,8 @@ ifdef::env-site[:uri-project: link:]
34
33
  :uri-rel-file-base: link:
35
34
  :uri-rel-tree-base: link:
36
35
  ifdef::env-site[]
37
- :uri-rel-file-base: {uri-repo}/blob/master/
38
- :uri-rel-tree-base: {uri-repo}/tree/master/
36
+ :uri-rel-file-base: {uri-repo}/blob/HEAD/
37
+ :uri-rel-tree-base: {uri-repo}/tree/HEAD/
39
38
  endif::[]
40
39
  :uri-changelog: {uri-rel-file-base}CHANGELOG.adoc
41
40
  :uri-contribute: {uri-rel-file-base}CONTRIBUTING.adoc
@@ -52,13 +51,12 @@ endif::[]
52
51
  :uri-render-doc: {uri-docs}/render-documents
53
52
  :uri-themes-doc: {uri-docs}/produce-custom-themes-using-asciidoctor-stylesheet-factory
54
53
  :uri-gitscm-repo: https://github.com/git/git-scm.com
55
- :uri-prototype: {uri-gitscm-repo}/commits/master/lib/asciidoc.rb
56
54
  :uri-freesoftware: https://www.gnu.org/philosophy/free-sw.html
57
55
  :uri-foundation: https://foundation.zurb.com
58
56
  :uri-tilt: https://github.com/rtomayko/tilt
59
57
  :uri-ruby: https://ruby-lang.org
60
58
  // images:
61
- :image-uri-screenshot: https://raw.githubusercontent.com/asciidoctor/asciidoctor/master/screenshot.png
59
+ :image-uri-screenshot: https://cdn.jsdelivr.net/gh/asciidoctor/asciidoctor/screenshot.png
62
60
 
63
61
  {uri-project}/[Asciidoctor] 是一个 _快速_ 文本处理器和发布工具链,它可以将 {uri-what-is-asciidoc}[AsciiDoc] 文档转化成 HTML 5、 DocBook 5 以及其他格式。
64
62
  Asciidoctor 由 Ruby 编写,打包成 RubyGem,然后发布到 {uri-rubygem}[RubyGems.org] 上。
@@ -82,8 +80,7 @@ ifdef::status[]
82
80
  image:https://img.shields.io/gem/v/asciidoctor.svg[Latest Release, link={uri-gem}]
83
81
  image:https://img.shields.io/badge/rubydoc.info-{release-version}-blue.svg[library (API) docs,link=https://www.rubydoc.info/gems/asciidoctor/{release-version}]
84
82
  image:https://github.com/asciidoctor/asciidoctor/workflows/CI/badge.svg[Build Status (GitHub Actions),link={uri-repo}/actions]
85
- image:https://inch-ci.org/github/asciidoctor/asciidoctor.svg?branch=master[Inline docs,link=https://inch-ci.org/github/asciidoctor/asciidoctor]
86
- image:https://img.shields.io/badge/zulip-join_chat-brightgreen.svg[project chat,link=https://asciidoctor.zulipchat.com/]
83
+ image:https://img.shields.io/badge/zulip-join_chat-brightgreen.svg[Project Chat,link={uri-chat}]
87
84
  endif::[]
88
85
 
89
86
  .Ruby 所至, Asciidoctor 相随
@@ -411,7 +408,7 @@ Asciidoctor 组织在 GitHub 托管代码、议案跟踪和相关子项目。
411
408
  [#copyright-and-licensing]
412
409
  == 版权和协议
413
410
 
414
- Copyright (C) 2012-2021 Dan Allen, Sarah White, Ryan Waldron, and the individual contributors to Asciidoctor.
411
+ Copyright (C) 2012-present Dan Allen, Sarah White, Ryan Waldron, and the individual contributors to Asciidoctor.
415
412
  这个软件的免费使用是在MIT许可条款授予的。
416
413
 
417
414
  请看 {uri-license}[版权声明] 文件来获取更多详细信息。
@@ -420,7 +417,7 @@ Copyright (C) 2012-2021 Dan Allen, Sarah White, Ryan Waldron, and the individual
420
417
  == 作者
421
418
 
422
419
  *Asciidoctor* 由 https://github.com/mojavelinux[Dan Allen] 和 https://github.com/graphitefriction[Sarah White] 领导,并从 Asciidoctor 社区的 {uri-contributors}[很多其他独立开发者] 上收到了很多贡献。
423
- 项目最初由 https://github.com/erebor[Ryan Waldron] 于 2012年基于 https://github.com/nickh[Nick Hengeveld] 的 {uri-prototype}[原型] 创建。
420
+ 项目最初由 https://github.com/erebor[Ryan Waldron] 于 2012年基于 https://github.com/nickh[Nick Hengeveld] 的原型创建。
424
421
 
425
422
  *AsciiDoc* 由 Stuart Rackham 启动,并从 AsciiDoc 社区的其他独立开发者上收到很多贡献。
426
423
 
data/README.adoc CHANGED
@@ -1,6 +1,6 @@
1
1
  = Asciidoctor
2
- Dan Allen <https://github.com/mojavelinux[@mojavelinux]>; Sarah White <https://github.com/graphitefriction[@graphitefriction]>; Ryan Waldron <https://github.com/erebor[@erebor]>
3
- v2.0.13, 2021-04-10
2
+ Dan Allen <https://github.com/mojavelinux[@mojavelinux]>; Sarah White <https://github.com/graphitefriction[@graphitefriction]>
3
+ v2.0.17, 2022-01-05
4
4
  // settings:
5
5
  :idprefix:
6
6
  :idseparator: -
@@ -9,7 +9,6 @@ v2.0.13, 2021-04-10
9
9
  ifndef::env-github[:icons: font]
10
10
  ifdef::env-github[]
11
11
  :status:
12
- :outfilesuffix: .adoc
13
12
  :caution-caption: :fire:
14
13
  :important-caption: :exclamation:
15
14
  :note-caption: :paperclip:
@@ -17,7 +16,7 @@ ifdef::env-github[]
17
16
  :warning-caption: :warning:
18
17
  endif::[]
19
18
  // Variables:
20
- :release-version: 2.0.13
19
+ :release-version: 2.0.17
21
20
  // URLs:
22
21
  :url-org: https://github.com/asciidoctor
23
22
  :url-repo: {url-org}/asciidoctor
@@ -36,8 +35,8 @@ ifdef::env-site[:url-project: link:]
36
35
  :url-rel-file-base: link:
37
36
  :url-rel-tree-base: link:
38
37
  ifdef::env-site,env-yard[]
39
- :url-rel-file-base: {url-repo}/blob/master/
40
- :url-rel-tree-base: {url-repo}/tree/master/
38
+ :url-rel-file-base: {url-repo}/blob/HEAD/
39
+ :url-rel-tree-base: {url-repo}/tree/HEAD/
41
40
  endif::[]
42
41
  :url-changelog: {url-rel-file-base}CHANGELOG.adoc
43
42
  :url-contribute: {url-rel-file-base}CONTRIBUTING.adoc
@@ -51,9 +50,8 @@ endif::[]
51
50
  :url-opal: https://opalrb.com
52
51
  :url-tilt: https://github.com/rtomayko/tilt
53
52
  :url-ruby: https://www.ruby-lang.org
54
- //:url-prototype: https://github.com/git/git-scm.com/commits/master/lib/asciidoc.rb This page doesn't exist anymore.
55
53
  // images:
56
- :image-url-screenshot: https://raw.githubusercontent.com/asciidoctor/asciidoctor/master/screenshot.png
54
+ :image-url-screenshot: https://cdn.jsdelivr.net/gh/asciidoctor/asciidoctor/screenshot.png
57
55
 
58
56
  {url-project}[Asciidoctor] is a fast, open source, Ruby-based text processor for parsing AsciiDoc(R) into a document model and converting it to output formats such as HTML 5, DocBook 5, manual pages, PDF, EPUB 3, and other formats.
59
57
 
@@ -83,9 +81,6 @@ ifdef::status[]
83
81
  image:https://img.shields.io/gem/v/asciidoctor.svg[Latest Release, link={url-rubygem}]
84
82
  image:https://img.shields.io/badge/rubydoc.info-{release-version}-blue.svg[library (API) docs,link=https://www.rubydoc.info/gems/asciidoctor/{release-version}]
85
83
  image:https://github.com/asciidoctor/asciidoctor/workflows/CI/badge.svg[Build Status (GitHub Actions),link={url-repo}/actions]
86
- //image:https://img.shields.io/coveralls/asciidoctor/asciidoctor/master.svg[Code Coverage,link=https://coveralls.io/r/asciidoctor/asciidoctor]
87
- //image:https://codeclimate.com/github/asciidoctor/asciidoctor/badges/gpa.svg[Code Climate,link=https://codeclimate.com/github/asciidoctor/asciidoctor]
88
- //image:https://inch-ci.org/github/asciidoctor/asciidoctor.svg?branch=master[Docs Coverage,link=https://inch-ci.org/github/asciidoctor/asciidoctor]
89
84
  image:https://img.shields.io/badge/zulip-join_chat-brightgreen.svg[Project Chat (Zulip),link={url-chat}]
90
85
  endif::[]
91
86
 
@@ -155,7 +150,7 @@ Asciidoctor works best when you use UTF-8 everywhere.
155
150
 
156
151
  Asciidoctor is packaged and distributed to RubyGems.org as a RubyGem (aka gem) named {url-rubygem}[asciidoctor^].
157
152
  The asciidoctor gem can be installed on all major operating systems using Ruby packaging tools (gem or bundle).
158
- Asciidoctor is also distributed as a Docker image, as a package for numerous Linux distributions, and as a package for macOS (via Homebrew).
153
+ Asciidoctor is also distributed as a Docker image, as a package for numerous Linux distributions, and as a package for macOS (via Homebrew and MacPorts).
159
154
 
160
155
  === Linux package managers
161
156
 
@@ -197,17 +192,30 @@ To install the package, open a terminal and type:
197
192
 
198
193
  $ sudo dnf install -y asciidoctor
199
194
 
200
- === Homebrew (macOS)
195
+ === macOS
196
+
197
+ ==== Homebrew
201
198
 
202
- You can use Homebrew, the macOS package manager, to install Asciidoctor.
203
- If you dont have Homebrew on your computer, complete the installation instructions at https://brew.sh/[brew.sh] first.
204
- Once Homebrew is installed, you’re ready to install the `asciidoctor` gem.
199
+ You can use https://brew.sh[Homebrew], the macOS package manager, to install Asciidoctor.
200
+ If you don't have Homebrew on your computer, complete the https://brew.sh[installation instructions] first.
201
+
202
+ Once Homebrew is installed, you're ready to install the `asciidoctor` gem.
205
203
  Open a terminal and type:
206
204
 
207
205
  $ brew install asciidoctor
208
206
 
209
207
  Homebrew installs the `asciidoctor` gem into an exclusive prefix that's independent of system gems.
210
208
 
209
+ ==== MacPorts
210
+
211
+ You can also use https://www.macports.org[MacPorts], another package manager for macOS, to install Asciidoctor.
212
+ If you don't have MacPorts on your computer, complete the https://www.macports.org/install.php[installation instructions] first.
213
+
214
+ Once MacPorts is installed, you're ready to install the `asciidoctor` gem via the https://ports.macports.org/port/asciidoctor/[Asciidoctor port].
215
+ Open a terminal and type:
216
+
217
+ $ sudo port install asciidoctor
218
+
211
219
  === Windows
212
220
 
213
221
  To use Asciidoctor with Windows, you have two options.
@@ -297,6 +305,13 @@ To upgrade the gem, use:
297
305
  $ brew update
298
306
  $ brew upgrade asciidoctor
299
307
 
308
+ === MacPorts (macOS)
309
+
310
+ To upgrade the gem, use:
311
+
312
+ $ sudo port selfupdate
313
+ $ sudo port upgrade asciidoctor
314
+
300
315
  === gem install
301
316
 
302
317
  If you previously installed Asciidoctor using the `gem` command, you'll need to manually upgrade Asciidoctor when a new version is released.
@@ -321,7 +336,7 @@ You should see information about the Asciidoctor version and your Ruby environme
321
336
  [.output,subs=attributes+]
322
337
  ....
323
338
  Asciidoctor {release-version} [https://asciidoctor.org]
324
- Runtime Environment (ruby 2.6.0p0 [x86_64-linux]) (lc:UTF-8 fs:UTF-8 in:- ex:UTF-8)
339
+ Runtime Environment (ruby 3.0.1p64 [x86_64-linux]) (lc:UTF-8 fs:UTF-8 in:UTF-8 ex:UTF-8)
325
340
  ....
326
341
 
327
342
  === Command line interface (CLI)
@@ -452,10 +467,16 @@ Asciidoctor organization on GitHub:: {url-org}
452
467
 
453
468
  == Code of Conduct
454
469
 
455
- The core Asciidoctor project is governed by the https://github.com/asciidoctor/.github/blob/main/CODE-OF-CONDUCT.md[Code of Conduct] for the Asciidoctor community of projects.
470
+ The core Asciidoctor project is governed by the https://github.com/asciidoctor/.github/blob/HEAD/CODE-OF-CONDUCT.md[Code of Conduct] for the Asciidoctor community of projects.
456
471
  By participating, you're agreeing to honor this code.
457
472
  Let's work together to make this a welcoming, professional, inclusive, and safe environment for everyone.
458
473
 
474
+ == Versioning and Release Policy
475
+
476
+ This project adheres to semantic versioning (*major.minor.patch*).
477
+ Typically, patch releases are only made for the current minor release.
478
+ However, exceptions are made on a case-by-case basis to address security vulnerabilities and other high-priority issues.
479
+
459
480
  == Copyright and License
460
481
 
461
482
  Copyright (C) 2012-present Dan Allen, Sarah White, Ryan Waldron, and the individual contributors to Asciidoctor.
@@ -468,7 +489,7 @@ See the {url-license}[LICENSE] for the full license text.
468
489
  *Asciidoctor* is led by https://github.com/mojavelinux[Dan Allen] and https://github.com/graphitefriction[Sarah White] and has received contributions from {url-contributors}[many individuals] in Asciidoctor's awesome community.
469
490
  The project was initiated in 2012 by https://github.com/erebor[Ryan Waldron] based on a prototype written by https://github.com/nickh[Nick Hengeveld] for the Git website.
470
491
 
471
- *AsciiDoc.py* was started and maintained by Stuart Rackham from https://github.com/asciidoc-py/asciidoc-py2/blob/master/CHANGELOG.txt[2002 to 2013] and has received contributions from many individuals in the https://github.com/asciidoc-py/asciidoc-py2/graphs/contributors[AsciiDoc.py community].
492
+ *AsciiDoc.py* was started and maintained by Stuart Rackham from https://github.com/asciidoc-py/asciidoc-py2/blob/HEAD/CHANGELOG.txt[2002 to 2013] and has received contributions from many individuals in the https://github.com/asciidoc-py/asciidoc-py2/graphs/contributors[AsciiDoc.py community].
472
493
 
473
494
  == Trademarks
474
495
 
data/asciidoctor.gemspec CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  #s.required_ruby_version = '>= 2.3.0'
18
18
  s.metadata = {
19
19
  'bug_tracker_uri' => 'https://github.com/asciidoctor/asciidoctor/issues',
20
- 'changelog_uri' => 'https://github.com/asciidoctor/asciidoctor/blob/master/CHANGELOG.adoc',
20
+ 'changelog_uri' => 'https://github.com/asciidoctor/asciidoctor/blob/HEAD/CHANGELOG.adoc',
21
21
  'mailing_list_uri' => 'http://discuss.asciidoctor.org',
22
22
  'source_code_uri' => 'https://github.com/asciidoctor/asciidoctor'
23
23
  }
@@ -33,22 +33,15 @@ Gem::Specification.new do |s|
33
33
  s.require_paths = ['lib']
34
34
  #s.test_files = files.grep %r/^(?:features|test)\/.+$/
35
35
 
36
- # asciimath is needed for testing AsciiMath in DocBook backend
37
- s.add_development_dependency 'asciimath', '~> 2.0.0'
38
- # coderay is needed for testing syntax highlighting
39
- s.add_development_dependency 'coderay', '~> 1.1.0'
40
36
  # concurrent-ruby, haml, slim, and tilt are needed for testing custom templates
41
37
  s.add_development_dependency 'concurrent-ruby', '~> 1.1.0'
42
38
  s.add_development_dependency 'cucumber', '~> 3.1.0'
43
39
  # erubi is needed for testing alternate eRuby impls
44
40
  s.add_development_dependency 'erubi', '~> 1.10.0'
45
41
  s.add_development_dependency 'haml', '~> 5.2.0'
46
- s.add_development_dependency 'minitest', '~> 5.11.0'
42
+ s.add_development_dependency 'minitest', '~> 5.14.0'
47
43
  s.add_development_dependency 'nokogiri', '~> 1.10.0'
48
44
  s.add_development_dependency 'rake', '~> 12.3.0'
49
- # Asciidoctor supports Rouge >= 2
50
- s.add_development_dependency 'rouge', '~> 3.26.0'
51
- s.add_development_dependency 'rspec-expectations', '~> 3.8.0'
52
45
  s.add_development_dependency 'slim', '~> 4.1.0'
53
46
  s.add_development_dependency 'tilt', '~> 2.0.0'
54
47
  end
@@ -1,7 +1,7 @@
1
1
  // French translation, courtesy of Nicolas Comet <nicolas.comet@gmail.com> with updates from Maheva Bagard Laursen <mblaursen@gbif.org>
2
2
  :appendix-caption: Annexe
3
3
  :appendix-refsig: {appendix-caption}
4
- :caution-caption: Avertissement
4
+ :caution-caption: Attention
5
5
  :chapter-signifier: Chapitre
6
6
  :chapter-refsig: {chapter-signifier}
7
7
  :example-caption: Exemple
@@ -20,4 +20,4 @@ ifdef::preface-title[:preface-title: Préface]
20
20
  :toc-title: Table des matières
21
21
  :untitled-label: Sans titre
22
22
  :version-label: Version
23
- :warning-caption: Attention
23
+ :warning-caption: Avertissement
@@ -0,0 +1,23 @@
1
+ // Thai translation
2
+ :appendix-caption: อ้างอิง
3
+ :appendix-refsig: {appendix-caption}
4
+ :caution-caption: ระวัง
5
+ :chapter-signifier: บท
6
+ :chapter-refsig: {chapter-signifier}
7
+ :example-caption: ตัวอย่าง
8
+ :figure-caption: คำอธิบายลักษณะจำลอง
9
+ :important-caption: สำคัญ
10
+ :last-update-label: ตัวอัพเดตล่าสุด
11
+ ifdef::listing-caption[:listing-caption: รายการ]
12
+ ifdef::manname-title[:manname-title: ซื่อ]
13
+ :note-caption: บันทึก
14
+ :part-signifier: ส่วน
15
+ :part-refsig: {part-signifier}
16
+ ifdef::preface-title[:preface-title: คำนำ]
17
+ :section-refsig: รายการย่อย
18
+ :table-caption: ตาราง
19
+ :tip-caption: เคล็ดลับ
20
+ :toc-title: สารบัญ
21
+ :untitled-label: ยังไม่มีชื่อ
22
+ :version-label: เวอร์ชัน
23
+ :warning-caption: คำเตือน
@@ -0,0 +1,23 @@
1
+ // Vietnamese translation, courtesy of Hoa Nguyen <ntthoa.uphcm@gmail.com>
2
+ :appendix-caption: Phụ lục
3
+ :appendix-refsig: {appendix-caption}
4
+ :caution-caption: Cảnh báo
5
+ :chapter-signifier: Chương
6
+ :chapter-refsig: {chapter-signifier}
7
+ :example-caption: Ví dụ
8
+ :figure-caption: Hình
9
+ :important-caption: Quan trọng
10
+ :last-update-label: Cập nhật lần cuối
11
+ ifdef::listing-caption[:listing-caption: Danh sách]
12
+ ifdef::manname-title[:manname-title: Tên]
13
+ :note-caption: Ghi chú
14
+ :part-signifier: Phần
15
+ :part-refsig: {part-signifier}
16
+ ifdef::preface-title[:preface-title: Lời nói đầu]
17
+ :section-refsig: Mục
18
+ :table-caption: Bảng
19
+ :tip-caption: Lời khuyên
20
+ :toc-title: Mục lục
21
+ :untitled-label: Không có tiêu đề
22
+ :version-label: Phiên bản
23
+ :warning-caption: Chú ý
@@ -1,18 +1,16 @@
1
- /* Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
2
- /* Uncomment @import statement to use as custom stylesheet */
3
- /*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
4
- article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}
5
- audio,video{display:inline-block}
6
- audio:not([controls]){display:none;height:0}
7
- html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
1
+ /*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
2
+ /* Uncomment the following line when using as a custom stylesheet */
3
+ /* @import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; */
4
+ html{font-family:sans-serif;-webkit-text-size-adjust:100%}
8
5
  a{background:none}
9
6
  a:focus{outline:thin dotted}
10
7
  a:active,a:hover{outline:0}
11
8
  h1{font-size:2em;margin:.67em 0}
12
- abbr[title]{border-bottom:1px dotted}
13
9
  b,strong{font-weight:bold}
10
+ abbr{font-size:.9em}
11
+ abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none}
14
12
  dfn{font-style:italic}
15
- hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
13
+ hr{height:0}
16
14
  mark{background:#ff0;color:#000}
17
15
  code,kbd,pre,samp{font-family:monospace;font-size:1em}
18
16
  pre{white-space:pre-wrap}
@@ -24,20 +22,22 @@ sub{bottom:-.25em}
24
22
  img{border:0}
25
23
  svg:not(:root){overflow:hidden}
26
24
  figure{margin:0}
25
+ audio,video{display:inline-block}
26
+ audio:not([controls]){display:none;height:0}
27
27
  fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
28
28
  legend{border:0;padding:0}
29
29
  button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
30
30
  button,input{line-height:normal}
31
31
  button,select{text-transform:none}
32
- button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
32
+ button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
33
33
  button[disabled],html input[disabled]{cursor:default}
34
- input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
34
+ input[type=checkbox],input[type=radio]{padding:0}
35
35
  button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
36
36
  textarea{overflow:auto;vertical-align:top}
37
37
  table{border-collapse:collapse;border-spacing:0}
38
- *,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
38
+ *,::before,::after{box-sizing:border-box}
39
39
  html,body{font-size:100%}
40
- body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
40
+ body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;line-height:1;position:relative;cursor:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
41
41
  a:hover{cursor:pointer}
42
42
  img,object,embed{max-width:100%;height:auto}
43
43
  object,embed{height:100%}
@@ -57,7 +57,7 @@ div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,
57
57
  a{color:#2156a5;text-decoration:underline;line-height:inherit}
58
58
  a:hover,a:focus{color:#1d4b8f}
59
59
  a img{border:0}
60
- p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
60
+ p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
61
61
  p aside{font-size:.875em;line-height:1.35;font-style:italic}
62
62
  h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
63
63
  h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
@@ -66,14 +66,14 @@ h2{font-size:1.6875em}
66
66
  h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
67
67
  h4,h5{font-size:1.125em}
68
68
  h6{font-size:1em}
69
- hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
69
+ hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em}
70
70
  em,i{font-style:italic;line-height:inherit}
71
71
  strong,b{font-weight:bold;line-height:inherit}
72
72
  small{font-size:60%;line-height:inherit}
73
73
  code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
74
- ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
74
+ ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
75
75
  ul,ol{margin-left:1.5em}
76
- ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
76
+ ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0}
77
77
  ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
78
78
  ul.square{list-style-type:square}
79
79
  ul.circle{list-style-type:circle}
@@ -81,8 +81,6 @@ ul.disc{list-style-type:disc}
81
81
  ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
82
82
  dl dt{margin-bottom:.3125em;font-weight:bold}
83
83
  dl dd{margin-bottom:1.25em}
84
- abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
85
- abbr{text-transform:none}
86
84
  blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
87
85
  blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
88
86
  @media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
@@ -90,7 +88,7 @@ h1{font-size:2.75em}
90
88
  h2{font-size:2.3125em}
91
89
  h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
92
90
  h4{font-size:1.4375em}}
93
- table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede;word-wrap:normal}
91
+ table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal}
94
92
  table thead,table tfoot{background:#f7f8f7}
95
93
  table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
96
94
  table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
@@ -105,7 +103,7 @@ h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title str
105
103
  :not(pre).nobreak{word-wrap:normal}
106
104
  :not(pre).nowrap{white-space:nowrap}
107
105
  :not(pre).pre-wrap{white-space:pre-wrap}
108
- :not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
106
+ :not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
109
107
  pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
110
108
  pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
111
109
  pre>code{display:block}
@@ -113,7 +111,7 @@ pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
113
111
  em em{font-style:normal}
114
112
  strong strong{font-weight:400}
115
113
  .keyseq{color:rgba(51,51,51,.8)}
116
- kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
114
+ kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
117
115
  .keyseq kbd:first-child{margin-left:0}
118
116
  .keyseq kbd:last-child{margin-right:0}
119
117
  .menuseq,.menuref{color:#000}
@@ -125,7 +123,7 @@ b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
125
123
  b.button::before{content:"[";padding:0 3px 0 2px}
126
124
  b.button::after{content:"]";padding:0 2px 0 3px}
127
125
  p a>code:hover{color:rgba(0,0,0,.9)}
128
- #header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
126
+ #header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
129
127
  #header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
130
128
  #header::after,#content::after,#footnotes::after,#footer::after{clear:both}
131
129
  #content{margin-top:1.25em}
@@ -133,7 +131,7 @@ p a>code:hover{color:rgba(0,0,0,.9)}
133
131
  #header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
134
132
  #header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
135
133
  #header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
136
- #header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
134
+ #header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap}
137
135
  #header .details span:first-child{margin-left:-.125em}
138
136
  #header .details span.email a{color:rgba(0,0,0,.85)}
139
137
  #header .details br{display:none}
@@ -167,11 +165,11 @@ body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9
167
165
  #toc.toc2>ul{font-size:.95em}
168
166
  #toc.toc2 ul ul{padding-left:1.25em}
169
167
  body.toc2.toc-right{padding-left:0;padding-right:20em}}
170
- #content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
168
+ #content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px}
171
169
  #content #toc>:first-child{margin-top:0}
172
170
  #content #toc>:last-child{margin-bottom:0}
173
171
  #footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
174
- #footer-text{color:rgba(255,255,255,.8);line-height:1.44}
172
+ #footer-text{color:hsla(0,0%,100%,.8);line-height:1.44}
175
173
  #content{margin-bottom:.625em}
176
174
  .sect1{padding-bottom:.625em}
177
175
  @media screen and (min-width:768px){#content{margin-bottom:1.25em}
@@ -184,29 +182,33 @@ body.toc2.toc-right{padding-left:0;padding-right:20em}}
184
182
  #content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
185
183
  #content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
186
184
  details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
187
- details>summary:first-of-type{cursor:pointer;display:list-item;outline:none;margin-bottom:.75em}
185
+ details{margin-left:1.25rem}
186
+ details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent}
187
+ details>summary::-webkit-details-marker{display:none}
188
+ details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)}
189
+ details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)}
190
+ details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem}
188
191
  .admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
189
192
  table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
190
- .paragraph.lead>p,#preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
191
- table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:inherit}
193
+ .paragraph.lead>p,#preamble>.sectionbody>[class=paragraph]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
192
194
  .admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
193
195
  .admonitionblock>table td.icon{text-align:center;width:80px}
194
196
  .admonitionblock>table td.icon img{max-width:none}
195
197
  .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
196
198
  .admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
197
199
  .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
198
- .exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
200
+ .exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px}
199
201
  .exampleblock>.content>:first-child{margin-top:0}
200
202
  .exampleblock>.content>:last-child{margin-bottom:0}
201
- .sidebarblock{border-style:solid;border-width:1px;border-color:#dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;-webkit-border-radius:4px;border-radius:4px}
203
+ .sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px}
202
204
  .sidebarblock>:first-child{margin-top:0}
203
205
  .sidebarblock>:last-child{margin-bottom:0}
204
206
  .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
205
207
  .exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
206
- .literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
208
+ .literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
207
209
  @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
208
210
  @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
209
- .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
211
+ .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
210
212
  .literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
211
213
  .listingblock>.content{position:relative}
212
214
  .listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
@@ -214,7 +216,7 @@ table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font
214
216
  .listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
215
217
  .listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
216
218
  .listingblock pre.highlightjs{padding:0}
217
- .listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
219
+ .listingblock pre.highlightjs>code{padding:1em;border-radius:4px}
218
220
  .listingblock pre.prettyprint{border-width:0}
219
221
  .prettyprint{background:#f7f7f8}
220
222
  pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
@@ -224,9 +226,8 @@ pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
224
226
  table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
225
227
  table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
226
228
  table.linenotable td.code{padding-left:.75em}
227
- table.linenotable td.linenos{border-right:1px solid currentColor;opacity:.35;padding-right:.5em}
228
- pre.pygments .lineno{border-right:1px solid currentColor;opacity:.35;display:inline-block;margin-right:.75em}
229
- pre.pygments .lineno::before{content:"";margin-right:-.125em}
229
+ table.linenotable td.linenos,pre.pygments .linenos{border-right:1px solid;opacity:.35;padding-right:.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
230
+ pre.pygments span.linenos{display:inline-block;margin-right:.75em}
230
231
  .quoteblock{margin:0 1em 1.25em 1.5em;display:table}
231
232
  .quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
232
233
  .quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
@@ -235,7 +236,7 @@ pre.pygments .lineno::before{content:"";margin-right:-.125em}
235
236
  .quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
236
237
  .quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
237
238
  .verseblock{margin:0 1em 1.25em}
238
- .verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
239
+ .verseblock pre{font-family:"Open Sans","DejaVu Sans",sans-serif;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
239
240
  .verseblock pre strong{font-weight:400}
240
241
  .verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
241
242
  .quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
@@ -263,7 +264,7 @@ table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-c
263
264
  table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
264
265
  table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
265
266
  table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
266
- table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
267
+ table.stripes-all>*>tr,table.stripes-odd>*>tr:nth-of-type(odd),table.stripes-even>*>tr:nth-of-type(even),table.stripes-hover>*>tr:hover{background:#f8f8f7}
267
268
  th.halign-left,td.halign-left{text-align:left}
268
269
  th.halign-right,td.halign-right{text-align:right}
269
270
  th.halign-center,td.halign-center{text-align:center}
@@ -279,14 +280,15 @@ ol{margin-left:1.75em}
279
280
  ul li ol{margin-left:1.5em}
280
281
  dl dd{margin-left:1.125em}
281
282
  dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
282
- ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
283
+ li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
283
284
  ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
284
285
  ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
285
286
  ul.unstyled,ol.unstyled{margin-left:0}
286
- ul.checklist{margin-left:.625em}
287
- ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
288
- ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
289
- ul.inline{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
287
+ li>p:empty:only-child::before{content:"";display:inline-block}
288
+ ul.checklist>li>p:first-child{margin-left:-1em}
289
+ ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
290
+ ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em}
291
+ ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
290
292
  ul.inline>li{margin-left:1.25em}
291
293
  .unstyled dl dt{font-weight:400;font-style:normal}
292
294
  ol.arabic{list-style-type:decimal}
@@ -305,7 +307,7 @@ td.hdlist2{word-wrap:anywhere}
305
307
  .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
306
308
  .colist td:not([class]):first-child img{max-width:none}
307
309
  .colist td:not([class]):last-child{padding:.25em 0}
308
- .thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
310
+ .thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd}
309
311
  .imageblock.left{margin:.25em .625em 1.25em 0}
310
312
  .imageblock.right{margin:.25em 0 1.25em .625em}
311
313
  .imageblock>.title{margin-bottom:0}
@@ -325,8 +327,6 @@ sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
325
327
  #footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
326
328
  #footnotes .footnote:last-of-type{margin-bottom:0}
327
329
  #content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
328
- .gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
329
- .gist .file-data>table td.line-data{width:99%}
330
330
  div.unbreakable{page-break-inside:avoid}
331
331
  .big{font-size:larger}
332
332
  .small{font-size:smaller}
@@ -373,7 +373,7 @@ a span.icon>.fa{cursor:inherit}
373
373
  .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
374
374
  .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
375
375
  .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
376
- .conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:50%;border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
376
+ .conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
377
377
  .conum[data-value] *{color:#fff!important}
378
378
  .conum[data-value]+b{display:none}
379
379
  .conum[data-value]::after{content:attr(data-value)}
@@ -381,19 +381,20 @@ pre .conum[data-value]{position:relative;top:-.125em}
381
381
  b.conum *{color:inherit!important}
382
382
  .conum:not([data-value]):empty{display:none}
383
383
  dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
384
- h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
384
+ h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em}
385
385
  p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
386
- p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
386
+ p,blockquote,dt,td.content,span.alt,summary{font-size:1.0625rem}
387
387
  p{margin-bottom:1.25rem}
388
388
  .sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
389
- .exampleblock>.content{background:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
389
+ .exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc}
390
390
  .print-only{display:none!important}
391
391
  @page{margin:1.25cm .75cm}
392
- @media print{*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
392
+ @media print{*{box-shadow:none!important;text-shadow:none!important}
393
393
  html{font-size:80%}
394
394
  a{color:inherit!important;text-decoration:underline!important}
395
395
  a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
396
396
  a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
397
+ abbr[title]{border-bottom:1px dotted}
397
398
  abbr[title]::after{content:" (" attr(title) ")"}
398
399
  pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
399
400
  thead{display:table-header-group}
@@ -417,7 +418,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
417
418
  .print-only{display:block!important}
418
419
  .hide-for-print{display:none!important}
419
420
  .show-for-print{display:inherit!important}}
420
- @media print,amzn-kf8{#header>h1:first-child{margin-top:1.25rem}
421
+ @media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem}
421
422
  .sect1{padding:0!important}
422
423
  .sect1+.sect1{border:0}
423
424
  #footer{background:none}