├── LICENSE ├── README-ja.adoc ├── README.adoc ├── adoc ├── en │ ├── 01_cost-down_extensible.adoc │ ├── 02_smooth-coworking.adoc │ ├── 03_multi-device_multilingual.adoc │ ├── images │ │ ├── img_cms_01.png │ │ ├── img_cms_02.png │ │ ├── img_cms_03.png │ │ ├── img_cms_04.png │ │ ├── img_cms_05_asciidoc.png │ │ ├── img_cms_05_markdown.png │ │ ├── img_cms_05_restructured.png │ │ ├── img_cms_05_style.png │ │ ├── img_cms_06.png │ │ ├── img_cms_06_html.png │ │ ├── img_cms_07.png │ │ ├── img_main.jpg │ │ └── logo.png │ └── index.adoc └── ja │ ├── 01_cost-down_extensible.adoc │ ├── 02_smooth-coworking.adoc │ ├── 03_multi-device_multilingual.adoc │ ├── images │ ├── img_cms_01.png │ ├── img_cms_02.png │ ├── img_cms_03.png │ ├── img_cms_04.png │ ├── img_cms_05_asciidoc.png │ ├── img_cms_05_markdown.png │ ├── img_cms_05_restructured.png │ ├── img_cms_05_style.png │ ├── img_cms_06.png │ ├── img_cms_06_html.png │ ├── img_cms_07.png │ ├── img_main.jpg │ └── logo.png │ └── index.adoc ├── adpy ├── adpy.bat ├── html ├── .DS_Store ├── css │ ├── asciidoctor.css │ ├── coderay-asciidoctor.css │ └── style.css ├── en │ ├── 01_cost-down_extensible.html │ ├── 02_smooth-coworking.html │ ├── 03_multi-device_multilingual.html │ ├── images │ │ ├── img_cms_01.png │ │ ├── img_cms_02.png │ │ ├── img_cms_03.png │ │ ├── img_cms_04.png │ │ ├── img_cms_05_asciidoc.png │ │ ├── img_cms_05_markdown.png │ │ ├── img_cms_05_restructured.png │ │ ├── img_cms_05_style.png │ │ ├── img_cms_06.png │ │ ├── img_cms_06_html.png │ │ ├── img_cms_07.png │ │ ├── img_main.jpg │ │ └── logo.png │ └── index.html ├── ja │ ├── 01_cost-down_extensible.html │ ├── 02_smooth-coworking.html │ ├── 03_multi-device_multilingual.html │ ├── images │ │ ├── img_cms_01.png │ │ ├── img_cms_02.png │ │ ├── img_cms_03.png │ │ ├── img_cms_04.png │ │ ├── img_cms_05_asciidoc.png │ │ ├── img_cms_05_markdown.png │ │ ├── img_cms_05_restructured.png │ │ ├── img_cms_05_style.png │ │ ├── img_cms_06.png │ │ ├── img_cms_06_html.png │ │ ├── img_cms_07.png │ │ ├── img_main.jpg │ │ └── logo.png │ └── index.html └── js │ └── script.js ├── lib ├── buildNavmenu.py ├── convertHtml.py ├── default-theme.yml ├── docinfo-footer.html ├── docinfo.html ├── generateToc.py ├── insertPreamble.py ├── menucontent_en.html ├── menucontent_ja.html ├── toc_en.adoc └── toc_ja.adoc └── pdf ├── .DS_Store ├── en └── toc_en.pdf └── ja └── toc_ja.pdf /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README-ja.adoc: -------------------------------------------------------------------------------- 1 | // settings: 2 | :status: 3 | // Variables: 4 | :release-version: 1.0.0 5 | :outfilesuffix: .adoc 6 | :hardbreaks: 7 | // URIs: 8 | :uri-org: https://github.com/human-science 9 | :uri-repo: {uri-org}/adpy 10 | ifdef::env-site[:uri-project: link:] 11 | :uri-rel-file-base: link: 12 | :uri-license: {uri-rel-file-base}LICENSE 13 | 14 | = ADPY 15 | 16 | AsciidocファイルをAsciidoctorとPythonを介してHTMLファイルに変換します。また、Asciidoctor-pdfを介してPDFファイルを出力することもできます。 17 | 18 | この文書は以下の言語で読むことができます。 19 | 20 | {uri-rel-file-base}README.adoc[English] | {uri-rel-file-base}README-ja.adoc[日本語] 21 | 22 | より詳しい情報をお知りになりたいかたは弊社ウェブサイトへお越しください。 23 | 24 | https://www.science.co.jp/[humanscience.co.jp] 25 | 26 | == 動作条件 27 | 28 | ADPYをLinux、OS X(Mac)またはWindowsで動作させるためには、下記のRubyとPythonの実装すべてが必要です。 29 | 30 | * https://www.ruby-lang.org/[Ruby] 31 | 32 | * https://github.com/asciidoctor/asciidoctor#requirements[Asciidoctor] 33 | 34 | * https://github.com/asciidoctor/asciidoctor-pdf[Asciidcotor-pdf] 35 | 36 | * https://www.python.org/downloads/[Python3.X] 37 | 38 | * https://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-beautiful-soup[Beautifulsoup4] 39 | 40 | * https://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser[lxml] 41 | 42 | == 使い方 43 | 44 | 1. このリポジトリーをクローンします。 45 | 46 | $ git clone https://github.com/human-science/adpy.git 47 | $ cd adpy 48 | 49 | 2. `adoc` ディレクトリ内でAsciidocファイルを作成します。 50 | 51 | $ cd adoc/en 52 | $ vi index.adoc 53 | 54 | 3. リポジトリーのルートディレクトリに戻り、以下のコマンドを実行します。 55 | 56 | $ cd ../ 57 | $ adpy html en 58 | 59 | ** Windowsの場合 60 | 61 | $ cd ../ 62 | $ adpy.bat html en 63 | 64 | 4. `html\en`フォルダ内に変換済みのhtmlファイルが書き出されます。 65 | 66 | == 書き出し時のコマンドライン引数 67 | 68 | ADPYは、書き出し時に2つのコマンドライン引数を取ることができます。 69 | 70 | $ adpy [File type] [Language code] 71 | 72 | 例えば、Asciidocファイルを日本語のPDFに変換したいときは、以下のようなコマンド文になります。 73 | 74 | $ adpy pdf ja 75 | 76 | コマンドライン引数に何も指定されていない場合は、`File type`には`html`が、`Language code`には`en`が設定されます。 77 | 78 | * File type 79 | 変換するファイル形式を選択できます。変換したファイルは、コマンドライン引数で指定したファイル形式と同名のフォルダ内に出力されます。何も設定されていない場合は、デフォルトの`html`が設定されます。 80 | ** html 81 | ** pdf 82 | 83 | * Language code 84 | 変換する言語コードを選択できます。変換したファイルは、コマンドライン引数で指定した言語コードと同名のフォルダ内に出力されます。何も設定されていない場合は、デフォルトの`en`が設定されます。 85 | * en 86 | * ja 87 | 88 | == その他のオプション 89 | 90 | * バージョンを表示する 91 | 92 | $ adpy version 93 | 94 | * マニュアルページを表示する 95 | 96 | $ adpy man 97 | 98 | == ライセンス 99 | 100 | Copyright © 2018 Human Science Co., Ltd. Free use of this software is granted under the terms of the MIT License. 101 | 102 | For the full text of the license, see the {uri-license}[LICENSE] file. 103 | 104 | このツールは右記書籍に影響を受けています。 https://github.com/continuous-manual-writing[https://github.com/continuous-manual-writing] 105 | -------------------------------------------------------------------------------- /README.adoc: -------------------------------------------------------------------------------- 1 | // settings: 2 | :status: 3 | // Variables: 4 | :release-version: 1.0.0 5 | :outfilesuffix: .adoc 6 | :hardbreaks: 7 | // URIs: 8 | :uri-org: https://github.com/human-science 9 | :uri-repo: {uri-org}/adpy 10 | ifdef::env-site[:uri-project: link:] 11 | :uri-rel-file-base: link: 12 | :uri-license: {uri-rel-file-base}LICENSE 13 | 14 | = ADPY 15 | 16 | ADPY is a convert Asciidoc file to html file via Asciidoctor and Python. Also can be use for convert Asciidoc file to PDF file via Asciidoctor-pdf. 17 | 18 | This document is also available in the following languages: 19 | 20 | {uri-rel-file-base}README.adoc[English] | {uri-rel-file-base}README-ja.adoc[日本語] 21 | 22 | Please visit our company website for more information: 23 | 24 | https://www.science.co.jp/[humanscience.co.jp] 25 | 26 | == Requirements 27 | 28 | ADPY works on Linux, macOS and Windows and requires all of the following implementations of Ruby and python: 29 | 30 | * https://www.ruby-lang.org/[Ruby] 31 | 32 | * https://github.com/asciidoctor/asciidoctor#requirements[Asciidoctor] 33 | 34 | * https://github.com/asciidoctor/asciidoctor-pdf[Asciidcotor-pdf] 35 | 36 | * https://www.python.org/downloads/[Python3.X] 37 | 38 | * https://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-beautiful-soup[Beautifulsoup4] 39 | 40 | * https://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser[lxml] 41 | 42 | == Usage 43 | 44 | 1. Clone this repository. 45 | 46 | $ git clone https://github.com/human-science/adpy.git 47 | $ cd adpy 48 | 49 | 2. Write your asciidoc files in `adoc` directory. 50 | 51 | $ cd adoc/en 52 | $ vi index.adoc 53 | 54 | 3. Back to the root directory, execute a command as below. 55 | 56 | $ cd ../ 57 | $ adpy html en 58 | 59 | ** For windows, 60 | 61 | $ cd ../ 62 | $ adpy.bat html en 63 | 64 | 4. You can see the converted html files in `html\en` folder. 65 | 66 | == Options to conversion 67 | 68 | ADPY can take two optional arguments as below for conversion. 69 | 70 | $ adpy [File type] [Language code] 71 | 72 | For example, you can run the following commands to convert Asciidoc files to a PDF file in Japanese. 73 | 74 | $ adpy pdf ja 75 | 76 | If no arguments are set, `html` is defined as `File type` and `en` is defined as `Language code`. 77 | 78 | * File type 79 | You can select a file type to be converted, from html and pdf. The converted file is output to a folder with the same name as the file type specified in the command line argument. With no arguments set, html is defined by default. 80 | ** html 81 | ** pdf 82 | 83 | * Language code 84 | You can select a language code to be converted from `en` and `ja`. The converted file is output to a folder with the same name as the language code specified in the command line argument. With no arguments set, `en` is defined by default. 85 | ** en 86 | ** ja 87 | 88 | == Other options 89 | 90 | * Show version 91 | 92 | $ adpy version 93 | 94 | * Show man page 95 | 96 | $ adpy man 97 | 98 | == Copyright 99 | 100 | Copyright © 2018 Human Science Co., Ltd. Free use of this software is granted under the terms of the MIT License. 101 | 102 | For the full text of the license, see the {uri-license}[LICENSE] file. 103 | 104 | This tool has inspired by https://github.com/continuous-manual-writing[https://github.com/continuous-manual-writing] 105 | -------------------------------------------------------------------------------- /adoc/en/01_cost-down_extensible.adoc: -------------------------------------------------------------------------------- 1 | = Cost reduction and extensibility 2 | 3 | == System Implementation leads 50% Cost reduction 4 | 5 | When implementing CMS for manual creation and management, it usually costs more than 10 million. For many companies, the cost of implementing a system will be a heavy burden. 6 | Manual creation with GitHub and Markdown / Asciidoc makes use of open source software, so it can reduce the initial cost of the creation environment. 7 | 8 | image:img_cms_01.png[] 9 | 10 | *"We can not prepare expensive budget when implementing a system."* 11 | 12 | *"I want to try it with a small start."* 13 | 14 | *"I want to keep maintenance costs such as annual license fee of hardware and software suppressed"* 15 | 16 | This is a service for customers as described above. 17 | 18 | * What is Atom (Atom) 19 | It is an open source text editor developed by GitHub. 20 | 21 | * What is a static site generator 22 | It is a tool to efficiently generate HTML / CSS based on files written with Markdown and others. 23 | 24 | == Extensibility 25 | 26 | By selecting open source software that corresponds to the function you want, you can flexibly expand it according to your own work-flow compared to package products. 27 | Human Science will support what kind of tool combination is best according to your requirements. 28 | 29 | 30 | For example, various plug-ins are provided to Atom which is an open source editor provided by GitHub. In accordance with the company's creation work-flow, you can build an easy-to-use environment by combining desired functions. 31 | 32 | image:img_cms_02.png[] 33 | 34 | Other examples 35 | 36 | * Sourcetree (free Git client tool to enable GUI operation) 37 | * Redpen (grammar proofing tool) 38 | * textlint (grammar proofing tool) 39 | -------------------------------------------------------------------------------- /adoc/en/02_smooth-coworking.adoc: -------------------------------------------------------------------------------- 1 | = Smooth communication 2 | 3 | == Cooperation with related parties smoothly 4 | 5 | The preparation system of the manual varies from company to company. 6 | 7 | 1. Engineers create manuals as part of their work 8 | 2. Obtain information from engineers and create by user support department 9 | 3. Obtain information from engineers and create by manual specialized department 10 | 11 | In either case, communication between departments is important. 12 | 13 | Specification change will occur several times until the product is released and delivered. Also, after the release, manual revision by version upgrade etc. was done, load of version number and change history of manual data was high. 14 | 15 | "Information from engineers is difficult to summarize" 16 | "Data sharing of manuals and documents is complicated, and it takes time and effort to manage data." 17 | "History management of correction tends to be complicated" 18 | 19 | *By using GitHub, it is easy to manage file generations and manage correction history.* 20 | *It will be possible to check detailed history such as who, when and what modifications were made.* 21 | 22 | image:img_cms_04.png[] 23 | 24 | By using GitHub's pull request function, you can communicate quickly because you can contact the review request, feedback, and target document all at once. 25 | Data assets can be shared on the GitHub repository, so data can be shared between authorized holders. 26 | User authority such as viewing / editing authority can be set. 27 | 28 | == Descriptive form with affinity for engineers 29 | 30 | By adopting a descriptive form familiar to engineers such as Markdown, Asciidoc, reStructuredText (Lightweight Markup Language), you can create a manuscript without stress. 31 | There are cases where "lightweight markup language" is used along with Word, Excel, PowerPoint at the development site. 32 | The text formats used at the development site are as follows. 33 | 34 | [cols = "2, 5"] 35 | | === 36 | ^ | image: img_cms_05_markdown.png [] | Markdown 37 | It features that it can be described in a simple style. 38 | It is suitable for creating simple documents like memoranda. 39 | ^ | image: img_cms_05_asciidoc.png [] | Asciidoc 40 | It has more style than Markdown. 41 | Ideal when you want to make it look good with a low cost. 42 | It is suitable for technical documents and manuals. 43 | ^ | image: img_cms_05_restructured.png [] | reStructuredText 44 | Notation used in science field. 45 | It is widely used within the Python community. 46 | | === 47 | 48 | image:img_cms_05_style.png[] 49 | 50 | We propose a description format suitable for the purpose of use of customer's manual and operation system. 51 | -------------------------------------------------------------------------------- /adoc/en/03_multi-device_multilingual.adoc: -------------------------------------------------------------------------------- 1 | = Multi-device / multilingual 2 | 3 | == Multi-device compatible 4 | 5 | Traditionally, it was necessary to manage source files of PDF manuals and HTML manuals separately. 6 | *This solution output PDF and HTML with the response web design from one source file.* 7 | 8 | image:img_cms_06.png[] 9 | 10 | image:img_cms_06_html.png[] 11 | 12 | If you create one manual data, you can output both HTML and PDF. Therefore, you do not need to create PDF and HTML separately, you can reduce costs. 13 | 14 | Nowadays, due to distribution of services through the internet has become commonplace, HTML manuals are getting more important in various industries. 15 | And, with the spread of tablets and smartphones, multi-device compatibility is required. 16 | By customizing, this service can output responsive HTML. 17 | 18 | == Working with Trados, Memsource 19 | 20 | In collaboration with Trados, Memsource which is the de facto standard as translation tool, this service can manage one-stop project on GitHub from creating manual to translation. 21 | 22 | image:img_cms_07.png[] 23 | 24 | ※ Markdown format corresponds to Memsource. 25 | -------------------------------------------------------------------------------- /adoc/en/images/img_cms_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/en/images/img_cms_01.png -------------------------------------------------------------------------------- /adoc/en/images/img_cms_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/en/images/img_cms_02.png -------------------------------------------------------------------------------- /adoc/en/images/img_cms_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/en/images/img_cms_03.png -------------------------------------------------------------------------------- /adoc/en/images/img_cms_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/en/images/img_cms_04.png -------------------------------------------------------------------------------- /adoc/en/images/img_cms_05_asciidoc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/en/images/img_cms_05_asciidoc.png -------------------------------------------------------------------------------- /adoc/en/images/img_cms_05_markdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/en/images/img_cms_05_markdown.png -------------------------------------------------------------------------------- /adoc/en/images/img_cms_05_restructured.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/en/images/img_cms_05_restructured.png -------------------------------------------------------------------------------- /adoc/en/images/img_cms_05_style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/en/images/img_cms_05_style.png -------------------------------------------------------------------------------- /adoc/en/images/img_cms_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/en/images/img_cms_06.png -------------------------------------------------------------------------------- /adoc/en/images/img_cms_06_html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/en/images/img_cms_06_html.png -------------------------------------------------------------------------------- /adoc/en/images/img_cms_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/en/images/img_cms_07.png -------------------------------------------------------------------------------- /adoc/en/images/img_main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/en/images/img_main.jpg -------------------------------------------------------------------------------- /adoc/en/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/en/images/logo.png -------------------------------------------------------------------------------- /adoc/en/index.adoc: -------------------------------------------------------------------------------- 1 | = Create and manage documents easier! 2 | 3 | Are you facing problems to create manuals and technical materials with Word, FrameMaker, InDesign, etc? 4 | For such customers, we provide construction of manual creation environment using open sources such as GitHub. 5 | 6 | 7 | image:img_main.jpg[] 8 | 9 | * What is GitHub? 10 | It is a source code management tool used for software development. It is used not only as source code management but also as a document management and sharing tool such as specification documents. In manual creation, change history record, simultaneous work by multiple users, and more are possible. It can be used from 5 users $25 / month. 11 | 12 | * What is AsciiDoc? 13 | It is one of lightweight markup languages such as Markdown. It is possible to convert it into various formats such as HTML, PDF, e-book, and more by writing with a text editor. 14 | 15 | == Benefits of manual creation with GitHub and Markdown / Asciidoc 16 | 17 | 1. <<01_cost-down_extensible.adoc, System introduction 50% Cost reduction>> 18 | Manual creation with GitHub and Markdown / Asciidoc makes full use of open source software, so it can reduce the initial cost of the creation environment. 19 | 2. <<01_cost-down_extensible.adoc, Extensibility>> 20 | By selecting open source software that corresponds to the function you want, you can flexibly expand it according to your own flow compared to package products. 21 | 3. <<02_smooth-coworking.adoc, Cooperation with related parties smoothly>> 22 | By using GitHub's pull request function, you can communicate quickly because you can contact the review request, feedback, and target document all at once. 23 | 4. <<02_smooth-coworking.adoc, Descriptive form with affinity for engineers>> 24 | By adopting a descriptive form familiar to engineers (lightweight markup language), you can create a manuscript without stress. 25 | 5. <<03_multi-device_ multilingual.adoc, Multi-device compatible>> 26 | This solution supports response design that can output PDF and HTML from one source file. 27 | 6. <<03_multi-device_multilingual.adoc, Working with Trados\, Memsource>> 28 | One-stop project management on one stop GitHub from Japanese manuals to translations is possible in cooperation with Trados, Memsource which is the translation tool standard. 29 | -------------------------------------------------------------------------------- /adoc/ja/01_cost-down_extensible.adoc: -------------------------------------------------------------------------------- 1 | = コストダウンと拡張性 2 | 3 | == システム導入 50%コストダウン 4 | 5 | マニュアル作成・管理のためにCMSを導入する場合、通常1000万以上の費用が必要となります。多くの企業にとって、システム導入費用は大きな負担としてのしかかります。 6 | GitHubとMarkdown/Asciidocでのマニュアル作成は、オープンソースソフトウェアを活用するため、作成環境のイニシャルコストを抑えることができます。 7 | 8 | image:img_cms_01.png[] 9 | 10 | *「システム導入時に高額な予算を準備できない。」* 11 | 12 | *「スモールスタートで試したい。」* 13 | 14 | *「ハードウェアやソフトウェアの年間ライセンス費用などの維持費を押さえたい」* 15 | 16 | このようなお客様にぜひお試しいただきたいサービスです。 17 | 18 | * Atom(アトム)とは 19 | GitHubが開発したオープンソースのテキストエディターです。 20 | 21 | * 静的サイトジェネレーターとは 22 | Markdownなどで書かれたファイルをもとに、効率よくHTML/CSSを生成するためのツールです。 23 | 24 | == 拡張性 25 | 26 | 欲しい機能に対応したオープンソースソフトウェアを選択することで、パッケージ製品と比べて自社作成フローに合わせて柔軟に拡張できます。 27 | どのようなツールの組み合わせが最適かは、ご要件に応じてヒューマンサイエンスがサポートいたします。 28 | 29 | 30 | 例えば、GitHub社が提供しているオープンソースエディタであるAtomには、多様なプラグインが提供されています。自社の作成フローに合わせて、欲しい機能を組み合わせることで使いやすい環境を構築できます。 31 | 32 | image:img_cms_02.png[] 33 | 34 | その他の例 35 | 36 | * Sourcetree(Gitをコマンドラインではなく、GUIで操作できる無料ツール) 37 | * Redpen(文章校正ツール) 38 | * textlint(文章校正ツール) 39 | 40 | -------------------------------------------------------------------------------- /adoc/ja/02_smooth-coworking.adoc: -------------------------------------------------------------------------------- 1 | = スムーズなコミュニケーション 2 | 3 | == 関係者との連携が円滑に 4 | 5 | マニュアルの作成体制は会社によって異なります。 6 | 7 | 1. エンジニアが業務の一環としてマニュアルを作成する 8 | 2. エンジニアから情報を得て、ユーザーサポート部が作成する 9 | 3. エンジニアから情報を得て、マニュアル専門部署が作成を行う 10 | 11 | いずれの場合も、部署間・部署内でのコミュニケーションが重要になります。 12 | 13 | 製品が発売、納品されるまでは、幾度の仕様変更が発生します。また、リリース後も、バージョンアップなどによるマニュアルの改定が行われおり、マニュアルデータの版数・変更履歴の負荷が高いものでした。 14 | 15 | 「エンジニアからの情報のとりまとめが大変」 16 | 「マニュアルやドキュメントのデータ共有が煩雑で、データの管理に手間がかかる。」 17 | 「修正の履歴管理が煩雑になりがち」 18 | 19 | *GitHubを活用することで、ファイルの世代管理や修正履歴の管理が容易です。* 20 | *いつ、誰が、どのような修正をしたかなど細かい履歴も確認することが可能になります。* 21 | 22 | image:img_cms_04.png[] 23 | 24 | GitHubのプルリクエスト機能を使うことで、レビュー依頼やフィードバック、対象ドキュメントを一括で連絡できるため、コミュニケーションを円滑に行えます。 25 | GitHubのリポジトリ上でデータ資産を共有できるため、権限保有者間でデータを共有できます。 26 | 閲覧・編集権限などのユーザー権限が設定できます。 27 | 28 | == エンジニアに親和性のある記述形態 29 | 30 | Markdown、Asciidoc、reStructuredTextといったエンジニアに馴染みのある記述形態(軽量マークアップ言語)を採用することで、原稿作成をストレスなくできます。 31 | 開発現場ではWord、Excel、PowerPointと並び、「軽量マークアップ言語」が利用されているケースがあります。 32 | 開発現場で使われているテキスト形式には以下のようなものがあります。 33 | 34 | [cols="2,5"] 35 | |=== 36 | ^|image:img_cms_05_markdown.png[] |Markdown 37 | シンプルなスタイルで記述できるのが特長。 38 | メモ書き程度の簡単な文書作成に適している。 39 | ^|image:img_cms_05_asciidoc.png[] |Asciidoc 40 | Markdownに比べてスタイルが豊富。 41 | コストを抑えながら見栄えの良いレイアウトにしたい場合に最適。 42 | 技術文書、マニュアルに適している。 43 | ^|image:img_cms_05_restructured.png[] |reStructuredText 44 | 理科系分野で利用されている記法。 45 | Pythonのコミュニティ内で広く使用されている。 46 | |=== 47 | 48 | image:img_cms_05_style.png[] 49 | 50 | お客様マニュアル使用の目的や運用体制に合った記述形式をご提案いたします。 51 | -------------------------------------------------------------------------------- /adoc/ja/03_multi-device_multilingual.adoc: -------------------------------------------------------------------------------- 1 | = マルチデバイス・マルチリンガル 2 | 3 | == マルチデバイス対応 4 | 5 | 従来は、PDFマニュアルとHTMLマニュアルのソースファイルを2元管理する必要がありました。 6 | *本ソリューションでは、ひとつのソースファイルからPDFとレスポンシブデザインに対応したHTMLの両方を出力できます。* 7 | 8 | image:img_cms_06.png[] 9 | 10 | image:img_cms_06_html.png[] 11 | 12 | 一つのマニュアルデータを作れば、そこからPDFにもHTMLにも出力できます。PDFとHTML作成を個別に行う必要がないのでコストを圧縮できます。 13 | 14 | 昨今、ウェブ発信が当たり前になってきている時代のため、多様な業種でマニュアルのHTML化が進んでいます。 15 | 同時にタブレットやスマートフォンの普及により、マルチデバイスへの対応が求められています。 16 | カスタマイズすることで、レスポンシブデザインに対応したHTMLに出力できます。 17 | 18 | == Trados、Memsourceと連携 19 | 20 | 翻訳ツールのスタンダートであるTrados、Memsourceと連携し、GitHub上で日本語マニュアルの作成から翻訳までの全工程をワンストップで管理できます。 21 | 22 | image:img_cms_07.png[] 23 | 24 | ※Markdown形式は、Memsourceに対応しています。 25 | -------------------------------------------------------------------------------- /adoc/ja/images/img_cms_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/ja/images/img_cms_01.png -------------------------------------------------------------------------------- /adoc/ja/images/img_cms_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/ja/images/img_cms_02.png -------------------------------------------------------------------------------- /adoc/ja/images/img_cms_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/ja/images/img_cms_03.png -------------------------------------------------------------------------------- /adoc/ja/images/img_cms_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/ja/images/img_cms_04.png -------------------------------------------------------------------------------- /adoc/ja/images/img_cms_05_asciidoc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/ja/images/img_cms_05_asciidoc.png -------------------------------------------------------------------------------- /adoc/ja/images/img_cms_05_markdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/ja/images/img_cms_05_markdown.png -------------------------------------------------------------------------------- /adoc/ja/images/img_cms_05_restructured.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/ja/images/img_cms_05_restructured.png -------------------------------------------------------------------------------- /adoc/ja/images/img_cms_05_style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/ja/images/img_cms_05_style.png -------------------------------------------------------------------------------- /adoc/ja/images/img_cms_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/ja/images/img_cms_06.png -------------------------------------------------------------------------------- /adoc/ja/images/img_cms_06_html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/ja/images/img_cms_06_html.png -------------------------------------------------------------------------------- /adoc/ja/images/img_cms_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/ja/images/img_cms_07.png -------------------------------------------------------------------------------- /adoc/ja/images/img_main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/ja/images/img_main.jpg -------------------------------------------------------------------------------- /adoc/ja/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/adoc/ja/images/logo.png -------------------------------------------------------------------------------- /adoc/ja/index.adoc: -------------------------------------------------------------------------------- 1 | = マニュアル作成、管理をもっとラクに 2 | 3 | Word、FrameMaker、InDesignなどでのマニュアルや技術資料の作成に限界を感じてはいませんか? 4 | そのようなお客様向けに、GitHub等のオープンソースを活用したマニュアル作成環境の構築を提供しています。 5 | 6 | image:img_main.jpg[] 7 | 8 | * GitHub(ギットハブ)とは 9 | ソフトウェア開発に使われるソースコード管理ツールです。ソースコード管理だけではなく、仕様書などのドキュメント管理・共有ツールとしても活用されています。マニュアル作成においては、変更履歴記録、複数ユーザーによる同時作業などが可能です。5ユーザー 25ドル/月から使用できます。 10 | 11 | * AsciiDoc(アスキードック)とは 12 | Markdownなどのような軽量マークアップ言語の一つです。テキストエディタで記述しHTML、PDF、電子書籍、など種々の形式に変換することが可能です。 13 | 14 | == GitHubとMarkdown/Asciidocでのマニュアル作成のメリット 15 | 16 | 1. <<01_cost-down_hi-avairable.adoc, システム導入 50%コストダウン>> 17 | GitHubとMarkdown/Asciidocでのマニュアル作成は、オープンソースソフトウェアを活用するため、作成環境のイニシャルコストを抑えることができます。 18 | 2. <<01_cost-down_hi-avairable.adoc, 拡張性>> 19 | 欲しい機能に対応したオープンソースソフトウェアを選択することで、パッケージ製品と比べて自社作成フローに合わせて柔軟に拡張できます。 20 | 3. <<02_smooth-coworking.adoc, 関係者との連携が円滑に>> 21 | GitHubのプルリクエスト機能を使うことで、レビュー依頼やフィードバック、対象ドキュメントを一括で連絡できるため、コミュニケーションを円滑に行えます。 22 | 4. <<02_smooth-coworking.adoc, エンジニアに親和性のある記述形態>> 23 | エンジニアに馴染みのある記述形態(軽量マークアップ言語)を採用することで、原稿作成をストレスなくできます。 24 | 5. <<03_multi-device_multilingual.adoc, マルチデバイス対応>> 25 | 本ソリューションでは、ひとつのソースファイルからPDFやHTMLを出力できるレスポンシブデザインに対応しています。 26 | 6. <<03_multi-device_multilingual.adoc, Trados、Memsourceと連携>> 27 | 翻訳ツールのスタンダートであるTrados、Memsourceと連携し、日本語マニュアルから翻訳までワンストップGitHub上でワンストップのプロジェクト管理が可能です。 28 | -------------------------------------------------------------------------------- /adpy: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # ADPY - Convert Asciidoc to html via Asciidoctor and Python. 3 | # Require Ruby, Asciidoctor-1.5.6.1(Available only this version, strictly), Asciidoctor-pdf, Python3.X, Beautifulsoup4, and lxml. 4 | # MIT License 5 | # Copyright (c) 2018 Human Science Co., Ltd 6 | # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, htmlribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 7 | 8 | # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 9 | 10 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 11 | 12 | cd `dirname $0` 13 | 14 | # Variables 15 | FNAME=$0 16 | FTYPE=$1 17 | LANGS=$2 18 | MAN=" 19 | ADPY can takes 2 optional arguments as below when conversion. 20 | 21 | $ adpy [File type] [Language code] 22 | 23 | File type: 24 | html Convert Asciidoc to HTML. 25 | pdf Convert Asciidoc to PDF. 26 | Language code: 27 | en Asciidoc files in adoc/en folder will convert and output Filetype/en folder. 28 | ja Asciidoc files in adoc/en folder will convert and output Filetype/ja folder. 29 | 30 | Other optional arguments is below. 31 | 32 | $ adpy [Other option] 33 | 34 | Other options: 35 | version Display current tools version. 36 | man Display tools manual page. 37 | 38 | Copyright © 2018 Human Science Co., Ltd. Free use of this software is granted under the terms of the MIT License. 39 | " 40 | 41 | # Process flow 42 | # initialize => prepare => main_$FTYPE => after 43 | 44 | function after() { 45 | if [ "$FTYPE" = "pdf" ]; then 46 | rm -rf $FTYPE/$LANGS/images 47 | fi 48 | rm -f $FTYPE/$LANGS/*.adoc 49 | 50 | echo Done. 51 | exit 52 | } 53 | 54 | function main_pdf() { 55 | cd $FTYPE/$LANGS 56 | 57 | python ../../lib/insertPreamble.py $LANGS 58 | python ../../lib/generateToc.py $LANGS 59 | cp ../../lib/toc_$LANGS.adoc . 60 | 61 | asciidoctor -b pdf -r asciidoctor-pdf toc_$LANGS.adoc 62 | cd ../../ 63 | 64 | after $FTYPE $LANGS 65 | } 66 | 67 | function main_html() { 68 | cd $FTYPE/$LANGS 69 | 70 | python ../../lib/insertPreamble.py $LANGS 71 | python ../../lib/generateToc.py $LANGS 72 | 73 | for file in `\find . -maxdepth 1 -name "*.adoc"`; do 74 | asciidoctor -d book -a stylesdir=../css -b html5 $file 75 | done 76 | 77 | python ../../lib/buildNavmenu.py $LANGS 78 | 79 | for file in `\find . -maxdepth 1 -name "*.html"`; do 80 | python ../../lib/convertHtml.py $file $LANGS 81 | done 82 | 83 | cd ../../ 84 | 85 | after $FTYPE $LANGS 86 | } 87 | 88 | function prepare() { 89 | if [ -e $FTYPE/$LANGS ]; then 90 | rm -rf $FTYPE/$LANGS 91 | fi 92 | mkdir -p $FTYPE/$LANGS 93 | 94 | if [ -e lib/toc_$LANGS.adoc ]; then 95 | rm -rf lib/toc_$LANGS.adoc 96 | fi 97 | 98 | cp adoc/$LANGS/*.adoc $FTYPE/$LANGS 99 | cp -fr adoc/$LANGS/images $FTYPE/$LANGS/images 100 | 101 | 102 | if [ $FTYPE = "html" ]; then 103 | if [ ! -e html/css ]; then 104 | mkdir -p html/css 105 | fi 106 | if [ ! -e html/js ]; then 107 | mkdir -p html/js 108 | fi 109 | main_html $FTYPE $LANGS 110 | fi 111 | 112 | if [ $FTYPE = "pdf" ]; then 113 | main_pdf $FTYPE $LANGS 114 | fi 115 | } 116 | 117 | function initialize() { 118 | if [ "$FTYPE" = "version" ]; then 119 | echo V 1.0.0 120 | exit 121 | fi 122 | if [ "$FTYPE" = "man" ]; then 123 | echo "$MAN" 124 | exit 125 | fi 126 | if [ "$FTYPE" = "pdf" ]; then 127 | FTYPE=$FTYPE 128 | else 129 | FTYPE=html 130 | fi 131 | if [ "$LANGS" = "ja" ]; then 132 | LANGS=$LANGS 133 | else 134 | LANGS=en 135 | fi 136 | prepare $FTYPE $LANGS 137 | } 138 | initialize 139 | -------------------------------------------------------------------------------- /adpy.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | chcp 65001 > nul 3 | REM ADPY - Convert Asciidoc to html via Asciidoctor and Python. 4 | REM Require Ruby, Asciidoctor-1.5.6.1(Available only this version, strictly, Asciidoctor-pdf, Python3.X, Beautifulsoup4, and lxml. 5 | REM MIT License 6 | REM Copyright (c 2018 Human Science Co., Ltd 7 | REM Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software", to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, htmlribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 8 | 9 | REM The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 10 | 11 | REM THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 12 | 13 | pushd %~p0 14 | 15 | REM Variables 16 | set FNAME=%0 17 | set FTYPE=%1 18 | set LANGS=%2 19 | set MAN="Please visit our GitHub repository. thanks! https://github.com/human-science/adpy" 20 | 21 | REM Process flow 22 | REM initialize => prepare => main_%FTYPE% => after 23 | 24 | 25 | :initialize 26 | if /i {%FTYPE%} == {version} ( 27 | echo V 1.0.0 28 | pause 29 | exit /b 30 | ) 31 | if /i {%FTYPE%} == {man} ( 32 | echo %MAN% 33 | pause 34 | exit /b 35 | ) 36 | if /i {%FTYPE%} == {pdf} ( 37 | set FTYPE=%FTYPE% 38 | ) else ( 39 | set FTYPE=html 40 | ) 41 | if /i {%LANGS%} == {ja} ( 42 | set LANGS=%LANGS% 43 | ) else ( 44 | set LANGS=en 45 | ) 46 | goto :prepare %FTYPE% %LANGS% 47 | 48 | 49 | :prepare 50 | if exist %FTYPE%\%LANGS% rd /s /q %FTYPE%\%LANGS% 51 | mkdir %FTYPE%\%LANGS% 52 | if exist lib\toc_%LANGS%.adoc del lib\toc_%LANGS%.adoc 53 | copy adoc\%LANGS%\*.adoc %FTYPE%\%LANGS% > nul 54 | xcopy adoc\%LANGS%\images %FTYPE%\%LANGS%\images /D /E /I /Q /Y > nul 55 | 56 | if /i {%FTYPE%} == {html} ( 57 | goto :prepare_html %FTYPE% %LANGS% 58 | ) 59 | if /i {%FTYPE%} == {pdf} ( 60 | goto :main_pdf %FTYPE% %LANGS% 61 | ) 62 | 63 | :prepare_html 64 | if not exist html\css ( 65 | mkdir html\css 66 | ) 67 | if not exist html\js ( 68 | mkdir html\js 69 | ) 70 | goto :main_html %FTYPE% %LANGS% 71 | 72 | :main_pdf 73 | pushd . 74 | cd %FTYPE%\%LANGS% 75 | 76 | python ../../lib/insertPreamble.py %LANGS% 77 | python ../../lib/generateToc.py %LANGS% 78 | copy ..\..\lib\toc_%LANGS%.adoc > nul 79 | 80 | call asciidoctor -b pdf -r asciidoctor-pdf toc_%LANGS%.adoc 81 | 82 | popd 83 | goto :after %FTYPE% %LANGS% 84 | 85 | 86 | :main_html 87 | pushd . 88 | cd %FTYPE%\%LANGS% 89 | 90 | python ../../lib/insertPreamble.py %LANGS% 91 | python ../../lib/generateToc.py %LANGS% 92 | 93 | for %%i in (*.adoc) do call asciidoctor -d book -a stylesdir=../css -b html5 %%i 94 | 95 | python ../../lib/buildNavmenu.py %LANGS% 96 | 97 | for %%i in (*.html) do call python ../../lib/convertHtml.py %%i %LANGS% 98 | 99 | popd 100 | goto :after %FTYPE% %LANGS% 101 | 102 | 103 | :after 104 | if /i {%FTYPE%} == {pdf} ( 105 | rd /s /q %FTYPE%\%LANGS%\images 106 | ) 107 | del %FTYPE%\%LANGS%\*.adoc 108 | 109 | echo Done. 110 | pause 111 | exit /b 112 | -------------------------------------------------------------------------------- /html/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/human-science/adpy/2abebac3c418e4fd2c8eaef3e7db17e8679a8084/html/.DS_Store -------------------------------------------------------------------------------- /html/css/asciidoctor.css: -------------------------------------------------------------------------------- 1 | /* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */ 2 | /* Remove comment around @import statement below 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 | article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block} 5 | audio,canvas,video{display:inline-block} 6 | audio:not([controls]){display:none;height:0} 7 | [hidden],template{display:none} 8 | script{display:none!important} 9 | html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%} 10 | a{background:transparent} 11 | a:focus{outline:thin dotted} 12 | a:active,a:hover{outline:0} 13 | h1{font-size:2em;margin:.67em 0} 14 | abbr[title]{border-bottom:1px dotted} 15 | b,strong{font-weight:bold} 16 | dfn{font-style:italic} 17 | hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0} 18 | mark{background:#ff0;color:#000} 19 | code,kbd,pre,samp{font-family:monospace;font-size:1em} 20 | pre{white-space:pre-wrap} 21 | q{quotes:"\201C" "\201D" "\2018" "\2019"} 22 | small{font-size:80%} 23 | sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} 24 | sup{top:-.5em} 25 | sub{bottom:-.25em} 26 | img{border:0} 27 | svg:not(:root){overflow:hidden} 28 | figure{margin:0} 29 | fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em} 30 | legend{border:0;padding:0} 31 | button,input,select,textarea{font-family:inherit;font-size:100%;margin:0} 32 | button,input{line-height:normal} 33 | button,select{text-transform:none} 34 | button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer} 35 | button[disabled],html input[disabled]{cursor:default} 36 | input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0} 37 | input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box} 38 | input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none} 39 | button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0} 40 | textarea{overflow:auto;vertical-align:top} 41 | table{border-collapse:collapse;border-spacing:0} 42 | *,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box} 43 | html,body{font-size:100%} 44 | 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;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased} 45 | a:hover{cursor:pointer} 46 | img,object,embed{max-width:100%;height:auto} 47 | object,embed{height:100%} 48 | img{-ms-interpolation-mode:bicubic} 49 | .left{float:left!important} 50 | .right{float:right!important} 51 | .text-left{text-align:left!important} 52 | .text-right{text-align:right!important} 53 | .text-center{text-align:center!important} 54 | .text-justify{text-align:justify!important} 55 | .hide{display:none} 56 | img,object,svg{display:inline-block;vertical-align:middle} 57 | textarea{height:auto;min-height:50px} 58 | select{width:100%} 59 | .center{margin-left:auto;margin-right:auto} 60 | .spread{width:100%} 61 | p.lead,.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{font-size:1.21875em;line-height:1.6} 62 | .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} 63 | 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} 64 | a{color:#2156a5;text-decoration:underline;line-height:inherit} 65 | a:hover,a:focus{color:#1d4b8f} 66 | a img{border:none} 67 | p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility} 68 | p aside{font-size:.875em;line-height:1.35;font-style:italic} 69 | 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} 70 | 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} 71 | h1{font-size:2.125em} 72 | h2{font-size:1.6875em} 73 | h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em} 74 | h4,h5{font-size:1.125em} 75 | h6{font-size:1em} 76 | hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0} 77 | em,i{font-style:italic;line-height:inherit} 78 | strong,b{font-weight:bold;line-height:inherit} 79 | small{font-size:60%;line-height:inherit} 80 | code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)} 81 | ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit} 82 | ul,ol{margin-left:1.5em} 83 | ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em} 84 | ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit} 85 | ul.square{list-style-type:square} 86 | ul.circle{list-style-type:circle} 87 | ul.disc{list-style-type:disc} 88 | ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0} 89 | dl dt{margin-bottom:.3125em;font-weight:bold} 90 | dl dd{margin-bottom:1.25em} 91 | abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help} 92 | abbr{text-transform:none} 93 | blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd} 94 | blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)} 95 | blockquote cite:before{content:"\2014 \0020"} 96 | blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)} 97 | blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)} 98 | @media only screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2} 99 | h1{font-size:2.75em} 100 | h2{font-size:2.3125em} 101 | h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em} 102 | h4{font-size:1.4375em}} 103 | table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede} 104 | table thead,table tfoot{background:#f7f8f7;font-weight:bold} 105 | 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} 106 | table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)} 107 | table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7} 108 | 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} 109 | h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em} 110 | h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400} 111 | .clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table} 112 | .clearfix:after,.float-group:after{clear:both} 113 | *: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;word-wrap:break-word} 114 | *:not(pre)>code.nobreak{word-wrap:normal} 115 | *:not(pre)>code.nowrap{white-space:nowrap} 116 | 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} 117 | em em{font-style:normal} 118 | strong strong{font-weight:400} 119 | .keyseq{color:rgba(51,51,51,.8)} 120 | 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} 121 | .keyseq kbd:first-child{margin-left:0} 122 | .keyseq kbd:last-child{margin-right:0} 123 | .menuseq,.menuref{color:#000} 124 | .menuseq b:not(.caret),.menuref{font-weight:inherit} 125 | .menuseq{word-spacing:-.02em} 126 | .menuseq b.caret{font-size:1.25em;line-height:.8} 127 | .menuseq i.caret{font-weight:bold;text-align:center;width:.45em} 128 | b.button:before,b.button:after{position:relative;top:-1px;font-weight:400} 129 | b.button:before{content:"[";padding:0 3px 0 2px} 130 | b.button:after{content:"]";padding:0 2px 0 3px} 131 | p a>code:hover{color:rgba(0,0,0,.9)} 132 | #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} 133 | #header:before,#header:after,#content:before,#content:after,#footnotes:before,#footnotes:after,#footer:before,#footer:after{content:" ";display:table} 134 | #header:after,#content:after,#footnotes:after,#footer:after{clear:both} 135 | #content{margin-top:1.25em} 136 | #content:before{content:none} 137 | #header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0} 138 | #header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8} 139 | #header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px} 140 | #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} 141 | #header .details span:first-child{margin-left:-.125em} 142 | #header .details span.email a{color:rgba(0,0,0,.85)} 143 | #header .details br{display:none} 144 | #header .details br+span:before{content:"\00a0\2013\00a0"} 145 | #header .details br+span.author:before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)} 146 | #header .details br+span#revremark:before{content:"\00a0|\00a0"} 147 | #header #revnumber{text-transform:capitalize} 148 | #header #revnumber:after{content:"\00a0"} 149 | #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} 150 | #toc{border-bottom:1px solid #efefed;padding-bottom:.5em} 151 | #toc>ul{margin-left:.125em} 152 | #toc ul.sectlevel0>li>a{font-style:italic} 153 | #toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0} 154 | #toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none} 155 | #toc li{line-height:1.3334;margin-top:.3334em} 156 | #toc a{text-decoration:none} 157 | #toc a:active{text-decoration:underline} 158 | #toctitle{color:#7a2518;font-size:1.2em} 159 | @media only screen and (min-width:768px){#toctitle{font-size:1.375em} 160 | body.toc2{padding-left:15em;padding-right:0} 161 | #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} 162 | #toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em} 163 | #toc.toc2>ul{font-size:.9em;margin-bottom:0} 164 | #toc.toc2 ul ul{margin-left:0;padding-left:1em} 165 | #toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em} 166 | body.toc2.toc-right{padding-left:0;padding-right:15em} 167 | body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}} 168 | @media only screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0} 169 | #toc.toc2{width:20em} 170 | #toc.toc2 #toctitle{font-size:1.375em} 171 | #toc.toc2>ul{font-size:.95em} 172 | #toc.toc2 ul ul{padding-left:1.25em} 173 | body.toc2.toc-right{padding-left:0;padding-right:20em}} 174 | #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} 175 | #content #toc>:first-child{margin-top:0} 176 | #content #toc>:last-child{margin-bottom:0} 177 | #footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em} 178 | #footer-text{color:rgba(255,255,255,.8);line-height:1.44} 179 | .sect1{padding-bottom:.625em} 180 | @media only screen and (min-width:768px){.sect1{padding-bottom:1.25em}} 181 | .sect1+.sect1{border-top:1px solid #efefed} 182 | #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} 183 | #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} 184 | #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} 185 | #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} 186 | #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} 187 | .audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em} 188 | .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 | table.tableblock>caption.title{white-space:nowrap;overflow:visible;max-width:0} 190 | .paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{color:rgba(0,0,0,.85)} 191 | table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p{font-size:inherit} 192 | .admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%} 193 | .admonitionblock>table td.icon{text-align:center;width:80px} 194 | .admonitionblock>table td.icon img{max-width:initial} 195 | .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase} 196 | .admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)} 197 | .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} 199 | .exampleblock>.content>:first-child{margin-top:0} 200 | .exampleblock>.content>:last-child{margin-bottom:0} 201 | .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} 202 | .sidebarblock>:first-child{margin-top:0} 203 | .sidebarblock>:last-child{margin-bottom:0} 204 | .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center} 205 | .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 pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8} 207 | .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} 208 | .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} 209 | .literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal} 210 | @media only screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}} 211 | @media only screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}} 212 | .literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)} 213 | .listingblock pre.highlightjs{padding:0} 214 | .listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px} 215 | .listingblock pre.prettyprint{border-width:0} 216 | .listingblock>.content{position:relative} 217 | .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} 218 | .listingblock:hover code[data-lang]:before{display:block} 219 | .listingblock.terminal pre .command:before{content:attr(data-prompt);padding-right:.5em;color:#999} 220 | .listingblock.terminal pre .command:not([data-prompt]):before{content:"$"} 221 | table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none} 222 | table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45} 223 | table.pyhltable td.code{padding-left:.75em;padding-right:0} 224 | pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8} 225 | pre.pygments .lineno{display:inline-block;margin-right:.25em} 226 | table.pyhltable .linenodiv{background:none!important;padding-right:0!important} 227 | .quoteblock{margin:0 1em 1.25em 1.5em;display:table} 228 | .quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em} 229 | .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} 230 | .quoteblock blockquote{margin:0;padding:0;border:0} 231 | .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)} 232 | .quoteblock blockquote>.paragraph:last-child p{margin-bottom:0} 233 | .quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right} 234 | .quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)} 235 | .quoteblock .quoteblock blockquote{padding:0 0 0 .75em} 236 | .quoteblock .quoteblock blockquote:before{display:none} 237 | .verseblock{margin:0 1em 1.25em 1em} 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 strong{font-weight:400} 240 | .verseblock .attribution{margin-top:1.25rem;margin-left:.5ex} 241 | .quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic} 242 | .quoteblock .attribution br,.verseblock .attribution br{display:none} 243 | .quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)} 244 | .quoteblock.abstract{margin:0 0 1.25em 0;display:block} 245 | .quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{text-align:left;word-spacing:0} 246 | .quoteblock.abstract blockquote:before,.quoteblock.abstract blockquote p:first-of-type:before{display:none} 247 | table.tableblock{max-width:100%;border-collapse:separate} 248 | 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} 249 | table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede} 250 | table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0} 251 | table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0} 252 | table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0} 253 | table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px 0} 254 | table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0 0} 255 | table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0} 256 | table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0} 257 | table.frame-all{border-width:1px} 258 | table.frame-sides{border-width:0 1px} 259 | table.frame-topbot{border-width:1px 0} 260 | th.halign-left,td.halign-left{text-align:left} 261 | th.halign-right,td.halign-right{text-align:right} 262 | th.halign-center,td.halign-center{text-align:center} 263 | th.valign-top,td.valign-top{vertical-align:top} 264 | th.valign-bottom,td.valign-bottom{vertical-align:bottom} 265 | th.valign-middle,td.valign-middle{vertical-align:middle} 266 | table thead th,table tfoot th{font-weight:bold} 267 | tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7} 268 | tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold} 269 | p.tableblock>code:only-child{background:none;padding:0} 270 | p.tableblock{font-size:1em} 271 | td>div.verse{white-space:pre} 272 | ol{margin-left:1.75em} 273 | ul li ol{margin-left:1.5em} 274 | dl dd{margin-left:1.125em} 275 | dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0} 276 | ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em} 277 | ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none} 278 | ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em} 279 | ul.unstyled,ol.unstyled{margin-left:0} 280 | ul.checklist{margin-left:.625em} 281 | 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} 282 | ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em} 283 | ul.inline{margin:0 auto .625em auto;margin-left:-1.375em;margin-right:0;padding:0;list-style:none;overflow:hidden} 284 | ul.inline>li{list-style:none;float:left;margin-left:1.375em;display:block} 285 | ul.inline>li>*{display:block} 286 | .unstyled dl dt{font-weight:400;font-style:normal} 287 | ol.arabic{list-style-type:decimal} 288 | ol.decimal{list-style-type:decimal-leading-zero} 289 | ol.loweralpha{list-style-type:lower-alpha} 290 | ol.upperalpha{list-style-type:upper-alpha} 291 | ol.lowerroman{list-style-type:lower-roman} 292 | ol.upperroman{list-style-type:upper-roman} 293 | ol.lowergreek{list-style-type:lower-greek} 294 | .hdlist>table,.colist>table{border:0;background:none} 295 | .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none} 296 | td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em} 297 | td.hdlist1{font-weight:bold;padding-bottom:1.25em} 298 | .literalblock+.colist,.listingblock+.colist{margin-top:-.5em} 299 | .colist>table tr>td:first-of-type{padding:.4em .75em 0 .75em;line-height:1;vertical-align:top} 300 | .colist>table tr>td:first-of-type img{max-width:initial} 301 | .colist>table tr>td:last-of-type{padding:.25em 0} 302 | .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} 303 | .imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0} 304 | .imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em} 305 | .imageblock>.title{margin-bottom:0} 306 | .imageblock.thumb,.imageblock.th{border-width:6px} 307 | .imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em} 308 | .image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0} 309 | .image.left{margin-right:.625em} 310 | .image.right{margin-left:.625em} 311 | a.image{text-decoration:none;display:inline-block} 312 | a.image object{pointer-events:none} 313 | sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super} 314 | sup.footnote a,sup.footnoteref a{text-decoration:none} 315 | sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline} 316 | #footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em} 317 | #footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em 0;border-width:1px 0 0 0} 318 | #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} 319 | #footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none} 320 | #footnotes .footnote:last-of-type{margin-bottom:0} 321 | #content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0} 322 | .gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0} 323 | .gist .file-data>table td.line-data{width:99%} 324 | div.unbreakable{page-break-inside:avoid} 325 | .big{font-size:larger} 326 | .small{font-size:smaller} 327 | .underline{text-decoration:underline} 328 | .overline{text-decoration:overline} 329 | .line-through{text-decoration:line-through} 330 | .aqua{color:#00bfbf} 331 | .aqua-background{background-color:#00fafa} 332 | .black{color:#000} 333 | .black-background{background-color:#000} 334 | .blue{color:#0000bf} 335 | .blue-background{background-color:#0000fa} 336 | .fuchsia{color:#bf00bf} 337 | .fuchsia-background{background-color:#fa00fa} 338 | .gray{color:#606060} 339 | .gray-background{background-color:#7d7d7d} 340 | .green{color:#006000} 341 | .green-background{background-color:#007d00} 342 | .lime{color:#00bf00} 343 | .lime-background{background-color:#00fa00} 344 | .maroon{color:#600000} 345 | .maroon-background{background-color:#7d0000} 346 | .navy{color:#000060} 347 | .navy-background{background-color:#00007d} 348 | .olive{color:#606000} 349 | .olive-background{background-color:#7d7d00} 350 | .purple{color:#600060} 351 | .purple-background{background-color:#7d007d} 352 | .red{color:#bf0000} 353 | .red-background{background-color:#fa0000} 354 | .silver{color:#909090} 355 | .silver-background{background-color:#bcbcbc} 356 | .teal{color:#006060} 357 | .teal-background{background-color:#007d7d} 358 | .white{color:#bfbfbf} 359 | .white-background{background-color:#fafafa} 360 | .yellow{color:#bfbf00} 361 | .yellow-background{background-color:#fafa00} 362 | span.icon>.fa{cursor:default} 363 | a span.icon>.fa{cursor:inherit} 364 | .admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} 365 | .admonitionblock td.icon .icon-note:before{content:"\f05a";color:#19407c} 366 | .admonitionblock td.icon .icon-tip:before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111} 367 | .admonitionblock td.icon .icon-warning:before{content:"\f071";color:#bf6900} 368 | .admonitionblock td.icon .icon-caution:before{content:"\f06d";color:#bf3400} 369 | .admonitionblock td.icon .icon-important:before{content:"\f06a";color:#bf0000} 370 | .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} 371 | .conum[data-value] *{color:#fff!important} 372 | .conum[data-value]+b{display:none} 373 | .conum[data-value]:after{content:attr(data-value)} 374 | pre .conum[data-value]{position:relative;top:-.125em} 375 | b.conum *{color:inherit!important} 376 | .conum:not([data-value]):empty{display:none} 377 | dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility} 378 | h1,h2,p,td.content,span.alt{letter-spacing:-.01em} 379 | p strong,td.content strong,div.footnote strong{letter-spacing:-.005em} 380 | p,blockquote,dt,td.content,span.alt{font-size:1.0625rem} 381 | p{margin-bottom:1.25rem} 382 | .sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em} 383 | .exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc} 384 | .print-only{display:none!important} 385 | @media print{@page{margin:1.25cm .75cm} 386 | *{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important} 387 | a{color:inherit!important;text-decoration:underline!important} 388 | a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important} 389 | a[href^="http:"]:not(.bare):after,a[href^="https:"]:not(.bare):after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em} 390 | abbr[title]:after{content:" (" attr(title) ")"} 391 | pre,blockquote,tr,img,object,svg{page-break-inside:avoid} 392 | thead{display:table-header-group} 393 | svg{max-width:100%} 394 | p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3} 395 | h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid} 396 | #toc,.sidebarblock,.exampleblock>.content{background:none!important} 397 | #toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important} 398 | .sect1{padding-bottom:0!important} 399 | .sect1+.sect1{border:0!important} 400 | #header>h1:first-child{margin-top:1.25rem} 401 | body.book #header{text-align:center} 402 | body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em 0} 403 | body.book #header .details{border:0!important;display:block;padding:0!important} 404 | body.book #header .details span:first-child{margin-left:0!important} 405 | body.book #header .details br{display:block} 406 | body.book #header .details br+span:before{content:none!important} 407 | body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important} 408 | body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always} 409 | .listingblock code[data-lang]:before{display:block} 410 | #footer{background:none!important;padding:0 .9375em} 411 | #footer-text{color:rgba(0,0,0,.6)!important;font-size:.9em} 412 | .hide-on-print{display:none!important} 413 | .print-only{display:block!important} 414 | .hide-for-print{display:none!important} 415 | .show-for-print{display:inherit!important}} -------------------------------------------------------------------------------- /html/css/coderay-asciidoctor.css: -------------------------------------------------------------------------------- 1 | /* Stylesheet for CodeRay to match GitHub theme | MIT License | http://foundation.zurb.com */ 2 | /*pre.CodeRay {background-color:#f7f7f8;}*/ 3 | .CodeRay .line-numbers{border-right:1px solid #d8d8d8;padding:0 0.5em 0 .25em} 4 | .CodeRay span.line-numbers{display:inline-block;margin-right:.5em;color:rgba(0,0,0,.3)} 5 | .CodeRay .line-numbers strong{color:rgba(0,0,0,.4)} 6 | table.CodeRay{border-collapse:separate;border-spacing:0;margin-bottom:0;border:0;background:none} 7 | table.CodeRay td{vertical-align: top;line-height:1.45} 8 | table.CodeRay td.line-numbers{text-align:right} 9 | table.CodeRay td.line-numbers>pre{padding:0;color:rgba(0,0,0,.3)} 10 | table.CodeRay td.code{padding:0 0 0 .5em} 11 | table.CodeRay td.code>pre{padding:0} 12 | .CodeRay .debug{color:#fff !important;background:#000080 !important} 13 | .CodeRay .annotation{color:#007} 14 | .CodeRay .attribute-name{color:#000080} 15 | .CodeRay .attribute-value{color:#700} 16 | .CodeRay .binary{color:#509} 17 | .CodeRay .comment{color:#998;font-style:italic} 18 | .CodeRay .char{color:#04d} 19 | .CodeRay .char .content{color:#04d} 20 | .CodeRay .char .delimiter{color:#039} 21 | .CodeRay .class{color:#458;font-weight:bold} 22 | .CodeRay .complex{color:#a08} 23 | .CodeRay .constant,.CodeRay .predefined-constant{color:#008080} 24 | .CodeRay .color{color:#099} 25 | .CodeRay .class-variable{color:#369} 26 | .CodeRay .decorator{color:#b0b} 27 | .CodeRay .definition{color:#099} 28 | .CodeRay .delimiter{color:#000} 29 | .CodeRay .doc{color:#970} 30 | .CodeRay .doctype{color:#34b} 31 | .CodeRay .doc-string{color:#d42} 32 | .CodeRay .escape{color:#666} 33 | .CodeRay .entity{color:#800} 34 | .CodeRay .error{color:#808} 35 | .CodeRay .exception{color:inherit} 36 | .CodeRay .filename{color:#099} 37 | .CodeRay .function{color:#900;font-weight:bold} 38 | .CodeRay .global-variable{color:#008080} 39 | .CodeRay .hex{color:#058} 40 | .CodeRay .integer,.CodeRay .float{color:#099} 41 | .CodeRay .include{color:#555} 42 | .CodeRay .inline{color:#000} 43 | .CodeRay .inline .inline{background:#ccc} 44 | .CodeRay .inline .inline .inline{background:#bbb} 45 | .CodeRay .inline .inline-delimiter{color:#d14} 46 | .CodeRay .inline-delimiter{color:#d14} 47 | .CodeRay .important{color:#555;font-weight:bold} 48 | .CodeRay .interpreted{color:#b2b} 49 | .CodeRay .instance-variable{color:#008080} 50 | .CodeRay .label{color:#970} 51 | .CodeRay .local-variable{color:#963} 52 | .CodeRay .octal{color:#40e} 53 | .CodeRay .predefined{color:#369} 54 | .CodeRay .preprocessor{color:#579} 55 | .CodeRay .pseudo-class{color:#555} 56 | .CodeRay .directive{font-weight:bold} 57 | .CodeRay .type{font-weight:bold} 58 | .CodeRay .predefined-type{color:inherit} 59 | .CodeRay .reserved,.CodeRay .keyword {color:#000;font-weight:bold} 60 | .CodeRay .key{color:#808} 61 | .CodeRay .key .delimiter{color:#606} 62 | .CodeRay .key .char{color:#80f} 63 | .CodeRay .value{color:#088} 64 | .CodeRay .regexp .delimiter{color:#808} 65 | .CodeRay .regexp .content{color:#808} 66 | .CodeRay .regexp .modifier{color:#808} 67 | .CodeRay .regexp .char{color:#d14} 68 | .CodeRay .regexp .function{color:#404;font-weight:bold} 69 | .CodeRay .string{color:#d20} 70 | .CodeRay .string .string .string{background:#ffd0d0} 71 | .CodeRay .string .content{color:#d14} 72 | .CodeRay .string .char{color:#d14} 73 | .CodeRay .string .delimiter{color:#d14} 74 | .CodeRay .shell{color:#d14} 75 | .CodeRay .shell .delimiter{color:#d14} 76 | .CodeRay .symbol{color:#990073} 77 | .CodeRay .symbol .content{color:#a60} 78 | .CodeRay .symbol .delimiter{color:#630} 79 | .CodeRay .tag{color:#008080} 80 | .CodeRay .tag-special{color:#d70} 81 | .CodeRay .variable{color:#036} 82 | .CodeRay .insert{background:#afa} 83 | .CodeRay .delete{background:#faa} 84 | .CodeRay .change{color:#aaf;background:#007} 85 | .CodeRay .head{color:#f8f;background:#505} 86 | .CodeRay .insert .insert{color:#080} 87 | .CodeRay .delete .delete{color:#800} 88 | .CodeRay .change .change{color:#66f} 89 | .CodeRay .head .head{color:#f4f} -------------------------------------------------------------------------------- /html/css/style.css: -------------------------------------------------------------------------------- 1 | #global-header { position: fixed; top: 0; height: 60px; width: 100%; z-index: 3; background-color: #4F86C6; text-align: center; display: flex; justify-content: center; align-items: center; } 2 | #global-header .inline-block { position: absolute; left: 50%; margin-left: -60px; display: none; } 3 | #global-header .modelnumber { color: #ffffff; font-size: 5vw; font-weight: bold; line-height: 1; width: 70%; } 4 | 5 | #mainimg div img { min-height: 0px; } 6 | 7 | /*******************************************************************************/ 8 | /* drawer.js 9 | /* The MIT License (MIT) 10 | /* Copyright (c) 2014-2015 https://github.com/blivesta/drawer 11 | /* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 12 | /* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 13 | /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 14 | /*******************************************************************************/ 15 | #hamburger-button { position: fixed; left: 0; top: 0; } 16 | 17 | .drawer-hamburger-icon { background-color: #ffffff; } 18 | .drawer-hamburger-icon::after, .drawer-hamburger-icon::before { background-color: #ffffff; } 19 | 20 | .drawer-hamburger.active .drawer-hamburger-icon { background-color: transparent; } 21 | .drawer-hamburger.active .drawer-hamburger-icon:before, .drawer-hamburger.active .drawer-hamburger-icon:after { top: 0; } 22 | .drawer-hamburger.active .drawer-hamburger-icon:before { transform: rotate(45deg); } 23 | .drawer-hamburger.active .drawer-hamburger-icon:after { transform: rotate(-45deg); } 24 | 25 | #drawer-nav-container { position: fixed; display: block; top: 60px; bottom: 0; z-index: 2; -webkit-transition: top 0.6s cubic-bezier(0.19, 1, 0.22, 1); transition: top 0.6s cubic-bezier(0.19, 1, 0.22, 1); } 26 | 27 | #drawer-nav { position: absolute; box-sizing: border-box; -webkit-overflow-scrolling: touch; overflow: auto; top: 0px; bottom: 0; overflow-y: auto; border-right: 1px solid #ddd; box-shadow: 1px 0px 10px rgba(0, 0, 0, 0.2); } 28 | 29 | #drawer-menu { margin: 0; padding: 0; list-style: none; } 30 | 31 | .drawer--left .drawer-nav { left: 0; } 32 | 33 | .drawer-brand a, .drawer-menu-item { color: #262626; font-size: 1.1rem; font-weight: 500; box-sizing: border-box; display: block; text-decoration: none; } 34 | 35 | .drawer-brand i { font-size: 1.1rem; padding-left: .75rem; } 36 | 37 | .drawer-menu-item:focus, .drawer-dropdown-menu-item:focus { color: #4F86C6; } 38 | 39 | .drawer-dropdown-menu { display: block; background-color: inherit; } 40 | .drawer-dropdown-menu > li { box-sizing: border-box; } 41 | 42 | .drawer-dropdown-menu-item { line-height: inherit; padding: 0.4rem; font-size: 1rem; color: #626263; box-sizing: border-box; padding-left: 2.6rem; } 43 | .drawer-dropdown-menu-item.current { font-weight: 500; background-color: #fff; -webkit-box-shadow: 0 1px 4px #555555; box-shadow: 0 1px 4px #555555; padding-left: 1.6rem; } 44 | .drawer-dropdown-menu-item.current:hover { color: #4F86C6; } 45 | 46 | .drawer-brand:hover, .drawer-brand a:hover { color: #4F86C6; } 47 | 48 | .drawer-dropdown:hover, .drawer-menu-item:hover, .drawer-dropdown-menu-item:hover { color: #4F86C6; } 49 | 50 | .drawer-container { top: 60px; } 51 | 52 | #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, #toc a, #toctitle { color: #555555; border-left: solid 5px #4F86C6; padding-left: 10px; } 53 | 54 | #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, #toc a:hover { color: #4F86C6; } 55 | 56 | h1, h2, h3, h4, h5, h6 { margin-top: 1.2em; margin-bottom: 0.7em; } 57 | 58 | #header { padding-left: 0; padding-right: 0; } 59 | #header > h1:only-child { border-bottom: 0; display: none; } 60 | 61 | .indexsubtitle > h3, .partsname > h4 { margin-top: -6rem; } 62 | 63 | h2:before, h3:before, h4:before, h5:before, h6:before { content: ""; display: block; margin-top: -90px; height: 90px; visibility: hidden; } 64 | 65 | .totop { position: fixed; z-index: 4; bottom: 0; right: 0; display: none; box-sizing: content-box; width: 2rem; padding: 0; padding: 20px .75rem 20px; border: 0; outline: 0; background-color: #aaaaaa; } 66 | 67 | .totop-icon { position: relative; display: block; margin: auto; height: 0; width: 0; bottom: 5px; border: 8px solid #000000; border-color: transparent; border-bottom-color: #ffffff; } 68 | 69 | #content { margin-bottom: 3.5rem; } 70 | 71 | #footer { border-top: 4px solid #cccccc; padding-top: 20px; padding-bottom: 20px; box-sizing: border-box; display: block; } 72 | 73 | #footer-text, #copyright { color: #ffffff; font-size: 0.8rem; font-weight: 200; line-height: 0.8rem; box-sizing: border-box; text-align: center; display: block; } 74 | 75 | /* For displays over 41em width. */ 76 | @media (min-width: 41em) { #global-header .modelnumber { position: relative; color: #ffffff; font-size: 2rem; font-weight: bold; width: 60%; display: inline-block; } 77 | #global-header .modelnumber.ru { font-size: 1.6rem; } } 78 | /* For displays over 64em width. */ 79 | @media (min-width: 64em) { #global-header .inline-block { left: 0; margin-left: 10px; display: block; } 80 | #global-header .modelnumber { right: 0; color: #ffffff; font-size: 2.0625rem; /*html=100% 1rem=16px*/ font-weight: bold; padding-right: 10px; word-wrap: break-word; } 81 | #global-header .modelnumber.ru { font-size: 2rem; } 82 | #drawer-nav { width: 12.5em; box-shadow: none; } 83 | #drawer-nav-container { position: fixed; display: block; top: 60px; bottom: 0; z-index: 2; } 84 | #drawer-nav-container.active { position: fixed; display: block; top: 60px; bottom: 0; z-index: 2; } 85 | .h2, h2 { font-size: 2.5rem; color: #4F86C6; } 86 | .h3, h3 { font-size: 2rem; color: #4F86C6; } 87 | .h4, h4 { font-size: 1.75rem; } 88 | .h5, h5 { font-size: 1.5rem; } } 89 | @media (min-width: 75em) { #drawer-nav { width: 16.25em; box-shadow: none; } 90 | #drawer-nav-container { position: fixed; display: block; top: 60px; bottom: 0; z-index: 2; } 91 | #drawer-nav-container.active { position: fixed; display: block; top: 60px; bottom: 0; z-index: 2; } } 92 | body { font-family: 'Roboto', 'Lato', sans-serif, Arial, Osaka; } 93 | -------------------------------------------------------------------------------- /html/en/01_cost-down_extensible.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 |