Compare commits

..

3 commits

Author SHA1 Message Date
leafee98 673ea42546 edit: essays asciidoctor-syntax-test, add TODOs 2024-01-26 22:35:54 +08:00
leafee98 f9e13a1b76 use index.adoc to make the dir a single page 2024-01-23 21:19:31 +08:00
leafee98 ce42632c42 basic asciidoc support, with bad some style 2024-01-19 18:17:23 +08:00
14 changed files with 1287 additions and 71 deletions

View file

@ -81,3 +81,19 @@ url = "#"
parent = "Services"
name = "Service B"
url = "#"
[security.exec]
allow = [ "^asciidoctor$" ]
[markup]
[markup.asciidocExt]
backend = 'html5'
extensions = []
failureLevel = 'fatal'
noHeaderOrFooter = true
preserveTOC = false
safeMode = 'unsafe'
sectionNumbers = false
trace = false
verbose = true
workingFolderCurrent = true
[markup.asciidocExt.attributes]

View file

@ -0,0 +1,3 @@
Name,Date,Spent
Tom,2000-12-25,5.12
Jerry,2000-12-25,10.24
1 Name Date Spent
2 Tom 2000-12-25 5.12
3 Jerry 2000-12-25 10.24

View file

@ -0,0 +1,32 @@
=== About AsciiDoc
AsciiDoc is a lightweight and semantic markup language primarily designed
for writing technical documentation. The language can be used to produce a
variety of presentation-rich output formats, all from content encoded in a
concise, human-readable, plain text format.
The AsciiDoc syntax is intuitive because it builds on well-established,
plain text conventions for marking up and structuring text.
Someone unfamiliar with AsciiDoc can probably guess the purpose of
many of its syntax elements just by looking at them.
Thats because the elements of the syntax were carefully chosen to look
like what they mean (a practice long employed by the tech industry).
The AsciiDoc language isnt coupled to the output format it produces.
An AsciiDoc processor can parse and comprehend an AsciiDoc source document
and convert the parsed document structure into one or more output formats,
such as HTML, PDF, EPUB3, man(ual) page, or DocBook. The ability to produce
multiple output formats is one of the main advantages of AsciiDoc.
This capability enables it to be used in static site generators,
IDEs, git tools and services, CI/CD systems, and other software.
AsciiDoc bridges the gap between ease of writing and the rigorous
requirements of technical authoring and publishing. AsciiDoc only requires
a text editor to read or write, thereby offering a low bar to getting started.
[[section-b]]
=== Section B
// tag::section-b[]
This is section B from document-b.adoc
// end::section-b[]

View file

@ -0,0 +1 @@
This content is from external file.

View file

@ -0,0 +1,3 @@
#!/usr/bin/env bash
echo "Hello, world!"

View file

