├── LICENSE ├── README.rst ├── _static ├── freja.css └── normalize.css └── _templates └── layout.html /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright (c) 2016 Dmitrii 'Mamut' Dimandt 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a 5 | copy of this software and associated documentation files (the "Software"), 6 | to deal in the Software without restriction, including without limitation 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, 8 | and/or sell copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in 12 | all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 15 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 | DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | freja — a theme for Sphinx document generator 2 | ============================================= 3 | 4 | This is a simple and (hopefully) clean theme for Sphinx_. 5 | You can see it used `here `_. 6 | Or see screenshots at the bottom of this page. 7 | 8 | How to 9 | ====== 10 | 11 | One of: 12 | 13 | - `download `_ a release and extract it to your Sphinx doc directory. 14 | - ``git clone`` this repo and copy ``freja/_static`` and ``freja/_templates`` to your Sphinx doc directory. 15 | 16 | See templating_ for more info. The relevant bits: 17 | 18 | To customize the output of your documentation you can **override all the templates** 19 | (both the layout templates and the child templates) **by adding files with the same name** 20 | as the original filename **into the template directory** of the structure the Sphinx quickstart 21 | generated for you. 22 | 23 | Sphinx will look for templates in the folders of templates_path first, and if it can’t find 24 | the template it’s looking for there, it falls back to the selected theme’s templates. 25 | 26 | Thus the ``_templates/layout.html``. 27 | 28 | What 29 | ==== 30 | 31 | This theme/layout override might not provide all the bells and whistles of a full-blown theme. 32 | 33 | **It provides**: 34 | 35 | - An overall layout 36 | - ToC for current page 37 | - ToC for overall docs 38 | - Support for class/method/params/fields 39 | - Support for index pages 40 | - Support for the search page 41 | - Support for project logo (set in your conf.py and add image to ``_static``) 42 | - All within one file 43 | 44 | **It does not provide** 45 | 46 | - Full featured support for everything Sphinx has to offer (I don't know what that may be though :) ) 47 | - Extensibility (yet?). It does not inherit from basic theme's layout and does not provide blocks itself 48 | - i18n for hardcoded strings. Once again, not realy using all of Sphinx's features 49 | 50 | Acknowledgements 51 | ================ 52 | 53 | Version 0.2 is based on `Elixir docs `_. 54 | 55 | `Linear Icons `_ licensed under `CC BY-SA 4.0 `_. 56 | 57 | 58 | What it looks like 59 | ================== 60 | 61 | Version 0.2 62 | ----------- 63 | 64 | .. image:: http://dmitriid.com/i/gm2tonzzgqydknjv.png 65 | :width: 800px 66 | 67 | .. image:: http://dmitriid.com/i/gm2toobtgmztonzs.png 68 | :width: 800px 69 | 70 | 71 | Version 0.1 72 | ----------- 73 | 74 | .. image:: http://dmitriid.com/i/gm2tomjxhaydcnrv.png 75 | :width: 800px 76 | 77 | .. _Sphinx: http://www.sphinx-doc.org/ 78 | .. _templating: http://www.sphinx-doc.org/en/stable/templating.html#jinja-sphinx-templating-primer 79 | 80 | -------------------------------------------------------------------------------- /_static/freja.css: -------------------------------------------------------------------------------- 1 | /* 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2016 Dmitrii Dimandt 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | */ 24 | /* Default: all values, big screens */ 25 | @import url(https://fonts.googleapis.com/css?family=Lato:300,700|Merriweather:300italic,300|Inconsolata:400,700); 26 | 27 | @font-face { 28 | font-family: 'icomoon'; 29 | src: url('fonts/icomoon.eot?zf75vy'); 30 | src: url('fonts/icomoon.eot?zf75vy#iefix') format('embedded-opentype'), 31 | url('fonts/icomoon.ttf?zf75vy') format('truetype'), 32 | url('fonts/icomoon.woff?zf75vy') format('woff'), 33 | url('fonts/icomoon.svg?zf75vy#icomoon') format('svg'); 34 | font-weight: normal; 35 | font-style: normal; 36 | } 37 | 38 | [class^="icon-"], [class*=" icon-"] { 39 | /* use !important to prevent issues with browser extensions that change fonts */ 40 | font-family: 'icomoon' !important; 41 | speak: none; 42 | font-style: normal; 43 | font-weight: normal; 44 | font-variant: normal; 45 | text-transform: none; 46 | line-height: 1; 47 | 48 | /* Better Font Rendering =========== */ 49 | -webkit-font-smoothing: antialiased; 50 | -moz-osx-font-smoothing: grayscale; 51 | } 52 | 53 | .icon-link:before { 54 | content: "\e005"; 55 | } 56 | 57 | .icon-search:before { 58 | content: "\e036"; 59 | } 60 | 61 | .icon-cross:before { 62 | content: "\e117"; 63 | } 64 | 65 | .icon-menu:before { 66 | content: "\e120"; 67 | } 68 | 69 | .icon-code:before { 70 | content: "\e901"; 71 | } 72 | 73 | .icon-angle-right:before { 74 | content: "\e900"; 75 | } 76 | 77 | body, html { 78 | box-sizing: border-box; 79 | width: 100% 80 | } 81 | 82 | body { 83 | font-family: Lato, sans-serif; 84 | 85 | margin: 0; 86 | font-size: 16px; 87 | line-height: 1.6875em; 88 | } 89 | 90 | *, :after, :before { 91 | box-sizing: inherit 92 | } 93 | 94 | #container { 95 | display: flex; 96 | flex-direction: row; 97 | } 98 | 99 | @media screen and (max-width: 768px) { 100 | #container { 101 | flex-direction: column-reverse; 102 | } 103 | } 104 | 105 | .sidebar { 106 | font-size: 14px; 107 | line-height: 18px; 108 | background: #373f52; 109 | color: #d5dae6; 110 | overflow: hidden; 111 | 112 | min-width: 300px; 113 | padding: 23px 30px; 114 | } 115 | 116 | .sidebar a { 117 | color: #d5dae6; 118 | text-decoration: none 119 | } 120 | 121 | .sidebar a:hover { 122 | color: #FFF 123 | } 124 | 125 | .sidebar .sidebar-projectDetails { 126 | display: inline-block; 127 | text-align: right; 128 | vertical-align: top; 129 | margin-top: 6px 130 | } 131 | 132 | .sidebar .sidebar-projectImage { 133 | display: inline-block; 134 | max-width: 64px; 135 | max-height: 64px; 136 | margin-left: 15px; 137 | vertical-align: bottom 138 | } 139 | 140 | .sidebar .sidebar-projectName { 141 | font-weight: 700; 142 | font-size: 24px; 143 | line-height: 30px; 144 | color: #FFF; 145 | margin: 0; 146 | padding: 0; 147 | max-width: 155px 148 | } 149 | 150 | .sidebar .sidebar-projectVersion { 151 | margin: 0; 152 | padding: 0; 153 | font-weight: 300; 154 | font-size: 16px; 155 | line-height: 20px; 156 | color: #FFF 157 | } 158 | 159 | .sidebar .sidebar-search .sidebar-searchInput, .sidebar .sidebar-search .sidebar-searchInput:focus, .sidebar .sidebar-search .sidebar-searchInput:hover, a.current, a:hover { 160 | outline: 0; 161 | color: inherit; 162 | } 163 | 164 | .sidebar .sidebar-search { 165 | margin: 23px 0 18px; 166 | display: -ms-flexbox; 167 | display: -ms-flex; 168 | display: flex; 169 | } 170 | 171 | .sidebar .sidebar-search i.icon-search { 172 | font-size: 14px; 173 | color: #d5dae6; 174 | } 175 | 176 | .sidebar .sidebar-search .sidebar-searchInput { 177 | background-color: transparent; 178 | border: none; 179 | border-radius: 0; 180 | border-bottom: 1px solid #959595; 181 | margin-left: 5px; 182 | height: 20px; 183 | } 184 | 185 | .sidebar ul { 186 | list-style-type: none; 187 | padding: 0; 188 | } 189 | 190 | .sidebar .sidebar-listNav li, 191 | .sidebar .sidebar-listNav li a, 192 | .full-list h1 { 193 | text-transform: uppercase; 194 | font-weight: 300; 195 | font-size: 13px; 196 | } 197 | 198 | .full-list h1 { 199 | margin: 0 20px; 200 | padding: 9px 0 0; 201 | } 202 | 203 | .sidebar .sidebar-listNav li { 204 | padding-left: 17px; 205 | border-left: 3px solid transparent; 206 | transition: all .3s linear; 207 | line-height: 27px; 208 | } 209 | 210 | .sidebar .sidebar-listNav li.current, .sidebar .sidebar-listNav li.current a, .sidebar .sidebar-listNav li:hover, .sidebar .sidebar-listNav li:hover a { 211 | border-color: #9768d1; 212 | color: #FFF; 213 | } 214 | 215 | .sidebar .full-list li.clicked > a, .sidebar .full-list ul li.current > a { 216 | color: #FFF 217 | } 218 | 219 | .sidebar .full-list { 220 | overflow-y: auto; 221 | -webkit-overflow-scrolling: touch; 222 | -moz-flex: 1 1 .01%; 223 | -ms-flex: 1 1 .01%; 224 | flex: 1 1 .01%; 225 | -ms-flex-positive: 1; 226 | -ms-flex-negative: 1; 227 | -ms-flex-preferred-size: .01% 228 | } 229 | 230 | .sidebar .full-list ul { 231 | margin: 0 20px; 232 | padding: 9px 0 18px 233 | } 234 | 235 | .sidebar .full-list ul li { 236 | font-weight: 300; 237 | line-height: 18px 238 | } 239 | 240 | /* 241 | .sidebar .full-list ul li ul { 242 | display: none; 243 | padding: 9px 0 244 | } 245 | */ 246 | 247 | .sidebar .full-list ul li ul li ul li { 248 | border-left: 1px solid #959595; 249 | padding: 0 10px 250 | } 251 | 252 | .sidebar .full-list ul li ul li ul li.current { 253 | border-left: none; 254 | } 255 | 256 | .sidebar .full-list ul li ul li ul li.current:before { 257 | font-family: icomoon; 258 | speak: none; 259 | font-style: normal; 260 | font-weight: 400; 261 | font-variant: normal; 262 | text-transform: none; 263 | line-height: 1; 264 | -webkit-font-smoothing: antialiased; 265 | -moz-osx-font-smoothing: grayscale; 266 | content: "\e900"; 267 | margin-left: -16px; 268 | font-size: 16px; 269 | margin-right: 0px; 270 | border-left: none; 271 | } 272 | 273 | .sidebar .full-list ul li.current { 274 | border-left: none 275 | } 276 | 277 | .sidebar .full-list ul li.current ul { 278 | display: block 279 | } 280 | 281 | .sidebar .full-list li { 282 | padding: 0; 283 | line-height: 27px 284 | } 285 | 286 | .sidebar .full-list li.collapsed ul { 287 | display: none 288 | } 289 | 290 | .content { 291 | width: 100%; 292 | overflow-y: auto; 293 | -webkit-overflow-scrolling: touch; 294 | position: relative; 295 | z-index: 3; 296 | margin: 0 auto; 297 | padding: 3px 60px; 298 | background-color: #FFF; 299 | 300 | font-family: Merriweather, serif; 301 | font-size: 1em; 302 | line-height: 1.6875em 303 | } 304 | 305 | @media screen and (max-width: 768px) { 306 | body .content { 307 | z-index: 0; 308 | padding-left: 0; 309 | padding: 27px 20px 27px 40px; 310 | } 311 | } 312 | 313 | .content h1, .content h2, .content h3, .content h4, .content h5, .content h6 { 314 | font-family: Lato, sans-serif; 315 | font-weight: 700; 316 | line-height: 1.5em; 317 | word-wrap: break-word 318 | } 319 | 320 | .content h1 { 321 | font-size: 2em; 322 | margin: 1em 0 .5em 323 | } 324 | 325 | .content h2 { 326 | font-size: 1.625em; 327 | margin: 1em 0 .5em; 328 | font-weight: 700 329 | } 330 | 331 | .content h3 { 332 | font-size: 1.375em; 333 | margin: 1em 0 .5em; 334 | font-weight: 700 335 | } 336 | 337 | .content a { 338 | color: #000; 339 | text-decoration: none; 340 | text-shadow: .03em 0 #FFF, -.03em 0 #FFF, 0 .03em #FFF, 0 -.03em #FFF, .06em 0 #FFF, -.06em 0 #FFF, .09em 0 #FFF, -.09em 0 #FFF, .12em 0 #FFF, -.12em 0 #FFF, .15em 0 #FFF, -.15em 0 #FFF; 341 | background-image: linear-gradient(#FFF, #FFF), linear-gradient(#FFF, #FFF), linear-gradient(#000, #000); 342 | background-size: .05em 1px, .05em 1px, 1px 1px; 343 | background-repeat: no-repeat, no-repeat, repeat-x; 344 | background-position: 0 90%, 100% 90%, 0 90% 345 | } 346 | 347 | .content a:selection { 348 | text-shadow: .03em 0 #b4d5fe, -.03em 0 #b4d5fe, 0 .03em #b4d5fe, 0 -.03em #b4d5fe, .06em 0 #b4d5fe, -.06em 0 #b4d5fe, .09em 0 #b4d5fe, -.09em 0 #b4d5fe, .12em 0 #b4d5fe, -.12em 0 #b4d5fe, .15em 0 #b4d5fe, -.15em 0 #b4d5fe; 349 | background: #b4d5fe 350 | } 351 | 352 | .content a:-moz-selection { 353 | text-shadow: .03em 0 #b4d5fe, -.03em 0 #b4d5fe, 0 .03em #b4d5fe, 0 -.03em #b4d5fe, .06em 0 #b4d5fe, -.06em 0 #b4d5fe, .09em 0 #b4d5fe, -.09em 0 #b4d5fe, .12em 0 #b4d5fe, -.12em 0 #b4d5fe, .15em 0 #b4d5fe, -.15em 0 #b4d5fe; 354 | background: #b4d5fe 355 | } 356 | 357 | .content a *, .content a :after, .content a :before, .content a:after, .content a:before { 358 | text-shadow: none 359 | } 360 | 361 | .content a:visited { 362 | color: #000 363 | } 364 | 365 | .content ul li { 366 | line-height: 1.5em 367 | } 368 | 369 | .content ul li > p { 370 | margin: 0 371 | } 372 | 373 | .content blockquote { 374 | font-style: italic; 375 | margin: .5em 0; 376 | padding: .25em 1.5em; 377 | border-left: 3px solid #e1e1e1; 378 | display: inline-block 379 | } 380 | 381 | .content blockquote :first-child { 382 | padding-top: 0; 383 | margin-top: 0 384 | } 385 | 386 | .content blockquote :last-child { 387 | padding-bottom: 0; 388 | margin-bottom: 0 389 | } 390 | 391 | .content table { 392 | margin: 2em 0 393 | } 394 | 395 | .content th { 396 | text-align: left; 397 | font-family: Lato, sans-serif; 398 | text-transform: uppercase; 399 | font-weight: 700; 400 | padding-bottom: .5em 401 | } 402 | 403 | .content tr { 404 | border-bottom: 1px solid #d5dae6; 405 | vertical-align: bottom; 406 | height: 2.5em 407 | } 408 | 409 | .content td, .content th { 410 | padding-left: 1em; 411 | line-height: 2em 412 | } 413 | 414 | th.field-name { 415 | vertical-align: top; 416 | padding-left: 0; 417 | } 418 | 419 | td.field-body ul { 420 | margin-top: 0; 421 | } 422 | 423 | .content code, 424 | .content pre, 425 | .content .section dl dt { 426 | font-family: Inconsolata, Menlo, Courier, monospace 427 | } 428 | 429 | .content a.headerlink { 430 | color: #fff; 431 | padding: .6em; 432 | line-height: 1.5em; 433 | margin-left: -0.3em; 434 | border: none; 435 | text-shadow: none; 436 | background: none 0 0; 437 | font-size: 0.7em; 438 | } 439 | 440 | .content h1:hover a.headerlink:before, 441 | .content h2:hover a.headerlink:before, 442 | .content h3:hover a.headerlink:before { 443 | opacity: 1; 444 | text-decoration: none; 445 | } 446 | 447 | .content a.headerlink:before { 448 | transition: opacity .3s ease-in-out; 449 | opacity: 0; 450 | content: "\e005"; 451 | color: #d5dae6; 452 | 453 | font-family: icomoon; 454 | speak: none; 455 | font-style: normal; 456 | font-variant: normal; 457 | text-transform: none; 458 | -webkit-font-smoothing: antialiased; 459 | -moz-osx-font-smoothing: grayscale; 460 | } 461 | 462 | .content .section dl dt { 463 | margin: 1.5em 0 .5em; 464 | padding: .5em 1em; 465 | background: #f7f7f7; 466 | border-left: 3px solid #9768d1; 467 | font-size: 1em; 468 | position: relative 469 | } 470 | 471 | .content .section dl dd { 472 | margin-bottom: 3.5em; 473 | } 474 | 475 | .content .section dl dd h2, 476 | .content .section dl dd h3, 477 | .content .section dl dd h4, 478 | .content .section dl dd h5 { 479 | font-weight: 700 480 | } 481 | 482 | .content .section dl dd h2 { 483 | font-size: 1em 484 | } 485 | 486 | .content .section dl dd h3 { 487 | font-size: .95em 488 | } 489 | 490 | .content .section dl dd h4 { 491 | font-size: .9em 492 | } 493 | 494 | .content .section dl dd h5 { 495 | font-size: .85em 496 | } 497 | 498 | .content code a, .content a code { 499 | color: #9768d1; 500 | text-shadow: none; 501 | background-image: none 502 | } 503 | 504 | .content code a:active, .content code a:focus, .content code a:hover, .content code a:visited, 505 | .content a:active code, .content a:focus code, .content a:hover code, .content a:visited code { 506 | color: #9768d1 507 | } 508 | 509 | .content code a:hover, .content a:hover code { 510 | text-decoration: none; 511 | border-bottom: 1px solid #9768d1 512 | } 513 | 514 | .content code { 515 | font-size: 15px; 516 | font-style: normal; 517 | line-height: 24px; 518 | font-weight: 400; 519 | background-color: #f7f9fc; 520 | border: 1px solid #e1e1e1; 521 | vertical-align: baseline; 522 | border-radius: 2px; 523 | padding: 0 .5em 524 | } 525 | 526 | .content .section dl dt code { 527 | border: none; 528 | background: transparent; 529 | font-size: 1em; 530 | padding: 0; 531 | } 532 | 533 | .content pre { 534 | margin: 1.5em 0; 535 | overflow-x: scroll; 536 | padding: 1em 1.5em; 537 | background-color: #f7f9fc 538 | } 539 | 540 | #search-results h2:first-child, 541 | #search-results p:first-child, 542 | #search-results ul:first-child { 543 | display: none; 544 | } 545 | 546 | .content .highlighted { 547 | color: #9768d1; 548 | 549 | } 550 | 551 | #search-results ul { 552 | margin: 0; 553 | padding: 0; 554 | list-style-type: none; 555 | } 556 | 557 | #search-results .context { 558 | padding-left: 2em; 559 | } 560 | 561 | 562 | #search-results li span:not([class~="highlighted"]) { 563 | padding-left: 2em; 564 | display: block; 565 | } 566 | 567 | #search-results a:active, #search-results a:focus, #search-results a:visited { 568 | color: #000 569 | } 570 | 571 | .results .result-id a:hover { 572 | color: #9768d1 573 | } 574 | 575 | .content div.index-nav { 576 | display: flex; 577 | flex-direction: row; 578 | } 579 | 580 | .content div.index-letter { 581 | padding: 0 1em 582 | } 583 | 584 | .content div.index-letter:first-child { 585 | padding-left: 0; 586 | } 587 | 588 | footer { 589 | margin: 14em auto 1em; 590 | text-align: center; 591 | font-style: italic; 592 | font-size: 14px; 593 | color: #959595 594 | } 595 | 596 | .content footer a { 597 | color: #959595; 598 | text-decoration: none; 599 | text-shadow: .03em 0 #FFF, -.03em 0 #FFF, 0 .03em #FFF, 0 -.03em #FFF, .06em 0 #FFF, -.06em 0 #FFF, .09em 0 #FFF, -.09em 0 #FFF, .12em 0 #FFF, -.12em 0 #FFF, .15em 0 #FFF, -.15em 0 #FFF; 600 | background-image: linear-gradient(#FFF, #FFF), linear-gradient(#FFF, #FFF), linear-gradient(#959595, #959595); 601 | background-size: .05em 1px, .05em 1px, 1px 1px; 602 | background-repeat: no-repeat, no-repeat, repeat-x; 603 | background-position: 0 90%, 100% 90%, 0 90% 604 | } 605 | 606 | .content footer a:selection { 607 | text-shadow: .03em 0 #b4d5fe, -.03em 0 #b4d5fe, 0 .03em #b4d5fe, 0 -.03em #b4d5fe, .06em 0 #b4d5fe, -.06em 0 #b4d5fe, .09em 0 #b4d5fe, -.09em 0 #b4d5fe, .12em 0 #b4d5fe, -.12em 0 #b4d5fe, .15em 0 #b4d5fe, -.15em 0 #b4d5fe; 608 | background: #b4d5fe 609 | } 610 | 611 | .content footer a:-moz-selection { 612 | text-shadow: .03em 0 #b4d5fe, -.03em 0 #b4d5fe, 0 .03em #b4d5fe, 0 -.03em #b4d5fe, .06em 0 #b4d5fe, -.06em 0 #b4d5fe, .09em 0 #b4d5fe, -.09em 0 #b4d5fe, .12em 0 #b4d5fe, -.12em 0 #b4d5fe, .15em 0 #b4d5fe, -.15em 0 #b4d5fe; 613 | background: #b4d5fe 614 | } 615 | 616 | .content footer a *, .content footer a :after, .content footer a :before, .content footer a:after, .content footer a:before { 617 | text-shadow: none 618 | } 619 | 620 | .content footer a:visited { 621 | color: #959595 622 | } 623 | 624 | @media print { 625 | .sidebar { 626 | display: none 627 | } 628 | } 629 | -------------------------------------------------------------------------------- /_static/normalize.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */ 2 | 3 | /** 4 | * 1. Change the default font family in all browsers (opinionated). 5 | * 2. Prevent adjustments of font size after orientation changes in IE and iOS. 6 | */ 7 | 8 | html { 9 | font-family: sans-serif; /* 1 */ 10 | -ms-text-size-adjust: 100%; /* 2 */ 11 | -webkit-text-size-adjust: 100%; /* 2 */ 12 | } 13 | 14 | /** 15 | * Remove the margin in all browsers (opinionated). 16 | */ 17 | 18 | body { 19 | margin: 0; 20 | } 21 | 22 | /* HTML5 display definitions 23 | ========================================================================== */ 24 | 25 | /** 26 | * Add the correct display in IE 9-. 27 | * 1. Add the correct display in Edge, IE, and Firefox. 28 | * 2. Add the correct display in IE. 29 | */ 30 | 31 | article, 32 | aside, 33 | details, /* 1 */ 34 | figcaption, 35 | figure, 36 | footer, 37 | header, 38 | main, /* 2 */ 39 | menu, 40 | nav, 41 | section, 42 | summary { /* 1 */ 43 | display: block; 44 | } 45 | 46 | /** 47 | * Add the correct display in IE 9-. 48 | */ 49 | 50 | audio, 51 | canvas, 52 | progress, 53 | video { 54 | display: inline-block; 55 | } 56 | 57 | /** 58 | * Add the correct display in iOS 4-7. 59 | */ 60 | 61 | audio:not([controls]) { 62 | display: none; 63 | height: 0; 64 | } 65 | 66 | /** 67 | * Add the correct vertical alignment in Chrome, Firefox, and Opera. 68 | */ 69 | 70 | progress { 71 | vertical-align: baseline; 72 | } 73 | 74 | /** 75 | * Add the correct display in IE 10-. 76 | * 1. Add the correct display in IE. 77 | */ 78 | 79 | template, /* 1 */ 80 | [hidden] { 81 | display: none; 82 | } 83 | 84 | /* Links 85 | ========================================================================== */ 86 | 87 | /** 88 | * 1. Remove the gray background on active links in IE 10. 89 | * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. 90 | */ 91 | 92 | a { 93 | background-color: transparent; /* 1 */ 94 | -webkit-text-decoration-skip: objects; /* 2 */ 95 | } 96 | 97 | /** 98 | * Remove the outline on focused links when they are also active or hovered 99 | * in all browsers (opinionated). 100 | */ 101 | 102 | a:active, 103 | a:hover { 104 | outline-width: 0; 105 | } 106 | 107 | /* Text-level semantics 108 | ========================================================================== */ 109 | 110 | /** 111 | * 1. Remove the bottom border in Firefox 39-. 112 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. 113 | */ 114 | 115 | abbr[title] { 116 | border-bottom: none; /* 1 */ 117 | text-decoration: underline; /* 2 */ 118 | text-decoration: underline dotted; /* 2 */ 119 | } 120 | 121 | /** 122 | * Prevent the duplicate application of `bolder` by the next rule in Safari 6. 123 | */ 124 | 125 | b, 126 | strong { 127 | font-weight: inherit; 128 | } 129 | 130 | /** 131 | * Add the correct font weight in Chrome, Edge, and Safari. 132 | */ 133 | 134 | b, 135 | strong { 136 | font-weight: bolder; 137 | } 138 | 139 | /** 140 | * Add the correct font style in Android 4.3-. 141 | */ 142 | 143 | dfn { 144 | font-style: italic; 145 | } 146 | 147 | /** 148 | * Correct the font size and margin on `h1` elements within `section` and 149 | * `article` contexts in Chrome, Firefox, and Safari. 150 | */ 151 | 152 | h1 { 153 | font-size: 2em; 154 | margin: 0.67em 0; 155 | } 156 | 157 | /** 158 | * Add the correct background and color in IE 9-. 159 | */ 160 | 161 | mark { 162 | background-color: #ff0; 163 | color: #000; 164 | } 165 | 166 | /** 167 | * Add the correct font size in all browsers. 168 | */ 169 | 170 | small { 171 | font-size: 80%; 172 | } 173 | 174 | /** 175 | * Prevent `sub` and `sup` elements from affecting the line height in 176 | * all browsers. 177 | */ 178 | 179 | sub, 180 | sup { 181 | font-size: 75%; 182 | line-height: 0; 183 | position: relative; 184 | vertical-align: baseline; 185 | } 186 | 187 | sub { 188 | bottom: -0.25em; 189 | } 190 | 191 | sup { 192 | top: -0.5em; 193 | } 194 | 195 | /* Embedded content 196 | ========================================================================== */ 197 | 198 | /** 199 | * Remove the border on images inside links in IE 10-. 200 | */ 201 | 202 | img { 203 | border-style: none; 204 | } 205 | 206 | /** 207 | * Hide the overflow in IE. 208 | */ 209 | 210 | svg:not(:root) { 211 | overflow: hidden; 212 | } 213 | 214 | /* Grouping content 215 | ========================================================================== */ 216 | 217 | /** 218 | * 1. Correct the inheritance and scaling of font size in all browsers. 219 | * 2. Correct the odd `em` font sizing in all browsers. 220 | */ 221 | 222 | code, 223 | kbd, 224 | pre, 225 | samp { 226 | font-family: monospace, monospace; /* 1 */ 227 | font-size: 1em; /* 2 */ 228 | } 229 | 230 | /** 231 | * Add the correct margin in IE 8. 232 | */ 233 | 234 | figure { 235 | margin: 1em 40px; 236 | } 237 | 238 | /** 239 | * 1. Add the correct box sizing in Firefox. 240 | * 2. Show the overflow in Edge and IE. 241 | */ 242 | 243 | hr { 244 | box-sizing: content-box; /* 1 */ 245 | height: 0; /* 1 */ 246 | overflow: visible; /* 2 */ 247 | } 248 | 249 | /* Forms 250 | ========================================================================== */ 251 | 252 | /** 253 | * 1. Change font properties to `inherit` in all browsers (opinionated). 254 | * 2. Remove the margin in Firefox and Safari. 255 | */ 256 | 257 | button, 258 | input, 259 | select, 260 | textarea { 261 | font: inherit; /* 1 */ 262 | margin: 0; /* 2 */ 263 | } 264 | 265 | /** 266 | * Restore the font weight unset by the previous rule. 267 | */ 268 | 269 | optgroup { 270 | font-weight: bold; 271 | } 272 | 273 | /** 274 | * Show the overflow in IE. 275 | * 1. Show the overflow in Edge. 276 | */ 277 | 278 | button, 279 | input { /* 1 */ 280 | overflow: visible; 281 | } 282 | 283 | /** 284 | * Remove the inheritance of text transform in Edge, Firefox, and IE. 285 | * 1. Remove the inheritance of text transform in Firefox. 286 | */ 287 | 288 | button, 289 | select { /* 1 */ 290 | text-transform: none; 291 | } 292 | 293 | /** 294 | * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` 295 | * controls in Android 4. 296 | * 2. Correct the inability to style clickable types in iOS and Safari. 297 | */ 298 | 299 | button, 300 | html [type="button"], /* 1 */ 301 | [type="reset"], 302 | [type="submit"] { 303 | -webkit-appearance: button; /* 2 */ 304 | } 305 | 306 | /** 307 | * Remove the inner border and padding in Firefox. 308 | */ 309 | 310 | button::-moz-focus-inner, 311 | [type="button"]::-moz-focus-inner, 312 | [type="reset"]::-moz-focus-inner, 313 | [type="submit"]::-moz-focus-inner { 314 | border-style: none; 315 | padding: 0; 316 | } 317 | 318 | /** 319 | * Restore the focus styles unset by the previous rule. 320 | */ 321 | 322 | button:-moz-focusring, 323 | [type="button"]:-moz-focusring, 324 | [type="reset"]:-moz-focusring, 325 | [type="submit"]:-moz-focusring { 326 | outline: 1px dotted ButtonText; 327 | } 328 | 329 | /** 330 | * Change the border, margin, and padding in all browsers (opinionated). 331 | */ 332 | 333 | fieldset { 334 | border: 1px solid #c0c0c0; 335 | margin: 0 2px; 336 | padding: 0.35em 0.625em 0.75em; 337 | } 338 | 339 | /** 340 | * 1. Correct the text wrapping in Edge and IE. 341 | * 2. Correct the color inheritance from `fieldset` elements in IE. 342 | * 3. Remove the padding so developers are not caught out when they zero out 343 | * `fieldset` elements in all browsers. 344 | */ 345 | 346 | legend { 347 | box-sizing: border-box; /* 1 */ 348 | color: inherit; /* 2 */ 349 | display: table; /* 1 */ 350 | max-width: 100%; /* 1 */ 351 | padding: 0; /* 3 */ 352 | white-space: normal; /* 1 */ 353 | } 354 | 355 | /** 356 | * Remove the default vertical scrollbar in IE. 357 | */ 358 | 359 | textarea { 360 | overflow: auto; 361 | } 362 | 363 | /** 364 | * 1. Add the correct box sizing in IE 10-. 365 | * 2. Remove the padding in IE 10-. 366 | */ 367 | 368 | [type="checkbox"], 369 | [type="radio"] { 370 | box-sizing: border-box; /* 1 */ 371 | padding: 0; /* 2 */ 372 | } 373 | 374 | /** 375 | * Correct the cursor style of increment and decrement buttons in Chrome. 376 | */ 377 | 378 | [type="number"]::-webkit-inner-spin-button, 379 | [type="number"]::-webkit-outer-spin-button { 380 | height: auto; 381 | } 382 | 383 | /** 384 | * 1. Correct the odd appearance in Chrome and Safari. 385 | * 2. Correct the outline style in Safari. 386 | */ 387 | 388 | [type="search"] { 389 | -webkit-appearance: textfield; /* 1 */ 390 | outline-offset: -2px; /* 2 */ 391 | } 392 | 393 | /** 394 | * Remove the inner padding and cancel buttons in Chrome and Safari on OS X. 395 | */ 396 | 397 | [type="search"]::-webkit-search-cancel-button, 398 | [type="search"]::-webkit-search-decoration { 399 | -webkit-appearance: none; 400 | } 401 | 402 | /** 403 | * Correct the text style of placeholders in Chrome, Edge, and Safari. 404 | */ 405 | 406 | ::-webkit-input-placeholder { 407 | color: inherit; 408 | opacity: 0.54; 409 | } 410 | 411 | /** 412 | * 1. Correct the inability to style clickable types in iOS and Safari. 413 | * 2. Change font properties to `inherit` in Safari. 414 | */ 415 | 416 | ::-webkit-file-upload-button { 417 | -webkit-appearance: button; /* 1 */ 418 | font: inherit; /* 2 */ 419 | } 420 | -------------------------------------------------------------------------------- /_templates/layout.html: -------------------------------------------------------------------------------- 1 | {# 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2016 Dmitrii Dimandt 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | #} 24 | 25 | {% set toctree1 = toctree(maxdepth=1, collapse=False, includehidden=True) %} 26 | {% set toctree3 = toctree(maxdepth=3, collapse=False, includehidden=True) %} 27 | {% set toctree = toctree(maxdepth=3, collapse=False, includehidden=True) %} 28 | {% set script_files = script_files + ['_static/searchtools.js'] %} 29 | 30 | 31 | 32 | 33 | 34 | 35 | {{ title|striptags|e }} | {{ docstitle|e }} 36 | 37 | 38 | {%- if use_opensearch %} 39 | 42 | {%- endif %} 43 | {%- if favicon %} 44 | 45 | {%- endif %} 46 | {%- block linktags %} 47 | {%- if hasdoc('about') %} 48 | 50 | {%- endif %} 51 | {%- if hasdoc('genindex') %} 52 | 53 | {%- endif %} 54 | {%- if hasdoc('search') %} 55 | 56 | {%- endif %} 57 | {%- if hasdoc('copyright') %} 58 | 59 | {%- endif %} 60 | 61 | {%- if parents %} 62 | 64 | {%- endif %} 65 | {%- if next %} 66 | 67 | {%- endif %} 68 | {%- if prev %} 69 | 70 | {%- endif %} 71 | {%- endblock %} 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 90 | {%- for scriptfile in script_files %} 91 | 92 | {%- endfor %} 93 | 100 | {# this is used when loading the search index using $.ajax fails, 101 | such as on Chrome for documents on localhost #} 102 | 103 | 104 | 105 |
106 | 146 |
147 | {{ body }} 148 |
149 |
150 | {% if genindexentries %} 151 | {% macro indexentries(firstname, links) %} 152 | {%- if links -%} 153 | 154 | {%- if links[0][0] %}{% endif -%} 155 | {{ firstname|e }} 156 | {%- if links[0][0] %}{% endif -%} 157 | 158 | 159 | {%- for ismain, link in links[1:] -%} 160 | , {% if ismain %}{% endif -%} 161 | [{{ loop.index }}] 162 | {%- if ismain %}{% endif -%} 163 | 164 | {%- endfor %} 165 | {%- else %} 166 | {{ firstname|e }} 167 | {%- endif %} 168 | {% endmacro %} 169 | 170 |

Index

171 | 172 |
173 | {% for key, dummy in genindexentries -%} 174 |
175 | {{ key }} 176 |
177 | {% if not loop.last %}| {% endif %} 178 | {%- endfor %} 179 |
180 | 181 | {%- for key, entries in genindexentries %} 182 |

{{ key }}

183 |
184 | {%- for entryname, (links, subitems, _) in entries %} 185 |
186 | {{ indexentries(entryname, links) }} 187 | {%- if subitems %} 188 |
189 | {%- for subentryname, subentrylinks in subitems %} 190 | {{ indexentries(subentryname, subentrylinks) }} 191 | {%- endfor %} 192 |
193 | {%- endif -%} 194 | 195 |
196 | {%- endfor %} 197 |
198 | {% endfor %} 199 | {% endif %} 200 | 231 |
232 |
233 | 234 | 235 | --------------------------------------------------------------------------------