@ -0,0 +1,801 @@
---
title: "AsciiDoctor Syntax Test"
date: 2023-06-07T20:44:48+08:00
tags: []
categories: []
weight: 50
show_comments: true
katex: true
draft: false
---
= AsciiDoctor Syntax Test
:experimental:
// :source-highlighter: rouge
This article is a test for AsciiDoc syntax, and will try to use
as many AsciiDoc features as possible. Most content come from
https://docs.asciidoctor.org/asciidoc/latest/syntax-quick-reference/#more-delimited-blocks[
AsciiDoc Syntax Quick Reference].
Now let's go.
== WIP
Here we record TODOs.
* [ ] Lead paragraph not strong.
* [ ] Change highlight color to a fav-color.
* [ ] Underline not shown, syntax `+[.underline]#text#+`.
* [ ] Strikethrough not shown, syntax `+[.linethrough]#text#+`
* [ ] Description list, the term not strong.
* [ ] Image, video, audio, list's caption is too big.
* [ ] Inline image breaks line.
* [ ] Image role `+right+` not go right.
* [ ] Video overflowed.
* [ ] Video not centered.
* [ ] Keyboard no theme.
* [ ] Button no theme.
* [ ] Code callouts always selectable.
* [ ] Code highlight class is working, but without CSS ruler.
* [ ] Code included from other file (code under pre) has too much padding
* [ ] Admonitions too big.
* [ ] Sidebar should be standout.
* [ ] Blockquotes no theme
* CSS class name conflict
** [ ] content: almost everywhere
** [ ] title: caption of list, audio, video, picture
== Paragraphs
Paragraphs don't require special markup in AsciiDoc.
A paragraph is defined by one or more consecutive lines of text.
Line breaks within a paragraph are not displayed.
Leave at least one empty line to begin a new paragraph.
=== Literal paragraph
A normal paragraph.
A literal paragraph.
One or more consecutive lines indented by at least one space.
The text is shown in a fixed-width (typically monospace) font.
The lines are preformatted (i.e., as formatted in the source).
Spaces and newlines,
like the ones in this sentence,
are preserved.
=== Hard line break
Roses are red, +
violets are blue.
[%hardbreaks]
A ruby is red.
Java is black.
=== Lead paragraph
[.lead]
This text will be styled as a lead paragraph (i.e., larger font).
This paragraph will not be.
== Text formatting
=== Constrained bold, italic, and monospace
It has *strong* significance to me.
I _cannot_ stress this enough.
Type `OK` to accept.
That *_really_* has to go.
Can't pick one? Let's use them `*_all_*`.
=== Unconstrained bold, italic, and monospace
**C**reate, **R**ead, **U**pdate, and **D**elete (CRUD)
That's fan__freakin__tastic!
Don't pass generic ``Object``s to methods that accept ``String``s!
It was Beatle**__mania__**!
=== Highlight, underline, strikethrough, and custom role
Mark my words, #automation is essential#.
##Mark##up refers to text that contains formatting ##mark##s.
Where did all the [.underline]#cores# go?
We need [.line-through]#ten# twenty VMs.
A [.myrole]#custom role# must be fulfilled by the theme.
=== Superscript and subscript
^super^script
~sub~script
=== Smart quotes and apostrophes
"`double curved quotes`"
'`single curved quotes`'
"plain double curved quotes"
Olaf's desk was a mess.
A ``std::vector```'s size is the number of items it contains.
All of the werewolves`' desks were a mess.
Olaf had been with the company since the `'00s.
== Links
=== Autolinks, URL macro, and mailto macro
https://asciidoctor.org - automatic!
https://asciidoctor.org[Asciidoctor]
devel@discuss.example.org - also automatic!
mailto:devel@discuss.example.org[Discuss]
mailto:join@discuss.example.org[Subscribe,Subscribe me,I want to join!]
=== URL macros with attributes
https://chat.asciidoc.org[Discuss AsciiDoc,role=external,window=_blank]
https://chat.asciidoc.org[Discuss AsciiDoc^]
=== URLs with spaces and special characters
link:++https://example.org/?q=[a b]++[URL with special characters (Using ``++`` to quote)]
https://example.org/?q=%5Ba%20b%5D[URL with special characters (URLencoded)]
=== Link to relative file
link:index.html[Docs]
=== Link using a Windows UNC path
link:\\server\share\whitepaper.pdf[Whitepaper]
=== Inline anchors
[[bookmark-a]]Inline anchors make arbitrary content referenceable.
anchor:bookmark-c[]Use a cross reference to link to this location.
[[bookmark-d,last paragraph of section Inline archors]]The xreflabel attribute will be used as link text in the cross-reference link.
=== Cross references
See <<Paragraphs>> to learn how to write paragraphs.
Learn how to organize the document into <<Paragraphs,paragraphs>> (with custom text).
Here we can go to <<bookmark-a>>
Here we can go to <<bookmark-c>>
Here we can go to <<bookmark-d>>
=== Inter-document cross references
NOTE: Inter-document cross reference is hardly working.
Refer to xref:document-b.adoc#section-b[Section B of Document B] for more information.
If you never return from xref:document-b.adoc[Document B], we'll send help.
== Document header
NOTE: It doesn't show in hugo, but the attributes defined nearby header is work,
maybe the reason is using `--no-header-footer` argument when
proceessing with asciidoctor.
== Automatic TOC
NOTE: TOC not work, don't know why.
:toc:
== Includes
=== Include document parts
include::external.adoc[]
=== Include content by tagged regions or lines
==== By tag
include::document-b.adoc[tag=section-b]
==== By line
include::document-b.adoc[lines=30..32]
=== Include content from a URL
NOTE: asciidoctor without `+allow-uri-read+` will not render URL content, which is
the default behaviour.
include::https://raw.githubusercontent.com/asciidoctor/asciidoctor/main/README.adoc[]
== Lists
=== Unordered list
* List item
** Nested list item
*** Deeper nested list item
* List item
** Another nested list item
* List item
=== Unordered list max level nesting
* Level 1 list item
** Level 2 list item
*** Level 3 list item
**** Level 4 list item
***** Level 5 list item
****** etc.
* Level 1 list item
=== Ordered list
. Step 1
. Step 2
.. Step 2a
.. Step 2b
. Step 3
=== Ordered list max level nesting
. Level 1 list item
.. Level 2 list item
... Level 3 list item
.... Level 4 list item
..... Level 5 list item
. Level 1 list item
=== Checklist
* [*] checked
* [x] also checked
* [ ] not checked
* normal list item
=== Description list
First term:: The description can be placed on the same line
as the term.
Second term::
Description of the second term.
The description can also start on its own line.
=== Question and answer list
[qanda]
What is the answer?::
This is the answer.
Are cameras allowed?::
Are backpacks allowed?::
No.
=== Mixed
Operating Systems::
Linux:::
. Fedora
* Desktop
. Ubuntu
* Desktop
* Server
BSD:::
. FreeBSD
. NetBSD
Cloud Providers::
PaaS:::
. OpenShift
. CloudBees
IaaS:::
. Amazon EC2
. Rackspace
=== Complex content in outline lists
* Every list item has at least one paragraph of content,
which may be wrapped, even using a hanging indent.
+
Additional paragraphs or blocks are adjoined by putting
a list continuation on a line adjacent to both blocks.
+
list continuation:: a plus sign (`{plus}`) on a line by itself
* A literal paragraph does not require a list continuation.
$ cd projects/my-book
* AsciiDoc lists may contain any complex content.
+
|===
|Column 1, Header Row |Column 2, Header Row
|Column 1, Row 1
|Column 2, Row 1
|===
== Images
=== Block image macro
image::sunset.jpg[]
image::sunset.jpg[Sunset]
.A mountain sunset
[#img-sunset,caption="Figure 1: ",link=/essays/asciidoctor-test/sunset.jpg]
image::sunset.jpg[Sunset,200,100]
image::https://asciidoctor.org/images/octocat.jpg[GitHub mascot]
=== Inline image macro
Click image:sunset.jpg[] to get the party started.
Click image:sunset.jpg[title=Pause] when you need a break.
=== Inline image macro with positioning role
image:sunset.jpg[Sunset,150,150,role=right] What a beautiful sunset!
== Audio
=== Block audio macro
.Bit Bit Loop
audio::Bit Bit Loop.mp3[]
.Bit Bit Loop
audio::Bit Bit Loop.mp3[start=60,opts=autoplay]
Written by link:++https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QL4T5W3SDDBZA++[Kevin MacLeod]. Hardcore party for the 8bit generation. This music is available for commercial and non-commercial purposes.
The audio above is download from https://freepd.com/electronic.php
== Videos
.Video by Nicki Vlachou
video::video.mp4[]
.Video by Nicki Vlachou
video::video.mp4[width=640,start=60,opts=autoplay]
Both videos above are downloaded from https://www.pexels.com/video/a-red-ferris-wheel-3509314/
== Keyboard, button, and menu macros
IMPORTANT: You must set the `+experimental+` attribute in the document header to enable
these macros. As did in this article.
=== Keyboard macro
|===
|Shortcut |Purpose
|kbd:[F11]
|Toggle fullscreen
|kbd:[Ctrl+T]
|Open a new tab
|===
=== Menu macro
To save the file, select menu:File[Save].
Select menu:View[Zoom > Reset] to reset the zoom level to the default setting.
=== Button macro
Press the btn:[OK] button when you are finished.
Select a file in the file navigator and click btn:[Open].
== Literals and source code
=== Inline literal monospace
Output literal monospace text, such as `+{backtick}+` or `+http://localhost:8080+`,
by enclosing the text in a pair of pluses surrounded by a pair backticks. Another way
to monospace text is use single `backtick`.
=== Literal paragraph
Normal line.
Indent line by one space to create a literal line.
Normal line.
=== Literal block
....
error: 1954 Forbidden search
absolutely fatal: operation lost in the dodecahedron of doom
Would you like to try again? y/n
....
=== Listing block with title
.Gemfile.lock
----
GEM
remote: https://rubygems.org/
specs:
asciidoctor (2.0.15)
PLATFORMS
ruby
DEPENDENCIES
asciidoctor (~> 2.0.15)
----
=== Source block with title and syntax highlighting
[IMPORTANT]
====
You must enable source highlighting by setting the source-highlighter
attribute in the document header, CLI or API.
:source-highlighter: rouge
See https://docs.asciidoctor.org/asciidoctor/latest/syntax-highlighting/[Syntax Highlighting] to learn which values are accepted when using Asciidoctor.
====
IMPORTANT: Using rouge with enlonger the time to generate the site, on this example site
with only this article as asciidoc, the build time is 147ms. When enable rouge as syntax
highlight, the build time is 340ms.
.Some Ruby code
[source,ruby]
----
require 'sinatra'
get '/hi' do
"Hello World!"
end
----
=== Source block with callouts
NOTE: callouts are always selectable, don't know why.
[source,ruby]
----
require 'sinatra' # <1>
get '/hi' do # <2>
"Hello World!" # <3>
end
----
<1> Library import
<2> URL mapping
<3> HTTP response body
=== Make callouts non-selectable
----
line of code // <1>
line of code # <2>
line of code ;; <3>
line of code <!--4-->
----
<1> A callout behind a line comment for C-style languages.
<2> A callout behind a line comment for Ruby, Python, Perl, etc.
<3> A callout behind a line comment for Clojure.
<4> A callout behind a line comment for XML or SGML languages like HTML.
=== Source block content included from a file
[,bash]
----
include::hello-world.sh[]
----
=== Source add leading indentation from partial file content
[source, bash]
----
include::hello-world.sh[indent=4]
----
== Admonitions
=== Admonition paragraph
NOTE: An admonition draws the reader's attention to auxiliary information.
IMPORTANT: Don't forget the children!
TIP: Look for the warp zone under the bridge.
CAUTION: Slippery when wet.
WARNING: The software you're about to use is untested.
IMPORTANT: Sign off before stepping away from your computer.
=== Admonition block
[NOTE]
====
An admonition block may contain complex content.
.A list
- one
- two
- three
Another paragraph.
====
== More delimited blocks
=== Sidebar block
.Optional Title
****
Sidebars are used to visually separate auxiliary bits of content
that supplement the main text.
****
=== Example block
====
Here's a sample AsciiDoc document:
----
= Title of Document
Doc Writer
:toc:
This guide provides...
----
The document header is useful, but not required.
====
=== Blockquotes
[quote,Abraham Lincoln,Address delivered at the dedication of the Cemetery at Gettysburg]
____
Four score and seven years ago our fathers brought forth
on this continent a new nation...
____
[quote,Albert Einstein]
A person who never made a mistake never tried anything new.
____
A person who never made a mistake never tried anything new.
____
[quote,Charles Lutwidge Dodgson,'Mathematician and author, also known as https://en.wikipedia.org/wiki/Lewis_Carroll[Lewis Carroll]']
____
If you don't know where you are going, any road will get you there.
____
"I hold it that a little rebellion now and then is a good thing,
and as necessary in the political world as storms in the physical."
-- Thomas Jefferson, Papers of Thomas Jefferson: Volume 11
=== Open blocks
--
An open block can be an anonymous container,
or it can masquerade as any other block.
--
[source]
--
puts "I'm a source block!"
--
=== Passthrough block
++++
<p>
Content in a passthrough block is passed to the output unprocessed.
That means you can include raw HTML.
</p>
++++
=== Customize block subsitutions
:release-version: 2.4.3
[source,xml,subs=attributes+]
----
<dependency>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctorj</artifactId>
<version>{release-version}</version>
</dependency>
----
== Tables
=== Table with a title, two columns, a header row, and two rows of content
.Table Title
|===
|Column 1, Header Row |Column 2, Header Row
|Cell in column 1, row 1
|Cell in column 2, row 1
|Cell in column 1, row 2
|Cell in column 2, row 2
|===
=== Table with two columns, a header row, and two rows of content
[%header,cols=2*]
|===
|Name of Column 1
|Name of Column 2
|Cell in column 1, row 1
|Cell in column 2, row 1
|Cell in column 1, row 2
|Cell in column 2, row 2
|===
=== Table with three columns, a header row, and two rows of content
.Applications
[cols="1,1,2"]
|===
|Name |Category |Description
|Firefox
|Browser
|Mozilla Firefox is an open source web browser.
It's designed for standards compliance,
performance, portability.
|Arquillian
|Testing
|An innovative and highly extensible testing platform.
Empowers developers to easily create real, automated tests.
|===
=== Table with column containing AsciiDoc content
[cols="2,2,5a"]
|===
|Firefox
|Browser
|Mozilla Firefox is an open source web browser.
It's designed for:
* standards compliance
* performance
* portability
https://getfirefox.com[Get Firefox]!
|===
=== Table from CSV data using shorthand
,===
Artist,Track,Genre
Baauer,Harlem Shake,Hip Hop
,===
=== Table from CSV data
[%header,format=csv]
|===
Artist,Track,Genre
Baauer,Harlem Shake,Hip Hop
The Lumineers,Ho Hey,Folk Rock
|===
=== Table from CSV data included from file
[opts=header]
,===
include::customers.csv[]
,===
=== Table from DSV data using shorthand
:===
Artist:Track:Genre
Robyn:Indestructible:Dance
:===
=== Table with formatted, aligned and merged cells
[cols="e,m,^,>s",width="25%"]
|===
|1 >s|2 |3 |4
^|5 2.2+^.^|6 .3+<.>m|7
^|8
|9 2+>|10
|===
== Comments
There will show no other content, because comments are not shown.
// A single-line comment
////
A multi-line comment.
Notice it's a delimited block.
////
== Breaks
=== Thematic break (aka horizontal rule)
before
'''
after
== Footnotes
A statement.footnote:[Clarification about this statement.]
A bold statement!footnote:disclaimer[Opinions are my own.]
Another bold statement.footnote:disclaimer[]
== Others
=== LaTeX
Here we are trying to render LaTeX with \(\KaTeX\), and there following a
formula block rendered by KaTeX.
++++
$$
\pi=\int_{-\infty}^\infty\frac{dx}{1+x^2}
$$
++++
In LaTeX, pi is described as \(\pi\)

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

View file

@ -9,8 +9,7 @@ katex: true
draft: false
---
This article contians some test for latex support.
Currently the lib used for rendering LaTeX is [\\(\KaTeX\\)](https://katex.org/)
This article contians some test for latex support. Currently the lib used for rendering LaTeX is [\\(\KaTeX\\)](https://katex.org/)
<!--more-->
@ -21,8 +20,7 @@ $$
## The code which render the above
```
This article contians some test for latex support.
Currently the lib used for rendering LaTeX is [\\(\KaTeX\\)](https://katex.org/)
This article contians some test for latex support. Currently the lib used for rendering LaTeX is [\\(\KaTeX\\)](https://katex.org/)
$$
\pi=\int_{-\infty}^\infty\frac{dx}{1+x^2}

View file

@ -51,7 +51,7 @@
<!-- To automatically render math in text elements, include the auto-render extension: -->
<script defer src="{{ "lib/katex/contrib/auto-render.min.js" | relURL }}"
onload="renderMathInElement(document.querySelector('body .single .content'));"></script>
onload="renderMathInElement(document.body);"></script>
{{ end }}
{{ with and .Site.Params.remark42 .Params.show_comments }}
@ -76,5 +76,5 @@
<link rel="stylesheet" href="{{ "lib/icofont/icofont.min.css" | relURL }}" />
<link rel="stylesheet" href="{{ "css/syntax.css" | relURL }}" />
<link rel="stylesheet" href="{{ "css/style.css" | relURL }}" />
<script src="{{ "js/copy-code-block.js" | relURL }}"></script>
<link rel="stylesheet" href="{{ "css/asciidoctor.css" | relURL }}" />
<link rel="shortcut icon" href="{{ "images/favicon.ico" | relURL }}" type="image/x-icon" />

415
static/css/asciidoctor.css Normal file
View file

@ -0,0 +1,415 @@
/*
* This file is from https://github.com/darshandsoni/asciidoctor-skins
* Commit: c98a8ab9b27571e5b63d75912a3c753cc72ed8e4
* File: css/asciidoctor.css
*/
/* Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
/* Remove comment around @import statement below when using as a custom stylesheet */
/*@import url("//fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700");*/
.content article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
.content audio,canvas,video{display:inline-block}
.content audio:not([controls]){display:none;height:0}
.content [hidden],template{display:none}
.content script{display:none!important}
.content html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
.content body{margin:0}
.content a{background:transparent}
.content a:focus{outline:thin dotted}
.content a:active,a:hover{outline:0}
.content h1{font-size:2em;margin:.67em 0}
.content abbr[title]{border-bottom:1px dotted}
.content b,strong{font-weight:bold}
.content dfn{font-style:italic}
.content hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
.content mark{background:#ff0;color:#000}
.content code,kbd,pre,samp{font-family:monospace;font-size:1em}
.content pre{white-space:pre-wrap}
.content q{quotes:"\201C" "\201D" "\2018" "\2019"}
.content small{font-size:80%}
.content sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
.content sup{top:-.5em}
.content sub{bottom:-.25em}
.content img{border:0}
.content svg:not(:root){overflow:hidden}
.content figure{margin:0}
.content fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
.content legend{border:0;padding:0}
.content button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
.content button,input{line-height:normal}
.content button,select{text-transform:none}
.content button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
.content button[disabled],html input[disabled]{cursor:default}
.content input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
.content input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}
.content input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}
.content button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
.content textarea{overflow:auto;vertical-align:top}
.content table{border-collapse:collapse;border-spacing:0}
.content *,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
.content html,body{font-size:100%}
.content 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}
.content a:hover{cursor:pointer}
.content img,object,embed{max-width:100%;height:auto}
.content object,embed{height:100%}
.content img{-ms-interpolation-mode:bicubic}
.content .left{float:left!important}
.content .right{float:right!important}
.content .text-left{text-align:left!important}
.content .text-right{text-align:right!important}
.content .text-center{text-align:center!important}
.content .text-justify{text-align:justify!important}
.content .hide{display:none}
.content body{-webkit-font-smoothing:antialiased}
.content img,object,svg{display:inline-block;vertical-align:middle}
.content textarea{height:auto;min-height:50px}
.content select{width:100%}
.content .center{margin-left:auto;margin-right:auto}
.content .spread{width:100%}
.content p.lead,.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{font-size:1.21875em;line-height:1.6}
.content .subheader,.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{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
.content div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
.content a{color:#2156a5;text-decoration:underline;line-height:inherit}
.content a:hover,a:focus{color:#1d4b8f}
.content a img{border:none}
.content p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
.content p aside{font-size:.875em;line-height:1.35;font-style:italic}
.content 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}
.content 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}
.content h1{font-size:2.125em}
.content h2{font-size:1.6875em}
.content h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
.content h4,h5{font-size:1.125em}
.content h6{font-size:1em}
.content hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
.content em,i{font-style:italic;line-height:inherit}
.content strong,b{font-weight:bold;line-height:inherit}
.content small{font-size:60%;line-height:inherit}
.content code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
.content ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
.content ul,ol,ul.no-bullet,ol.no-bullet{margin-left:1.5em}
.content ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
.content ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
.content ul.square{list-style-type:square}
.content ul.circle{list-style-type:circle}
.content ul.disc{list-style-type:disc}
.content ul.no-bullet{list-style:none}
.content ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
.content dl dt{margin-bottom:.3125em;font-weight:bold}
.content dl dd{margin-bottom:1.25em}
.content abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
.content abbr{text-transform:none}
.content blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
.content blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
.content blockquote cite:before{content:"\2014 \0020"}
.content blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
.content blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
.content @media only screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
.content h1{font-size:2.75em}
.content h2{font-size:2.3125em}
.content h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
.content h4{font-size:1.4375em}}
.content table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
.content table thead,table tfoot{background:#f7f8f7;font-weight:bold}
.content 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}
.content table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
.content table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
.content table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
.content body{tab-size:4}
.content h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
.content h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.content .clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table}
.content .clearfix:after,.float-group:after{clear:both}
.content *:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
.content pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
.content .keyseq{color:rgba(51,51,51,.8)}
.content 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-color:#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}
.content .keyseq kbd:first-child{margin-left:0}
.content .keyseq kbd:last-child{margin-right:0}
.content .menuseq,.menu{color:rgba(0,0,0,.8)}
.content b.button:before,b.button:after{position:relative;top:-1px;font-weight:400}
.content b.button:before{content:"[";padding:0 3px 0 2px}
.content b.button:after{content:"]";padding:0 2px 0 3px}
.content p a>code:hover{color:rgba(0,0,0,.9)}
.content #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}
.content #header:before,#header:after,#content:before,#content:after,#footnotes:before,#footnotes:after,#footer:before,#footer:after{content:" ";display:table}
.content #header:after,#content:after,#footnotes:after,#footer:after{clear:both}
.content #content{margin-top:1.25em}
.content #content:before{content:none}
.content #header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
.content #header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8}
.content #header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px}
.content #header .details{border-bottom:1px solid #ddddd8;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}
.content #header .details span:first-child{margin-left:-.125em}
.content #header .details span.email a{color:rgba(0,0,0,.85)}
.content #header .details br{display:none}
.content #header .details br+span:before{content:"\00a0\2013\00a0"}
.content #header .details br+span.author:before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
.content #header .details br+span#revremark:before{content:"\00a0|\00a0"}
.content #header #revnumber{text-transform:capitalize}
.content #header #revnumber:after{content:"\00a0"}
.content #content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
.content #toc{border-bottom:1px solid #efefed;padding-bottom:.5em}
.content #toc>ul{margin-left:.125em}
.content #toc ul.sectlevel0>li>a{font-style:italic}
.content #toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
.content #toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
.content #toc li{line-height:1.3334;margin-top:.3334em}
.content #toc a{text-decoration:none}
.content #toc a:active{text-decoration:underline}
.content #toctitle{color:#7a2518;font-size:1.2em}
.content @media only screen and (min-width:768px){#toctitle{font-size:1.375em}
.content body.toc2{padding-left:15em;padding-right:0}
.content #toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
.content #toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
.content #toc.toc2>ul{font-size:.9em;margin-bottom:0}
.content #toc.toc2 ul ul{margin-left:0;padding-left:1em}
.content #toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
.content body.toc2.toc-right{padding-left:0;padding-right:15em}
.content body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}}
.content @media only screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
.content #toc.toc2{width:20em}
.content #toc.toc2 #toctitle{font-size:1.375em}
.content #toc.toc2>ul{font-size:.95em}
.content #toc.toc2 ul ul{padding-left:1.25em}
.content body.toc2.toc-right{padding-left:0;padding-right:20em}}
.content #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}
.content #content #toc>:first-child{margin-top:0}
.content #content #toc>:last-child{margin-bottom:0}
.content #footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em}
.content #footer-text{color:rgba(255,255,255,.8);line-height:1.44}
.content .sect1{padding-bottom:.625em}
.content @media only screen and (min-width:768px){.sect1{padding-bottom:1.25em}}
.content .sect1+.sect1{border-top:1px solid #efefed}
.content #content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
.content #content h1>a.anchor:before,h2>a.anchor:before,h3>a.anchor:before,#toctitle>a.anchor:before,.sidebarblock>.content>.title>a.anchor:before,h4>a.anchor:before,h5>a.anchor:before,h6>a.anchor:before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
.content #content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
.content #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}
.content #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}
.content .audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
.content .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}
.content table.tableblock>caption.title{white-space:nowrap;overflow:visible;max-width:0}
.content .paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{color:rgba(0,0,0,.85)}
.content table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p{font-size:inherit}
.content .admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
.content .admonitionblock>table td.icon{text-align:center;width:80px}
.content .admonitionblock>table td.icon img{max-width:none}
.content .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
.content .admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)}
.content .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
.content .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}
.content .exampleblock>.content>:first-child{margin-top:0}
.content .exampleblock>.content>:last-child{margin-bottom:0}
.content .sidebarblock{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}
.content .sidebarblock>:first-child{margin-top:0}
.content .sidebarblock>:last-child{margin-bottom:0}
.content .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
.content .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}
.content .literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8}
.content .sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1}
.content .literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em}
.content .literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal}
.content @media only screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}
.content @media only screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}
.content .literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)}
.content .listingblock pre.highlightjs{padding:0}
.content .listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
.content .listingblock pre.prettyprint{border-width:0}
.content .listingblock>.content{position:relative}
.content .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:#999}
.content .listingblock:hover code[data-lang]:before{display:block}
.content .listingblock.terminal pre .command:before{content:attr(data-prompt);padding-right:.5em;color:#999}
.content .listingblock.terminal pre .command:not([data-prompt]):before{content:"$"}
.content table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none}
.content table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45}
.content table.pyhltable td.code{padding-left:.75em;padding-right:0}
.content pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8}
.content pre.pygments .lineno{display:inline-block;margin-right:.25em}
.content table.pyhltable .linenodiv{background:none!important;padding-right:0!important}
.content .quoteblock{margin:0 1em 1.25em 1.5em;display:table}
.content .quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
.content .quoteblock blockquote,.quoteblock blockquote 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}
.content .quoteblock blockquote{margin:0;padding:0;border:0}
.content .quoteblock blockquote:before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
.content .quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
.content .quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right}
.content .quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)}
.content .quoteblock .quoteblock blockquote{padding:0 0 0 .75em}
.content .quoteblock .quoteblock blockquote:before{display:none}
.content .verseblock{margin:0 1em 1.25em 1em}
.content .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}
.content .verseblock pre strong{font-weight:400}
.content .verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
.content .quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
.content .quoteblock .attribution br,.verseblock .attribution br{display:none}
.content .quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
.content .quoteblock.abstract{margin:0 0 1.25em 0;display:block}
.content .quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{text-align:left;word-spacing:0}
.content .quoteblock.abstract blockquote:before,.quoteblock.abstract blockquote p:first-of-type:before{display:none}
.content table.tableblock{max-width:100%;border-collapse:separate}
.content table.tableblock td>.paragraph:last-child p>p:last-child,table.tableblock th>p:last-child,table.tableblock td>p:last-child{margin-bottom:0}
.content table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
.content table.grid-all th.tableblock,table.grid-all td.tableblock{border-width:0 1px 1px 0}
.content table.grid-all tfoot>tr>th.tableblock,table.grid-all tfoot>tr>td.tableblock{border-width:1px 1px 0 0}
.content table.grid-cols th.tableblock,table.grid-cols td.tableblock{border-width:0 1px 0 0}
.content table.grid-all *>tr>.tableblock:last-child,table.grid-cols *>tr>.tableblock:last-child{border-right-width:0}
.content table.grid-rows th.tableblock,table.grid-rows td.tableblock{border-width:0 0 1px 0}
.content table.grid-all tbody>tr:last-child>th.tableblock,table.grid-all tbody>tr:last-child>td.tableblock,table.grid-all thead:last-child>tr>th.tableblock,table.grid-rows tbody>tr:last-child>th.tableblock,table.grid-rows tbody>tr:last-child>td.tableblock,table.grid-rows thead:last-child>tr>th.tableblock{border-bottom-width:0}
.content table.grid-rows tfoot>tr>th.tableblock,table.grid-rows tfoot>tr>td.tableblock{border-width:1px 0 0 0}
.content table.frame-all{border-width:1px}
.content table.frame-sides{border-width:0 1px}
.content table.frame-topbot{border-width:1px 0}
.content th.halign-left,td.halign-left{text-align:left}
.content th.halign-right,td.halign-right{text-align:right}
.content th.halign-center,td.halign-center{text-align:center}
.content th.valign-top,td.valign-top{vertical-align:top}
.content th.valign-bottom,td.valign-bottom{vertical-align:bottom}
.content th.valign-middle,td.valign-middle{vertical-align:middle}
.content table thead th,table tfoot th{font-weight:bold}
.content tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
.content tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
.content p.tableblock>code:only-child{background:none;padding:0}
.content p.tableblock{font-size:1em}
.content td>div.verse{white-space:pre}
.content ol{margin-left:1.75em}
.content ul li ol{margin-left:1.5em}
.content dl dd{margin-left:1.125em}
.content dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
.content ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
.content ul.unstyled,ol.unnumbered,ul.checklist,ul.none{list-style-type:none}
.content ul.unstyled,ol.unnumbered,ul.checklist{margin-left:.625em}
.content ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1em;font-size:.85em}
.content ul.checklist li>p:first-child>input[type="checkbox"]:first-child{width:1em;position:relative;top:1px}
.content ul.inline{margin:0 auto .625em auto;margin-left:-1.375em;margin-right:0;padding:0;list-style:none;overflow:hidden}
.content ul.inline>li{list-style:none;float:left;margin-left:1.375em;display:block}
.content ul.inline>li>*{display:block}
.content .unstyled dl dt{font-weight:400;font-style:normal}
.content ol.arabic{list-style-type:decimal}
.content ol.decimal{list-style-type:decimal-leading-zero}
.content ol.loweralpha{list-style-type:lower-alpha}
.content ol.upperalpha{list-style-type:upper-alpha}
.content ol.lowerroman{list-style-type:lower-roman}
.content ol.upperroman{list-style-type:upper-roman}
.content ol.lowergreek{list-style-type:lower-greek}
.content .hdlist>table,.colist>table{border:0;background:none}
.content .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
.content td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
.content td.hdlist1{font-weight:bold;padding-bottom:1.25em}
.content .literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
.content .colist>table tr>td:first-of-type{padding:0 .75em;line-height:1}
.content .colist>table tr>td:last-of-type{padding:.25em 0}
.content .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}
.content .imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0}
.content .imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em}
.content .imageblock>.title{margin-bottom:0}
.content .imageblock.thumb,.imageblock.th{border-width:6px}
.content .imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
.content .image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
.content .image.left{margin-right:.625em}
.content .image.right{margin-left:.625em}
.content a.image{text-decoration:none;display:inline-block}
.content a.image object{pointer-events:none}
.content sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
.content sup.footnote a,sup.footnoteref a{text-decoration:none}
.content sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
.content #footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
.content #footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em 0;border-width:1px 0 0 0}
.content #footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;text-indent:-1.05em;margin-bottom:.2em}
.content #footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none}
.content #footnotes .footnote:last-of-type{margin-bottom:0}
.content #content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
.content .gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
.content .gist .file-data>table td.line-data{width:99%}
.content div.unbreakable{page-break-inside:avoid}
.content .big{font-size:larger}
.content .small{font-size:smaller}
.content .underline{text-decoration:underline}
.content .overline{text-decoration:overline}
.content .line-through{text-decoration:line-through}
.content .aqua{color:#00bfbf}
.content .aqua-background{background-color:#00fafa}
.content .black{color:#000}
.content .black-background{background-color:#000}
.content .blue{color:#0000bf}
.content .blue-background{background-color:#0000fa}
.content .fuchsia{color:#bf00bf}
.content .fuchsia-background{background-color:#fa00fa}
.content .gray{color:#606060}
.content .gray-background{background-color:#7d7d7d}
.content .green{color:#006000}
.content .green-background{background-color:#007d00}
.content .lime{color:#00bf00}
.content .lime-background{background-color:#00fa00}
.content .maroon{color:#600000}
.content .maroon-background{background-color:#7d0000}
.content .navy{color:#000060}
.content .navy-background{background-color:#00007d}
.content .olive{color:#606000}
.content .olive-background{background-color:#7d7d00}
.content .purple{color:#600060}
.content .purple-background{background-color:#7d007d}
.content .red{color:#bf0000}
.content .red-background{background-color:#fa0000}
.content .silver{color:#909090}
.content .silver-background{background-color:#bcbcbc}
.content .teal{color:#006060}
.content .teal-background{background-color:#007d7d}
.content .white{color:#bfbfbf}
.content .white-background{background-color:#fafafa}
.content .yellow{color:#bfbf00}
.content .yellow-background{background-color:#fafa00}
.content span.icon>.fa{cursor:default}
.content .admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
.content .admonitionblock td.icon .icon-note:before{content:"\f05a";color:#19407c}
.content .admonitionblock td.icon .icon-tip:before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
.content .admonitionblock td.icon .icon-warning:before{content:"\f071";color:#bf6900}
.content .admonitionblock td.icon .icon-caution:before{content:"\f06d";color:#bf3400}
.content .admonitionblock td.icon .icon-important:before{content:"\f06a";color:#bf0000}
.content .conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;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}
.content .conum[data-value] *{color:#fff!important}
.content .conum[data-value]+b{display:none}
.content .conum[data-value]:after{content:attr(data-value)}
.content pre .conum[data-value]{position:relative;top:-.125em}
.content b.conum *{color:inherit!important}
.content .conum:not([data-value]):empty{display:none}
.content dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
.content h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
.content p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
.content p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
.content p{margin-bottom:1.25rem}
.content .sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
.content .exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
.content .print-only{display:none!important}
.content @media print{@page{margin:1.25cm .75cm}
.content *{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
.content a{color:inherit!important;text-decoration:underline!important}
.content a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
.content a[href^=";http:"]:not(.bare):after,a[href^="https:"]:not(.bare):after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
.content abbr[title]:after{content:" (" attr(title) ")"}
.content pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
.content thead{display:table-header-group}
.content svg{max-width:100%}
.content p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
.content h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
.content #toc,.sidebarblock,.exampleblock>.content{background:none!important}
.content #toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important}
.content .sect1{padding-bottom:0!important}
.content .sect1+.sect1{border:0!important}
.content #header>h1:first-child{margin-top:1.25rem}
.content body.book #header{text-align:center}
.content body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em 0}
.content body.book #header .details{border:0!important;display:block;padding:0!important}
.content body.book #header .details span:first-child{margin-left:0!important}
.content body.book #header .details br{display:block}
.content body.book #header .details br+span:before{content:none!important}
.content body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
.content body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
.content .listingblock code[data-lang]:before{display:block}
.content #footer{background:none!important;padding:0 .9375em}
.content #footer-text{color:rgba(0,0,0,.6)!important;font-size:.9em}
.content .hide-on-print{display:none!important}
.content .print-only{display:block!important}
.content .hide-for-print{display:none!important}
.content .show-for-print{display:inherit!important}}

View file

@ -447,23 +447,17 @@ body {
}
/* keep in style with highlighting */
.content pre {
background-color: var(--color-bg-block);
border-radius: 3px;
/* The copy button with absolute position need this.
* https://developer.mozilla.org/en-US/docs/Web/CSS/position
* https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
*/
position: relative;
}
.content pre { padding: 7px; }
.content pre code {
display: block;
padding: var(--len-3);
border: none;
background-color: unset;
background-color: var(--color-bg-block);
border-radius: 3px;
overflow: auto;
width: 100%;
}
@ -553,6 +547,7 @@ body {
{ visibility: visible }
.highlight pre {
padding: 7px;
overflow-x: auto;
}
@ -561,24 +556,6 @@ body {
overflow-x: auto;
}
/* the copy button added by /js/copy-code-button.js */
pre .copyCodeButton {
position: absolute;
top: var(--len-1);
right: var(--len-3);
font-family: var(--fonts-mono);
color: var(--color-fg-hyperlink);
cursor: pointer;
visibility: hidden;
}
pre:hover .copyCodeButton {
visibility: visible;
}
pre .copyCodeButton:hover {
color: var(--color-fg-hyperlink-hover);
}
/**************************/
/* setup list page layout */
/**************************/
@ -710,6 +687,12 @@ pre .copyCodeButton:hover {
width: 85%;
}
/* keep content style from being affected by remark42 style */
.content pre {
background-color: transparent;
color: var(--color-fg-font-normal)
}
/**********/
/** misc **/
/**********/

View file

@ -1,36 +0,0 @@
/*
* Every codeblock has "pre > code" structure, some highlighted codeblocks have
* "div.highlight > pre.chroma > code" structure. So, use the simple CSS selector
* to query all codeblocks.
*/
document.addEventListener("DOMContentLoaded",
() => {
var codeblocks = document.querySelectorAll(".single .content pre code");
console.log("codeblocks length:", codeblocks.length);
codeblocks.forEach(
(codeblock) => {
let elementPre = codeblock.parentElement;
let button = document.createElement("div");
button.classList.add("copyCodeButton");
button.innerHTML = "copy";
button.addEventListener("click",
() => {
navigator.clipboard.writeText(codeblock.textContent);
button.innerHTML = "copied!";
setTimeout(
() => { button.innerHTML = "copy"; },
1000
);
}
);
elementPre.appendChild(button);
}
);
}
);