1<!DOCTYPE html> 2 3<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> 4 5<head> 6 <meta charset="utf-8"/> 7 <meta name="viewport" content="width=device-width, initial-scale=1"/> 8 <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"/> 9 <meta name="generator" content="distill" /> 10 <link rel="alternate" type="application/rss+xml" href="https://dwayzer.netlify.app/index.xml" /> 11 12 <style type="text/css"> 13 /* Hide doc at startup (prevent jankiness while JS renders/transforms) */ 14 body { 15 visibility: hidden; 16 } 17 </style> 18 19 <!--radix_placeholder_import_source--> 20 <!--/radix_placeholder_import_source--> 21 22<style type="text/css">code{white-space: pre;}</style> 23<style type="text/css" data-origin="pandoc"> 24pre > code.sourceCode { white-space: pre; position: relative; } 25pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } 26pre > code.sourceCode > span:empty { height: 1.2em; } 27.sourceCode { overflow: visible; } 28code.sourceCode > span { color: inherit; text-decoration: inherit; } 29div.sourceCode { margin: 1em 0; } 30pre.sourceCode { margin: 0; } 31@media screen { 32div.sourceCode { overflow: auto; } 33} 34@media print { 35pre > code.sourceCode { white-space: pre-wrap; } 36pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } 37} 38pre.numberSource code 39 { counter-reset: source-line 0; } 40pre.numberSource code > span 41 { position: relative; left: -4em; counter-increment: source-line; } 42pre.numberSource code > span > a:first-child::before 43 { content: counter(source-line); 44 position: relative; left: -1em; text-align: right; vertical-align: baseline; 45 border: none; display: inline-block; 46 -webkit-touch-callout: none; -webkit-user-select: none; 47 -khtml-user-select: none; -moz-user-select: none; 48 -ms-user-select: none; user-select: none; 49 padding: 0 4px; width: 4em; 50 color: #aaaaaa; 51 } 52pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; } 53div.sourceCode 54 { color: #00769e; background-color: #f1f3f5; } 55@media screen { 56pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } 57} 58code span { color: #00769e; } /* Normal */ 59code span.al { color: #ad0000; } /* Alert */ 60code span.an { color: #5e5e5e; } /* Annotation */ 61code span.at { color: #657422; } /* Attribute */ 62code span.bn { color: #ad0000; } /* BaseN */ 63code span.bu { } /* BuiltIn */ 64code span.cf { color: #00769e; } /* ControlFlow */ 65code span.ch { color: #20794d; } /* Char */ 66code span.cn { color: #8f5902; } /* Constant */ 67code span.co { color: #5e5e5e; } /* Comment */ 68code span.cv { color: #5e5e5e; font-style: italic; } /* CommentVar */ 69code span.do { color: #5e5e5e; font-style: italic; } /* Documentation */ 70code span.dt { color: #ad0000; } /* DataType */ 71code span.dv { color: #ad0000; } /* DecVal */ 72code span.er { color: #ad0000; } /* Error */ 73code span.ex { } /* Extension */ 74code span.fl { color: #ad0000; } /* Float */ 75code span.fu { color: #4758ab; } /* Function */ 76code span.im { } /* Import */ 77code span.in { color: #5e5e5e; } /* Information */ 78code span.kw { color: #00769e; } /* Keyword */ 79code span.op { color: #5e5e5e; } /* Operator */ 80code span.ot { color: #00769e; } /* Other */ 81code span.pp { color: #ad0000; } /* Preprocessor */ 82code span.sc { color: #5e5e5e; } /* SpecialChar */ 83code span.ss { color: #20794d; } /* SpecialString */ 84code span.st { color: #20794d; } /* String */ 85code span.va { color: #111111; } /* Variable */ 86code span.vs { color: #20794d; } /* VerbatimString */ 87code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */ 88</style> 89 90 91 <!--radix_placeholder_meta_tags--> 92 <title>ConviviaR Tools: dwayzeR</title> 93 94 95 96 97 <!-- https://developers.facebook.com/docs/sharing/webmasters#markup --> 98 <meta property="og:title" content="ConviviaR Tools: dwayzeR"/> 99 <meta property="og:type" content="article"/> 100 <meta property="og:locale" content="en_US"/> 101 <meta property="og:site_name" content="ConviviaR Tools"/> 102 103 <!-- https://dev.twitter.com/cards/types/summary --> 104 <meta property="twitter:card" content="summary"/> 105 <meta property="twitter:title" content="ConviviaR Tools: dwayzeR"/> 106 107 <!--/radix_placeholder_meta_tags--> 108 <!--radix_placeholder_rmarkdown_metadata--> 109 110
110<script type="text/json" id="radix-rmarkdown-metadata"> 111 {"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["title","site","listing"]}},"value":[{"type":"character","attributes":{},"value":["dwayzeR"]},{"type":"character","attributes":{},"value":["distill::distill_website"]},{"type":"character","attributes":{},"value":["posts"]}]} 112 </script>
112 113 <!--/radix_placeholder_rmarkdown_metadata--> 114 <!--radix_placeholder_navigation_in_header--> 115 <meta name="distill:offset" content=""/> 116 117
117<script type="application/javascript"> 118 119 window.headroom_prevent_pin = false; 120 121 window.document.addEventListener("DOMContentLoaded", function (event) { 122 123 // initialize headroom for banner 124 var header = $('header').get(0); 125 var headerHeight = header.offsetHeight; 126 var headroom = new Headroom(header, { 127 tolerance: 5, 128 onPin : function() { 129 if (window.headroom_prevent_pin) { 130 window.headroom_prevent_pin = false; 131 headroom.unpin(); 132 } 133 } 134 }); 135 headroom.init(); 136 if(window.location.hash) 137 headroom.unpin(); 138 $(header).addClass('headroom--transition'); 139 140 // offset scroll location for banner on hash change 141 // (see: https://github.com/WickyNilliams/headroom.js/issues/38) 142 window.addEventListener("hashchange", function(event) { 143 window.scrollTo(0, window.pageYOffset - (headerHeight + 25)); 144 }); 145 146 // responsive menu 147 $('.distill-site-header').each(function(i, val) { 148 var topnav = $(this); 149 var toggle = topnav.find('.nav-toggle'); 150 toggle.on('click', function() { 151 topnav.toggleClass('responsive'); 152 }); 153 }); 154 155 // nav dropdowns 156 $('.nav-dropbtn').click(function(e) { 157 $(this).next('.nav-dropdown-content').toggleClass('nav-dropdown-active'); 158 $(this).parent().siblings('.nav-dropdown') 159 .children('.nav-dropdown-content').removeClass('nav-dropdown-active'); 160 }); 161 $("body").click(function(e){ 162 $('.nav-dropdown-content').removeClass('nav-dropdown-active'); 163 }); 164 $(".nav-dropdown").click(function(e){ 165 e.stopPropagation(); 166 }); 167 }); 168 </script>
168 169 170 <style type="text/css"> 171 172 /* Theme (user-documented overrideables for nav appearance) */ 173 174 .distill-site-nav { 175 color: rgba(255, 255, 255, 0.8); 176 background-color: #0F2E3D; 177 font-size: 15px; 178 font-weight: 300; 179 } 180 181 .distill-site-nav a { 182 color: inherit; 183 text-decoration: none; 184 } 185 186 .distill-site-nav a:hover { 187 color: white; 188 } 189 190 @media print { 191 .distill-site-nav { 192 display: none; 193 } 194 } 195 196 .distill-site-header { 197 198 } 199 200 .distill-site-footer { 201 202 } 203 204 205 /* Site Header */ 206 207 .distill-site-header { 208 width: 100%; 209 box-sizing: border-box; 210 z-index: 3; 211 } 212 213 .distill-site-header .nav-left { 214 display: inline-block; 215 margin-left: 8px; 216 } 217 218 @media screen and (max-width: 768px) { 219 .distill-site-header .nav-left { 220 margin-left: 0; 221 } 222 } 223 224 225 .distill-site-header .nav-right { 226 float: right; 227 margin-right: 8px; 228 } 229 230 .distill-site-header a, 231 .distill-site-header .title { 232 display: inline-block; 233 text-align: center; 234 padding: 14px 10px 14px 10px; 235 } 236 237 .distill-site-header .title { 238 font-size: 18px; 239 min-width: 150px; 240 } 241 242 .distill-site-header .logo { 243 padding: 0; 244 } 245 246 .distill-site-header .logo img { 247 display: none; 248 max-height: 20px; 249 width: auto; 250 margin-bottom: -4px; 251 } 252 253 .distill-site-header .nav-image img { 254 max-height: 18px; 255 width: auto; 256 display: inline-block; 257 margin-bottom: -3px; 258 } 259 260 261 262 @media screen and (min-width: 1000px) { 263 .distill-site-header .logo img { 264 display: inline-block; 265 } 266 .distill-site-header .nav-left { 267 margin-left: 20px; 268 } 269 .distill-site-header .nav-right { 270 margin-right: 20px; 271 } 272 .distill-site-header .title { 273 padding-left: 12px; 274 } 275 } 276 277 278 .distill-site-header .nav-toggle { 279 display: none; 280 } 281 282 .nav-dropdown { 283 display: inline-block; 284 position: relative; 285 } 286 287 .nav-dropdown .nav-dropbtn { 288 border: none; 289 outline: none; 290 color: rgba(255, 255, 255, 0.8); 291 padding: 16px 10px; 292 background-color: transparent; 293 font-family: inherit; 294 font-size: inherit; 295 font-weight: inherit; 296 margin: 0;
297 margin-top: 1px; 298 z-index: 2; 299 } 300 301 .nav-dropdown-content { 302 display: none; 303 position: absolute; 304 background-color: white; 305 min-width: 200px; 306 border: 1px solid rgba(0,0,0,0.15); 307 border-radius: 4px; 308 box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.1); 309 z-index: 1; 310 margin-top: 2px; 311 white-space: nowrap; 312 padding-top: 4px; 313 padding-bottom: 4px; 314 } 315 316 .nav-dropdown-content hr { 317 margin-top: 4px; 318 margin-bottom: 4px; 319 border: none; 320 border-bottom: 1px solid rgba(0, 0, 0, 0.1); 321 } 322 323 .nav-dropdown-active { 324 display: block; 325 } 326 327 .nav-dropdown-content a, .nav-dropdown-content .nav-dropdown-header { 328 color: black; 329 padding: 6px 24px; 330 text-decoration: none; 331 display: block; 332 text-align: left; 333 } 334 335 .nav-dropdown-content .nav-dropdown-header { 336 display: block; 337 padding: 5px 24px; 338 padding-bottom: 0; 339 text-transform: uppercase; 340 font-size: 14px; 341 color: #999999; 342 white-space: nowrap; 343 } 344 345 .nav-dropdown:hover .nav-dropbtn { 346 color: white; 347 } 348 349 .nav-dropdown-content a:hover { 350 background-color: #ddd; 351 color: black; 352 } 353 354 .nav-right .nav-dropdown-content { 355 margin-left: -45%; 356 right: 0; 357 } 358 359 @media screen and (max-width: 768px) { 360 .distill-site-header a, .distill-site-header .nav-dropdown {display: none;} 361 .distill-site-header a.nav-toggle { 362 float: right; 363 display: block; 364 } 365 .distill-site-header .title { 366 margin-left: 0; 367 } 368 .distill-site-header .nav-right { 369 margin-right: 0; 370 } 371 .distill-site-header { 372 overflow: hidden; 373 } 374 .nav-right .nav-dropdown-content { 375 margin-left: 0; 376 } 377 } 378 379 380 @media screen and (max-width: 768px) { 381 .distill-site-header.responsive {position: relative; min-height: 500px; } 382 .distill-site-header.responsive a.nav-toggle { 383 position: absolute; 384 right: 0; 385 top: 0; 386 } 387 .distill-site-header.responsive a, 388 .distill-site-header.responsive .nav-dropdown { 389 display: block; 390 text-align: left; 391 } 392 .distill-site-header.responsive .nav-left, 393 .distill-site-header.responsive .nav-right { 394 width: 100%; 395 } 396 .distill-site-header.responsive .nav-dropdown {float: none;} 397 .distill-site-header.responsive .nav-dropdown-content {position: relative;} 398 .distill-site-header.responsive .nav-dropdown .nav-dropbtn { 399 display: block; 400 width: 100%; 401 text-align: left; 402 } 403 } 404 405 /* Site Footer */ 406 407 .distill-site-footer { 408 width: 100%; 409 overflow: hidden; 410 box-sizing: border-box; 411 z-index: 3; 412 margin-top: 30px; 413 padding-top: 30px; 414 padding-bottom: 30px; 415 text-align: center; 416 } 417 418 /* Headroom */ 419 420 d-title { 421 padding-top: 6rem; 422 } 423 424 @media print { 425 d-title { 426 padding-top: 4rem; 427 } 428 } 429 430 .headroom { 431 z-index: 1000; 432 position: fixed; 433 top: 0; 434 left: 0; 435 right: 0; 436 } 437 438 .headroom--transition { 439 transition: all .4s ease-in-out; 440 } 441 442 .headroom--unpinned { 443 top: -100px; 444 } 445 446 .headroom--pinned { 447 top: 0; 448 } 449 450 /* adjust viewport for navbar height */ 451 /* helps vertically center bootstrap (non-distill) content */ 452 .min-vh-100 { 453 min-height: calc(100vh - 100px) !important; 454 } 455 456 </style> 457 458
458<script src="site_libs/jquery-3.6.0/jquery-3.6.0.min.js"></script>
458 459 <link href="site_libs/font-awesome-6.4.2/css/all.min.css" rel="stylesheet"/> 460 <link href="site_libs/font-awesome-6.4.2/css/v4-shims.min.css" rel="stylesheet"/> 461
461<script src="site_libs/headroom-0.9.4/headroom.min.js"></script>
461 462
462<script src="site_libs/autocomplete-0.37.1/autocomplete.min.js"></script>
462 463
463<script src="site_libs/fuse-6.4.1/fuse.min.js"></script>
463 464 465
465<script type="application/javascript"> 466 467 function getMeta(metaName) { 468 var metas = document.getElementsByTagName('meta'); 469 for (let i = 0; i < metas.length; i++) { 470 if (metas[i].getAttribute('name') === metaName) { 471 return metas[i].getAttribute('content'); 472 } 473 } 474 return ''; 475 } 476 477 function offsetURL(url) { 478 var offset = getMeta('distill:offset'); 479 return offset ? offset + '/' + url : url; 480 } 481 482 function createFuseIndex() { 483 484 // create fuse index 485 var options = { 486 keys: [ 487 { name: 'title', weight: 20 }, 488 { name: 'categories', weight: 15 }, 489 { name: 'description', weight: 10 }, 490 { name: 'contents', weight: 5 }, 491 ], 492 ignoreLocation: true, 493 threshold: 0 494 }; 495 var fuse = new window.Fuse([], options); 496 497 // fetch the main search.json 498 return fetch(offsetURL('search.json')) 499 .then(function(response) { 500 if (response.status == 200) { 501 return response.json().then(function(json) { 502 // index main articles 503 json.articles.forEach(function(article) { 504 fuse.add(article); 505 }); 506 // download collections and index their articles 507 return Promise.all(json.collections.map(function(collection) { 508 return fetch(offsetURL(collection)).then(function(response) { 509 if (response.status === 200) { 510 return response.json().then(function(articles) { 511 articles.forEach(function(article) { 512 fuse.add(article); 513 }); 514 }) 515 } else { 516 return Promise.reject( 517 new Error('Unexpected status from search index request: ' + 518 response.status) 519 ); 520 } 521 }); 522 })).then(function() { 523 return fuse; 524 }); 525 }); 526 527 } else { 528 return Promise.reject( 529 new Error('Unexpected status from search index request: ' + 530 response.status) 531 ); 532 } 533 }); 534 } 535 536 window.document.addEventListener("DOMContentLoaded", function (event) { 537 538 // get search element (bail if we don't have one) 539 var searchEl = window.document.getElementById('distill-search'); 540 if (!searchEl) 541 return; 542 543 createFuseIndex() 544 .then(function(fuse) { 545 546 // make search box visible 547 searchEl.classList.remove('hidden'); 548 549 // initialize autocomplete 550 var options = { 551 autoselect: true, 552 hint: false, 553 minLength: 2, 554 }; 555 window.autocomplete(searchEl, options, [{ 556 source: function(query, callback) { 557 const searchOptions = { 558 isCaseSensitive: false, 559 shouldSort: true, 560 minMatchCharLength: 2, 561 limit: 10, 562 }; 563 var results = fuse.search(query, searchOptions); 564 callback(results 565 .map(function(result) { return result.item; }) 566 ); 567 }, 568 templates: { 569 suggestion: function(suggestion) { 570 var img = suggestion.preview && Object.keys(suggestion.preview).length > 0 571 ? `<img src="${offsetURL(suggestion.preview)}"</img>` 572 : ''; 573 var html = ` 574 <div class="search-item"> 575 <h3>${suggestion.title}</h3> 576 <div class="search-item-description"> 577 ${suggestion.description || ''} 578 </div> 579 <div class="search-item-preview"> 580 ${img} 581 </div> 582 </div> 583 `; 584 return html; 585 } 586 } 587 }]).on('autocomplete:selected', function(event, suggestion) { 588 window.location.href = offsetURL(suggestion.path); 589 }); 590 // remove inline display style on autocompleter (we want to 591 // manage responsive display via css) 592 $('.algolia-autocomplete').css("display", ""); 593 }) 594 .catch(function(error) { 595 console.log(error); 596 }); 597 598 }); 599 600 </script>
600 601 602 <style type="text/css"> 603 604 .nav-search { 605 font-size: x-small; 606 } 607 608 /* Algolioa Autocomplete */ 609 610 .algolia-autocomplete { 611 display: inline-block; 612 margin-left: 10px; 613 vertical-align: sub; 614 background-color: white; 615 color: black; 616 padding: 6px; 617 padding-top: 8px; 618 padding-bottom: 0; 619 border-radius: 6px; 620 border: 1px #0F2E3D solid; 621 width: 180px; 622 } 623 624 625 @media screen and (max-width: 768px) { 626 .distill-site-nav .algolia-autocomplete { 627 display: none; 628 visibility: hidden; 629 } 630 .distill-site-nav.responsive .algolia-autocomplete { 631 display: inline-block; 632 visibility: visible; 633 } 634 .distill-site-nav.responsive .algolia-autocomplete .aa-dropdown-menu { 635 margin-left: 0; 636 width: 400px; 637 max-height: 400px; 638 } 639 } 640 641 .algolia-autocomplete .aa-input, .algolia-autocomplete .aa-hint { 642 width: 90%; 643 outline: none; 644 border: none; 645 } 646 647 .algolia-autocomplete .aa-hint { 648 color: #999; 649 } 650 .algolia-autocomplete .aa-dropdown-menu { 651 width: 550px; 652 max-height: 70vh; 653 overflow-x: visible; 654 overflow-y: scroll; 655 padding: 5px; 656 margin-top: 3px; 657 margin-left: -150px; 658 background-color: #fff; 659 border-radius: 5px; 660 border: 1px solid #999; 661 border-top: none; 662 } 663 664 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion { 665 cursor: pointer; 666 padding: 5px 4px; 667 border-bottom: 1px solid #eee; 668 } 669 670 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion:last-of-type { 671 border-bottom: none; 672 margin-bottom: 2px; 673 } 674 675 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item { 676 overflow: hidden; 677 font-size: 0.8em; 678 line-height: 1.4em; 679 } 680 681 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item h3 { 682 font-size: 1rem; 683 margin-block-start: 0; 684 margin-block-end: 5px; 685 } 686 687 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-description { 688 display: inline-block; 689 overflow: hidden; 690 height: 2.8em; 691 width: 80%; 692 margin-right: 4%; 693 } 694 695 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-preview { 696 display: inline-block; 697 width: 15%; 698 } 699 700 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-preview img { 701 height: 3em; 702 width: auto; 703 display: none; 704 } 705 706 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-preview img[src] { 707 display: initial; 708 } 709 710 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion.aa-cursor { 711 background-color: #eee; 712 } 713 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion em { 714 font-weight: bold; 715 font-style: normal; 716 } 717 718 </style> 719 720 721 <!--/radix_placeholder_navigation_in_header--> 722 <!--radix_placeholder_distill--> 723 724 <style type="text/css"> 725 726 body { 727 background-color: white; 728 } 729 730 .pandoc-table { 731 width: 100%; 732 } 733 734 .pandoc-table>caption { 735 margin-bottom: 10px; 736 } 737 738 .pandoc-table th:not([align]) { 739 text-align: left; 740 } 741 742 .pagedtable-footer { 743 font-size: 15px; 744 } 745 746 d-byline .byline { 747 grid-template-columns: 2fr 2fr; 748 } 749 750 d-byline .byline h3 { 751 margin-block-start: 1.5em; 752 } 753 754 d-byline .byline .authors-affiliations h3 { 755 margin-block-start: 0.5em; 756 } 757 758 .authors-affiliations .orcid-id { 759 width: 16px; 760 height:16px; 761 margin-left: 4px; 762 margin-right: 4px; 763 vertical-align: middle; 764 padding-bottom: 2px; 765 } 766 767 d-title .dt-tags { 768 margin-top: 1em; 769 grid-column: text; 770 } 771 772 .dt-tags .dt-tag { 773 text-decoration: none; 774 display: inline-block; 775 color: rgba(0,0,0,0.6); 776 padding: 0em 0.4em; 777 margin-right: 0.5em; 778 margin-bottom: 0.4em; 779 font-size: 70%; 780 border: 1px solid rgba(0,0,0,0.2); 781 border-radius: 3px; 782 text-transform: uppercase; 783 font-weight: 500; 784 } 785 786 d-article table.gt_table td, 787 d-article table.gt_table th { 788 border-bottom: none; 789 font-size: 100%; 790 } 791 792 .html-widget { 793 margin-bottom: 2.0em; 794 } 795 796 .l-screen-inset { 797 padding-right: 16px; 798 } 799 800 .l-screen .caption { 801 margin-left: 10px; 802 } 803 804 .shaded { 805 background: rgb(247, 247, 247); 806 padding-top: 20px; 807 padding-bottom: 20px; 808 border-top: 1px solid rgba(0, 0, 0, 0.1); 809 border-bottom: 1px solid rgba(0, 0, 0, 0.1); 810 } 811 812 .shaded .html-widget { 813 margin-bottom: 0; 814 border: 1px solid rgba(0, 0, 0, 0.1); 815 } 816 817 .shaded .shaded-content { 818 background: white; 819 } 820 821 .text-output { 822 margin-top: 0;
823 line-height: 1.5em; 824 } 825 826 .hidden { 827 display: none !important; 828 } 829 830 d-article { 831 padding-top: 2.5rem; 832 padding-bottom: 30px; 833 } 834 835 d-appendix { 836 padding-top: 30px; 837 } 838 839 d-article>p>img { 840 width: 100%; 841 } 842 843 d-article h2 { 844 margin: 1rem 0 1.5rem 0; 845 } 846 847 d-article h3 { 848 margin-top: 1.5rem; 849 } 850 851 d-article iframe { 852 border: 1px solid rgba(0, 0, 0, 0.1); 853 margin-bottom: 2.0em; 854 width: 100%; 855 } 856 857 /* Tweak code blocks */ 858 859 d-article div.sourceCode code, 860 d-article pre code { 861 font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 862 } 863 864 d-article pre, 865 d-article div.sourceCode, 866 d-article div.sourceCode pre { 867 overflow: auto; 868 } 869 870 d-article div.sourceCode { 871 background-color: white; 872 } 873 874 d-article div.sourceCode pre { 875 padding-left: 10px; 876 font-size: 12px; 877 border-left: 2px solid rgba(0,0,0,0.1); 878 } 879 880 d-article pre { 881 font-size: 12px; 882 color: black; 883 background: none; 884 margin-top: 0; 885 text-align: left; 886 white-space: pre; 887 word-spacing: normal; 888 word-break: normal; 889 word-wrap: normal; 890 line-height: 1.5; 891 892 -moz-tab-size: 4; 893 -o-tab-size: 4; 894 tab-size: 4; 895 896 -webkit-hyphens: none; 897 -moz-hyphens: none; 898 -ms-hyphens: none; 899 hyphens: none; 900 } 901 902 d-article pre a { 903 border-bottom: none; 904 } 905 906 d-article pre a:hover { 907 border-bottom: none; 908 text-decoration: underline; 909 } 910 911 d-article details { 912 grid-column: text; 913 margin-bottom: 0.8em; 914 } 915 916 @media(min-width: 768px) { 917 918 d-article pre, 919 d-article div.sourceCode, 920 d-article div.sourceCode pre { 921 overflow: visible !important; 922 } 923 924 d-article div.sourceCode pre { 925 padding-left: 18px; 926 font-size: 14px; 927 } 928 929 d-article pre { 930 font-size: 14px; 931 } 932 933 } 934 935 figure img.external { 936 background: white; 937 border: 1px solid rgba(0, 0, 0, 0.1); 938 box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); 939 padding: 18px; 940 box-sizing: border-box; 941 } 942 943 /* CSS for d-contents */ 944 945 .d-contents { 946 grid-column: text; 947 color: rgba(0,0,0,0.8); 948 font-size: 0.9em; 949 padding-bottom: 1em; 950 margin-bottom: 1em; 951 padding-bottom: 0.5em; 952 margin-bottom: 1em; 953 padding-left: 0.25em; 954 justify-self: start; 955 } 956 957 @media(min-width: 1000px) { 958 .d-contents.d-contents-float { 959 height: 0; 960 grid-column-start: 1; 961 grid-column-end: 4; 962 justify-self: center; 963 padding-right: 3em; 964 padding-left: 2em; 965 } 966 } 967 968 .d-contents nav h3 { 969 font-size: 18px; 970 margin-top: 0; 971 margin-bottom: 1em; 972 } 973 974 .d-contents li { 975 list-style-type: none 976 } 977 978 .d-contents nav > ul { 979 padding-left: 0; 980 } 981 982 .d-contents ul { 983 padding-left: 1em 984 } 985 986 .d-contents nav ul li { 987 margin-top: 0.6em; 988 margin-bottom: 0.2em; 989 } 990 991 .d-contents nav a { 992 font-size: 13px; 993 border-bottom: none; 994 text-decoration: none 995 color: rgba(0, 0, 0, 0.8); 996 } 997 998 .d-contents nav a:hover { 999 text-decoration: underline solid rgba(0, 0, 0, 0.6) 1000 } 1001 1002 .d-contents nav > ul > li > a { 1003 font-weight: 600; 1004 } 1005 1006 .d-contents nav > ul > li > ul { 1007 font-weight: inherit; 1008 } 1009 1010 .d-contents nav > ul > li > ul > li { 1011 margin-top: 0.2em; 1012 } 1013 1014 1015 .d-contents nav ul { 1016 margin-top: 0; 1017 margin-bottom: 0.25em; 1018 } 1019 1020 .d-article-with-toc h2:nth-child(2) { 1021 margin-top: 0; 1022 } 1023 1024 1025 /* Figure */ 1026 1027 .figure { 1028 position: relative; 1029 margin-bottom: 2.5em; 1030 margin-top: 1.5em; 1031 } 1032 1033 .figure .caption { 1034 color: rgba(0, 0, 0, 0.6); 1035 font-size: 12px; 1036 line-height: 1.5em; 1037 } 1038 1039 .figure img.external { 1040 background: white; 1041 border: 1px solid rgba(0, 0, 0, 0.1); 1042 box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); 1043 padding: 18px; 1044 box-sizing: border-box; 1045 } 1046 1047 .figure .caption a { 1048 color: rgba(0, 0, 0, 0.6); 1049 } 1050 1051 .figure .caption b, 1052 .figure .caption strong, { 1053 font-weight: 600; 1054 color: rgba(0, 0, 0, 1.0); 1055 } 1056 1057 /* Citations */ 1058 1059 d-article .citation { 1060 color: inherit; 1061 cursor: inherit; 1062 } 1063 1064 div.hanging-indent{ 1065 margin-left: 1em; text-indent: -1em; 1066 } 1067 1068 /* Citation hover box */ 1069 1070 .tippy-box[data-theme~=light-border] { 1071 background-color: rgba(250, 250, 250, 0.95); 1072 } 1073 1074 .tippy-content > p { 1075 margin-bottom: 0; 1076 padding: 2px; 1077 } 1078 1079 1080 /* Tweak 1000px media break to show more text */ 1081 1082 @media(min-width: 1000px) { 1083 .base-grid, 1084 distill-header, 1085 d-title, 1086 d-abstract, 1087 d-article, 1088 d-appendix, 1089 distill-appendix, 1090 d-byline, 1091 d-footnote-list, 1092 d-citation-list, 1093 distill-footer { 1094 grid-template-columns: [screen-start] 1fr [page-start kicker-start] 80px [middle-start] 50px [text-start kicker-end] 65px 65px 65px 65px 65px 65px 65px 65px [text-end gutter-start] 65px [middle-end] 65px [page-end gutter-end] 1fr [screen-end]; 1095 grid-column-gap: 16px; 1096 } 1097 1098 .grid { 1099 grid-column-gap: 16px; 1100 } 1101 1102 d-article { 1103 font-size: 1.06rem; 1104 line-height: 1.7em; 1105 } 1106 figure .caption, .figure .caption, figure figcaption { 1107 font-size: 13px; 1108 } 1109 } 1110 1111 @media(min-width: 1180px) { 1112 .base-grid, 1113 distill-header, 1114 d-title, 1115 d-abstract, 1116 d-article, 1117 d-appendix, 1118 distill-appendix, 1119 d-byline, 1120 d-footnote-list, 1121 d-citation-list, 1122 distill-footer { 1123 grid-template-columns: [screen-start] 1fr [page-start kicker-start] 60px [middle-start] 60px [text-start kicker-end] 60px 60px 60px 60px 60px 60px 60px 60px [text-end gutter-start] 60px [middle-end] 60px [page-end gutter-end] 1fr [screen-end]; 1124 grid-column-gap: 32px; 1125 } 1126 1127 .grid { 1128 grid-column-gap: 32px; 1129 } 1130 } 1131 1132 1133 /* Get the citation styles for the appendix (not auto-injected on render since 1134 we do our own rendering of the citation appendix) */ 1135 1136 d-appendix .citation-appendix, 1137 .d-appendix .citation-appendix { 1138 font-size: 11px; 1139 line-height: 15px; 1140 border-left: 1px solid rgba(0, 0, 0, 0.1); 1141 padding-left: 18px; 1142 border: 1px solid rgba(0,0,0,0.1); 1143 background: rgba(0, 0, 0, 0.02); 1144 padding: 10px 18px; 1145 border-radius: 3px; 1146 color: rgba(150, 150, 150, 1); 1147 overflow: hidden; 1148 margin-top: -12px; 1149 white-space: pre-wrap; 1150 word-wrap: break-word; 1151 } 1152 1153 /* Include appendix styles here so they can be overridden */ 1154 1155 d-appendix { 1156 contain: layout style; 1157 font-size: 0.8em; 1158 line-height: 1.7em; 1159 margin-top: 60px; 1160 margin-bottom: 0; 1161 border-top: 1px solid rgba(0, 0, 0, 0.1); 1162 color: rgba(0,0,0,0.5); 1163 padding-top: 60px; 1164 padding-bottom: 48px; 1165 } 1166 1167 d-appendix h3 { 1168 grid-column: page-start / text-start; 1169 font-size: 15px; 1170 font-weight: 500; 1171 margin-top: 1em; 1172 margin-bottom: 0; 1173 color: rgba(0,0,0,0.65); 1174 } 1175 1176 d-appendix h3 + * { 1177 margin-top: 1em; 1178 } 1179 1180 d-appendix ol { 1181 padding: 0 0 0 15px; 1182 } 1183 1184 @media (min-width: 768px) { 1185 d-appendix ol { 1186 padding: 0 0 0 30px; 1187 margin-left: -30px; 1188 } 1189 } 1190 1191 d-appendix li { 1192 margin-bottom: 1em; 1193 } 1194 1195 d-appendix a { 1196 color: rgba(0, 0, 0, 0.6); 1197 } 1198 1199 d-appendix > * { 1200 grid-column: text; 1201 } 1202 1203 d-appendix > d-footnote-list, 1204 d-appendix > d-citation-list, 1205 d-appendix > distill-appendix { 1206 grid-column: screen;
1207 } 1208 1209 /* Include footnote styles here so they can be overridden */ 1210 1211 d-footnote-list { 1212 contain: layout style; 1213 } 1214 1215 d-footnote-list > * { 1216 grid-column: text; 1217 } 1218 1219 d-footnote-list a.footnote-backlink { 1220 color: rgba(0,0,0,0.3); 1221 padding-left: 0.5em; 1222 } 1223 1224 1225 1226 /* Anchor.js */ 1227 1228 .anchorjs-link { 1229 /*transition: all .25s linear; */ 1230 text-decoration: none; 1231 border-bottom: none; 1232 } 1233 *:hover > .anchorjs-link { 1234 margin-left: -1.125em !important; 1235 text-decoration: none; 1236 border-bottom: none; 1237 } 1238 1239 /* Social footer */ 1240 1241 .social_footer { 1242 margin-top: 30px; 1243 margin-bottom: 0; 1244 color: rgba(0,0,0,0.67); 1245 } 1246 1247 .disqus-comments { 1248 margin-right: 30px; 1249 } 1250 1251 .disqus-comment-count { 1252 border-bottom: 1px solid rgba(0, 0, 0, 0.4); 1253 cursor: pointer; 1254 } 1255 1256 #disqus_thread { 1257 margin-top: 30px; 1258 } 1259 1260 .article-sharing a { 1261 border-bottom: none; 1262 margin-right: 8px; 1263 } 1264 1265 .article-sharing a:hover { 1266 border-bottom: none; 1267 } 1268 1269 .sidebar-section.subscribe { 1270 font-size: 12px; 1271 line-height: 1.6em; 1272 } 1273 1274 .subscribe p { 1275 margin-bottom: 0.5em; 1276 } 1277 1278 1279 .article-footer .subscribe { 1280 font-size: 15px; 1281 margin-top: 45px; 1282 } 1283 1284 1285 .sidebar-section.custom { 1286 font-size: 12px; 1287 line-height: 1.6em; 1288 } 1289 1290 .custom p { 1291 margin-bottom: 0.5em; 1292 } 1293 1294 /* Styles for listing layout (hide title) */ 1295 .layout-listing d-title, .layout-listing .d-title { 1296 display: none; 1297 } 1298 1299 /* Styles for posts lists (not auto-injected) */ 1300 1301 1302 .posts-with-sidebar { 1303 padding-left: 45px; 1304 padding-right: 45px; 1305 } 1306 1307 .posts-list .description h2, 1308 .posts-list .description p { 1309 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif; 1310 } 1311 1312 .posts-list .description h2 { 1313 font-weight: 700; 1314 border-bottom: none; 1315 padding-bottom: 0; 1316 } 1317 1318 .posts-list h2.post-tag { 1319 border-bottom: 1px solid rgba(0, 0, 0, 0.2); 1320 padding-bottom: 12px; 1321 } 1322 .posts-list { 1323 margin-top: 60px; 1324 margin-bottom: 24px; 1325 } 1326 1327 .posts-list .post-preview { 1328 text-decoration: none; 1329 overflow: hidden; 1330 display: block; 1331 border-bottom: 1px solid rgba(0, 0, 0, 0.1); 1332 padding: 24px 0; 1333 } 1334 1335 .post-preview-last { 1336 border-bottom: none !important; 1337 } 1338 1339 .posts-list .posts-list-caption { 1340 grid-column: screen; 1341 font-weight: 400; 1342 } 1343 1344 .posts-list .post-preview h2 { 1345 margin: 0 0 6px 0; 1346 line-height: 1.2em; 1347 font-style: normal; 1348 font-size: 24px; 1349 } 1350 1351 .posts-list .post-preview p { 1352 margin: 0 0 12px 0; 1353 line-height: 1.4em; 1354 font-size: 16px; 1355 } 1356 1357 .posts-list .post-preview .thumbnail { 1358 box-sizing: border-box; 1359 margin-bottom: 24px; 1360 position: relative; 1361 max-width: 500px; 1362 } 1363 .posts-list .post-preview img { 1364 width: 100%; 1365 display: block; 1366 } 1367 1368 .posts-list .metadata { 1369 font-size: 12px; 1370 line-height: 1.4em; 1371 margin-bottom: 18px; 1372 } 1373 1374 .posts-list .metadata > * { 1375 display: inline-block; 1376 } 1377 1378 .posts-list .metadata .publishedDate { 1379 margin-right: 2em; 1380 } 1381 1382 .posts-list .metadata .dt-authors { 1383 display: block; 1384 margin-top: 0.3em; 1385 margin-right: 2em; 1386 } 1387 1388 .posts-list .dt-tags { 1389 display: block; 1390 line-height: 1em; 1391 } 1392 1393 .posts-list .dt-tags .dt-tag { 1394 display: inline-block; 1395 color: rgba(0,0,0,0.6); 1396 padding: 0.3em 0.4em; 1397 margin-right: 0.2em; 1398 margin-bottom: 0.4em; 1399 font-size: 60%; 1400 border: 1px solid rgba(0,0,0,0.2); 1401 border-radius: 3px; 1402 text-transform: uppercase; 1403 font-weight: 500; 1404 } 1405 1406 .posts-list img { 1407 opacity: 1; 1408 } 1409 1410 .posts-list img[data-src] { 1411 opacity: 0; 1412 } 1413 1414 .posts-more { 1415 clear: both; 1416 } 1417 1418 1419 .posts-sidebar { 1420 font-size: 16px; 1421 } 1422 1423 .posts-sidebar h3 { 1424 font-size: 16px; 1425 margin-top: 0; 1426 margin-bottom: 0.5em; 1427 font-weight: 400; 1428 text-transform: uppercase; 1429 } 1430 1431 .sidebar-section { 1432 margin-bottom: 30px; 1433 } 1434 1435 .categories ul { 1436 list-style-type: none; 1437 margin: 0; 1438 padding: 0; 1439 } 1440 1441 .categories li { 1442 color: rgba(0, 0, 0, 0.8); 1443 margin-bottom: 0; 1444 } 1445 1446 .categories li>a { 1447 border-bottom: none; 1448 } 1449 1450 .categories li>a:hover { 1451 border-bottom: 1px solid rgba(0, 0, 0, 0.4); 1452 } 1453 1454 .categories .active { 1455 font-weight: 600; 1456 } 1457 1458 .categories .category-count { 1459 color: rgba(0, 0, 0, 0.4); 1460 } 1461 1462 1463 @media(min-width: 768px) { 1464 .posts-list .post-preview h2 { 1465 font-size: 26px; 1466 } 1467 .posts-list .post-preview .thumbnail { 1468 float: right; 1469 width: 30%; 1470 margin-bottom: 0; 1471 } 1472 .posts-list .post-preview .description { 1473 float: left; 1474 width: 45%; 1475 } 1476 .posts-list .post-preview .metadata { 1477 float: left; 1478 width: 20%; 1479 margin-top: 8px; 1480 } 1481 .posts-list .post-preview p { 1482 margin: 0 0 12px 0; 1483 line-height: 1.5em; 1484 font-size: 16px; 1485 } 1486 .posts-with-sidebar .posts-list { 1487 float: left; 1488 width: 75%; 1489 } 1490 .posts-with-sidebar .posts-sidebar { 1491 float: right; 1492 width: 20%; 1493 margin-top: 60px; 1494 padding-top: 24px; 1495 padding-bottom: 24px; 1496 } 1497 } 1498 1499 1500 /* Improve display for browsers without grid (IE/Edge <= 15) */ 1501 1502 .downlevel { 1503 line-height: 1.6em; 1504 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif; 1505 margin: 0; 1506 } 1507 1508 .downlevel .d-title { 1509 padding-top: 6rem; 1510 padding-bottom: 1.5rem; 1511 } 1512 1513 .downlevel .d-title h1 { 1514 font-size: 50px; 1515 font-weight: 700; 1516 line-height: 1.1em; 1517 margin: 0 0 0.5rem; 1518 } 1519 1520 .downlevel .d-title p { 1521 font-weight: 300; 1522 font-size: 1.2rem; 1523 line-height: 1.55em; 1524 margin-top: 0;
1525 } 1526 1527 .downlevel .d-byline { 1528 padding-top: 0.8em; 1529 padding-bottom: 0.8em; 1530 font-size: 0.8rem; 1531 line-height: 1.8em; 1532 } 1533 1534 .downlevel .section-separator { 1535 border: none; 1536 border-top: 1px solid rgba(0, 0, 0, 0.1); 1537 } 1538 1539 .downlevel .d-article { 1540 font-size: 1.06rem; 1541 line-height: 1.7em; 1542 padding-top: 1rem; 1543 padding-bottom: 2rem; 1544 } 1545 1546 1547 .downlevel .d-appendix { 1548 padding-left: 0; 1549 padding-right: 0; 1550 max-width: none; 1551 font-size: 0.8em; 1552 line-height: 1.7em; 1553 margin-bottom: 0; 1554 color: rgba(0,0,0,0.5); 1555 padding-top: 40px; 1556 padding-bottom: 48px; 1557 } 1558 1559 .downlevel .footnotes ol { 1560 padding-left: 13px; 1561 } 1562 1563 .downlevel .base-grid, 1564 .downlevel .distill-header, 1565 .downlevel .d-title, 1566 .downlevel .d-abstract, 1567 .downlevel .d-article, 1568 .downlevel .d-appendix, 1569 .downlevel .distill-appendix, 1570 .downlevel .d-byline, 1571 .downlevel .d-footnote-list, 1572 .downlevel .d-citation-list, 1573 .downlevel .distill-footer, 1574 .downlevel .appendix-bottom, 1575 .downlevel .posts-container { 1576 padding-left: 40px; 1577 padding-right: 40px; 1578 } 1579 1580 @media(min-width: 768px) { 1581 .downlevel .base-grid, 1582 .downlevel .distill-header, 1583 .downlevel .d-title, 1584 .downlevel .d-abstract, 1585 .downlevel .d-article, 1586 .downlevel .d-appendix, 1587 .downlevel .distill-appendix, 1588 .downlevel .d-byline, 1589 .downlevel .d-footnote-list, 1590 .downlevel .d-citation-list, 1591 .downlevel .distill-footer, 1592 .downlevel .appendix-bottom, 1593 .downlevel .posts-container { 1594 padding-left: 150px; 1595 padding-right: 150px; 1596 max-width: 900px; 1597 } 1598 } 1599 1600 .downlevel pre code { 1601 display: block; 1602 border-left: 2px solid rgba(0, 0, 0, .1); 1603 padding: 0 0 0 20px; 1604 font-size: 14px; 1605 } 1606 1607 .downlevel code, .downlevel pre { 1608 color: black; 1609 background: none; 1610 font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 1611 text-align: left; 1612 white-space: pre; 1613 word-spacing: normal; 1614 word-break: normal; 1615 word-wrap: normal; 1616 line-height: 1.5; 1617 1618 -moz-tab-size: 4; 1619 -o-tab-size: 4; 1620 tab-size: 4; 1621 1622 -webkit-hyphens: none; 1623 -moz-hyphens: none; 1624 -ms-hyphens: none; 1625 hyphens: none; 1626 } 1627 1628 .downlevel .posts-list .post-preview { 1629 color: inherit; 1630 } 1631 1632 1633 1634 </style> 1635 1636
1636<script type="application/javascript"> 1637 1638 function is_downlevel_browser() { 1639 if (bowser.isUnsupportedBrowser({ msie: "12", msedge: "16"}, 1640 window.navigator.userAgent)) { 1641 return true; 1642 } else { 1643 return window.load_distill_framework === undefined; 1644 } 1645 } 1646 1647 // show body when load is complete 1648 function on_load_complete() { 1649 1650 // add anchors 1651 if (window.anchors) { 1652 window.anchors.options.placement = 'left'; 1653 window.anchors.add('d-article > h2, d-article > h3, d-article > h4, d-article > h5'); 1654 } 1655 1656 1657 // set body to visible 1658 document.body.style.visibility = 'visible'; 1659 1660 // force redraw for leaflet widgets 1661 if (window.HTMLWidgets) { 1662 var maps = window.HTMLWidgets.findAll(".leaflet"); 1663 $.each(maps, function(i, el) { 1664 var map = this.getMap(); 1665 map.invalidateSize(); 1666 map.eachLayer(function(layer) { 1667 if (layer instanceof L.TileLayer) 1668 layer.redraw(); 1669 }); 1670 }); 1671 } 1672 1673 // trigger 'shown' so htmlwidgets resize 1674 $('d-article').trigger('shown'); 1675 } 1676 1677 function init_distill() { 1678 1679 init_common(); 1680 1681 // create front matter 1682 var front_matter = $('<d-front-matter></d-front-matter>'); 1683 $('#distill-front-matter').wrap(front_matter); 1684 1685 // create d-title 1686 $('.d-title').changeElementType('d-title'); 1687 1688 // create d-byline 1689 var byline = $('<d-byline></d-byline>'); 1690 $('.d-byline').replaceWith(byline); 1691 1692 // create d-article 1693 var article = $('<d-article></d-article>'); 1694 $('.d-article').wrap(article).children().unwrap(); 1695 1696 // move posts container into article 1697 $('.posts-container').appendTo($('d-article')); 1698 1699 // create d-appendix 1700 $('.d-appendix').changeElementType('d-appendix'); 1701 1702 // flag indicating that we have appendix items 1703 var appendix = $('.appendix-bottom').children('h3').length > 0; 1704 1705 // replace footnotes with <d-footnote> 1706 $('.footnote-ref').each(function(i, val) { 1707 appendix = true; 1708 var href = $(this).attr('href'); 1709 var id = href.replace('#', ''); 1710 var fn = $('#' + id); 1711 var fn_p = $('#' + id + '>p'); 1712 fn_p.find('.footnote-back').remove(); 1713 var text = fn_p.html(); 1714 var dtfn = $('<d-footnote></d-footnote>'); 1715 dtfn.html(text); 1716 $(this).replaceWith(dtfn); 1717 }); 1718 // remove footnotes 1719 $('.footnotes').remove(); 1720 1721 // move refs into #references-listing 1722 $('#references-listing').replaceWith($('#refs')); 1723 1724 $('h1.appendix, h2.appendix').each(function(i, val) { 1725 $(this).changeElementType('h3'); 1726 }); 1727 $('h3.appendix').each(function(i, val) { 1728 var id = $(this).attr('id'); 1729 $('.d-contents a[href="#' + id + '"]').parent().remove(); 1730 appendix = true; 1731 $(this).nextUntil($('h1, h2, h3')).addBack().appendTo($('d-appendix')); 1732 }); 1733 1734 // show d-appendix if we have appendix content 1735 $("d-appendix").css('display', appendix ? 'grid' : 'none'); 1736 1737 // localize layout chunks to just output 1738 $('.layout-chunk').each(function(i, val) { 1739 1740 // capture layout 1741 var layout = $(this).attr('data-layout'); 1742 1743 // apply layout to markdown level block elements 1744 var elements = $(this).children().not('details, div.sourceCode, pre, script'); 1745 elements.each(function(i, el) { 1746 var layout_div = $('<div class="' + layout + '"></div>'); 1747 if (layout_div.hasClass('shaded')) { 1748 var shaded_content = $('<div class="shaded-content"></div>'); 1749 $(this).wrap(shaded_content); 1750 $(this).parent().wrap(layout_div); 1751 } else { 1752 $(this).wrap(layout_div); 1753 } 1754 }); 1755 1756 1757 // unwrap the layout-chunk div 1758 $(this).children().unwrap(); 1759 }); 1760 1761 // remove code block used to force highlighting css 1762 $('.distill-force-highlighting-css').parent().remove(); 1763 1764 // remove empty line numbers inserted by pandoc when using a 1765 // custom syntax highlighting theme 1766 $('code.sourceCode a:empty').remove(); 1767 1768 // load distill framework 1769 load_distill_framework(); 1770 1771 // wait for window.distillRunlevel == 4 to do post processing 1772 function distill_post_process() { 1773 1774 if (!window.distillRunlevel || window.distillRunlevel < 4) 1775 return; 1776 1777 // hide author/affiliations entirely if we have no authors 1778 var front_matter = JSON.parse($("#distill-front-matter").html()); 1779 var have_authors = front_matter.authors && front_matter.authors.length > 0;
1780 if (!have_authors) 1781 $('d-byline').addClass('hidden'); 1782 1783 // article with toc class 1784 $('.d-contents').parent().addClass('d-article-with-toc'); 1785 1786 // strip links that point to # 1787 $('.authors-affiliations').find('a[href="#"]').removeAttr('href'); 1788 1789 // add orcid ids 1790 $('.authors-affiliations').find('.author').each(function(i, el) { 1791 var orcid_id = front_matter.authors[i].orcidID; 1792 if (orcid_id) { 1793 var a = $('<a></a>'); 1794 a.attr('href', 'https://orcid.org/' + orcid_id); 1795 var img = $('<img></img>'); 1796 img.addClass('orcid-id'); 1797 img.attr('alt', 'ORCID ID'); 1798 img.attr('src','data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=='); 1799 a.append(img); 1800 $(this).append(a); 1801 } 1802 }); 1803 1804 // hide elements of author/affiliations grid that have no value 1805 function hide_byline_column(caption) { 1806 $('d-byline').find('h3:contains("' + caption + '")').parent().css('visibility', 'hidden'); 1807 } 1808 1809 // affiliations 1810 var have_affiliations = false; 1811 for (var i = 0; i<front_matter.authors.length; ++i) { 1812 var author = front_matter.authors[i]; 1813 if (author.affiliation !== " ") { 1814 have_affiliations = true; 1815 break; 1816 } 1817 } 1818 if (!have_affiliations) 1819 $('d-byline').find('h3:contains("Affiliations")').css('visibility', 'hidden'); 1820 1821 // published date 1822 if (!front_matter.publishedDate) 1823 hide_byline_column("Published"); 1824 1825 // document object identifier 1826 var doi = $('d-byline').find('h3:contains("DOI")'); 1827 var doi_p = doi.next().empty(); 1828 if (!front_matter.doi) { 1829 // if we have a citation and valid citationText then link to that 1830 if ($('#citation').length > 0 && front_matter.citationText) { 1831 doi.html('Citation'); 1832 $('<a href="#citation"></a>') 1833 .text(front_matter.citationText) 1834 .appendTo(doi_p); 1835 } else { 1836 hide_byline_column("DOI"); 1837 } 1838 } else { 1839 $('<a></a>') 1840 .attr('href', "https://doi.org/" + front_matter.doi) 1841 .html(front_matter.doi) 1842 .appendTo(doi_p); 1843 } 1844 1845 // change plural form of authors/affiliations 1846 if (front_matter.authors.length === 1) { 1847 var grid = $('.authors-affiliations'); 1848 grid.children('h3:contains("Authors")').text('Author'); 1849 grid.children('h3:contains("Affiliations")').text('Affiliation'); 1850 } 1851 1852 // remove d-appendix and d-footnote-list local styles 1853 $('d-appendix > style:first-child').remove(); 1854 $('d-footnote-list > style:first-child').remove(); 1855 1856 // move appendix-bottom entries to the bottom 1857 $('.appendix-bottom').appendTo('d-appendix').children().unwrap(); 1858 $('.appendix-bottom').remove(); 1859 1860 // hoverable references 1861 $('span.citation[data-cites]').each(function() { 1862 const citeChild = $(this).children()[0]
1863 // Do not process if @xyz has been used without escaping and without bibliography activated 1864 // https://github.com/rstudio/distill/issues/466 1865 if (citeChild === undefined) return true 1866 1867 if (citeChild.nodeName == "D-FOOTNOTE") { 1868 var fn = citeChild 1869 $(this).html(fn.shadowRoot.querySelector("sup")) 1870 $(this).id = fn.id 1871 fn.remove() 1872 } 1873 var refs = $(this).attr('data-cites').split(" "); 1874 var refHtml = refs.map(function(ref) { 1875 // Could use CSS.escape too here, we insure backward compatibility in navigator 1876 return "<p>" + $('div[id="ref-' + ref + '"]').html() + "</p>"; 1877 }).join("\n"); 1878 window.tippy(this, { 1879 allowHTML: true, 1880 content: refHtml, 1881 maxWidth: 500, 1882 interactive: true, 1883 interactiveBorder: 10, 1884 theme: 'light-border', 1885 placement: 'bottom-start' 1886 }); 1887 }); 1888 1889 // fix footnotes in tables (#411) 1890 // replacing broken distill.pub feature 1891 $('table d-footnote').each(function() { 1892 // we replace internal showAtNode methode which is triggered when hovering a footnote 1893 this.hoverBox.showAtNode = function(node) { 1894 // ported from https://github.com/distillpub/template/pull/105/files 1895 calcOffset = function(elem) { 1896 let x = elem.offsetLeft; 1897 let y = elem.offsetTop; 1898 // Traverse upwards until an `absolute` element is found or `elem` 1899 // becomes null. 1900 while (elem = elem.offsetParent && elem.style.position != 'absolute') { 1901 x += elem.offsetLeft; 1902 y += elem.offsetTop; 1903 } 1904 1905 return { left: x, top: y }; 1906 } 1907 // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetTop 1908 const bbox = node.getBoundingClientRect(); 1909 const offset = calcOffset(node); 1910 this.show([offset.left + bbox.width, offset.top + bbox.height]); 1911 } 1912 }) 1913 1914 // clear polling timer 1915 clearInterval(tid); 1916 1917 // show body now that everything is ready 1918 on_load_complete(); 1919 } 1920 1921 var tid = setInterval(distill_post_process, 50); 1922 distill_post_process(); 1923 1924 } 1925 1926 function init_downlevel() { 1927 1928 init_common(); 1929 1930 // insert hr after d-title 1931 $('.d-title').after($('<hr class="section-separator"/>')); 1932 1933 // check if we have authors 1934 var front_matter = JSON.parse($("#distill-front-matter").html()); 1935 var have_authors = front_matter.authors && front_matter.authors.length > 0; 1936
1937 // manage byline/border 1938 if (!have_authors) 1939 $('.d-byline').remove(); 1940 $('.d-byline').after($('<hr class="section-separator"/>')); 1941 $('.d-byline a').remove(); 1942 1943 // remove toc 1944 $('.d-contents').remove(); 1945 1946 // move appendix elements 1947 $('h1.appendix, h2.appendix').each(function(i, val) { 1948 $(this).changeElementType('h3'); 1949 }); 1950 $('h3.appendix').each(function(i, val) { 1951 $(this).nextUntil($('h1, h2, h3')).addBack().appendTo($('.d-appendix')); 1952 }); 1953 1954 1955 // inject headers into references and footnotes 1956 var refs_header = $('<h3></h3>'); 1957 refs_header.text('References'); 1958 $('#refs').prepend(refs_header); 1959 1960 var footnotes_header = $('<h3></h3'); 1961 footnotes_header.text('Footnotes'); 1962 $('.footnotes').children('hr').first().replaceWith(footnotes_header); 1963 1964 // move appendix-bottom entries to the bottom 1965 $('.appendix-bottom').appendTo('.d-appendix').children().unwrap(); 1966 $('.appendix-bottom').remove(); 1967 1968 // remove appendix if it's empty 1969 if ($('.d-appendix').children().length === 0) 1970 $('.d-appendix').remove(); 1971 1972 // prepend separator above appendix 1973 $('.d-appendix').before($('<hr class="section-separator" style="clear: both"/>')); 1974 1975 // trim code 1976 $('pre>code').each(function(i, val) { 1977 $(this).html($.trim($(this).html())); 1978 }); 1979 1980 // move posts-container right before article 1981 $('.posts-container').insertBefore($('.d-article')); 1982 1983 $('body').addClass('downlevel'); 1984 1985 on_load_complete(); 1986 } 1987 1988 1989 function init_common() { 1990 1991 // jquery plugin to change element types 1992 (function($) { 1993 $.fn.changeElementType = function(newType) { 1994 var attrs = {}; 1995 1996 $.each(this[0].attributes, function(idx, attr) { 1997 attrs[attr.nodeName] = attr.nodeValue; 1998 }); 1999 2000 this.replaceWith(function() { 2001 return $("<" + newType + "/>", attrs).append($(this).contents()); 2002 }); 2003 }; 2004 })(jQuery); 2005 2006 // prevent underline for linked images 2007 $('a > img').parent().css({'border-bottom' : 'none'}); 2008 2009 // mark non-body figures created by knitr chunks as 100% width 2010 $('.layout-chunk').each(function(i, val) { 2011 var figures = $(this).find('img, .html-widget'); 2012 // ignore leaflet img layers (#106) 2013 figures = figures.filter(':not(img[class*="leaflet"])') 2014 if ($(this).attr('data-layout') !== "l-body") { 2015 figures.css('width', '100%'); 2016 } else { 2017 figures.css('max-width', '100%'); 2018 figures.filter("[width]").each(function(i, val) { 2019 var fig = $(this); 2020 fig.css('width', fig.attr('width') + 'px'); 2021 }); 2022 2023 } 2024 }); 2025 2026 // auto-append index.html to post-preview links in file: protocol 2027 // and in rstudio ide preview 2028 $('.post-preview').each(function(i, val) { 2029 if (window.location.protocol === "file:") 2030 $(this).attr('href', $(this).attr('href') + "index.html"); 2031 }); 2032 2033 // get rid of index.html references in header 2034 if (window.location.protocol !== "file:") { 2035 $('.distill-site-header a[href]').each(function(i,val) { 2036 $(this).attr('href', $(this).attr('href').replace(/^index[.]html/, "./")); 2037 }); 2038 } 2039 2040 // add class to pandoc style tables 2041 $('tr.header').parent('thead').parent('table').addClass('pandoc-table'); 2042 $('.kable-table').children('table').addClass('pandoc-table'); 2043 2044 // add figcaption style to table captions 2045 $('caption').parent('table').addClass("figcaption"); 2046 2047 // initialize posts list 2048 if (window.init_posts_list) 2049 window.init_posts_list(); 2050 2051 // implmement disqus comment link 2052 $('.disqus-comment-count').click(function() { 2053 window.headroom_prevent_pin = true; 2054 $('#disqus_thread').toggleClass('hidden'); 2055 if (!$('#disqus_thread').hasClass('hidden')) { 2056 var offset = $(this).offset(); 2057 $(window).resize(); 2058 $('html, body').animate({ 2059 scrollTop: offset.top - 35 2060 }); 2061 } 2062 }); 2063 } 2064 2065 document.addEventListener('DOMContentLoaded', function() { 2066 if (is_downlevel_browser()) 2067 init_downlevel(); 2068 else 2069 window.addEventListener('WebComponentsReady', init_distill); 2070 }); 2071 2072 </script>
2072 2073 2074 <style type="text/css"> 2075 /* base variables */ 2076 2077 /* Edit the CSS properties in this file to create a custom 2078 Distill theme. Only edit values in the right column 2079 for each row; values shown are the CSS defaults. 2080 To return any property to the default, 2081 you may set its value to: unset 2082 All rows must end with a semi-colon. */ 2083 2084 /* Optional: embed custom fonts here with `@import` */ 2085 /* This must remain at the top of this file. */ 2086 2087 2088 2089 html { 2090 /*-- Main font sizes --*/ 2091 --title-size: 50px; 2092 --body-size: 1.06rem; 2093 --code-size: 14px; 2094 --aside-size: 12px; 2095 --fig-cap-size: 13px; 2096 /*-- Main font colors --*/ 2097 --title-color: #000000; 2098 --header-color: rgba(0, 0, 0, 0.8); 2099 --body-color: rgba(0, 0, 0, 0.8); 2100 --aside-color: rgba(0, 0, 0, 0.6); 2101 --fig-cap-color: rgba(0, 0, 0, 0.6); 2102 /*-- Specify custom fonts ~~~ must be imported above --*/ 2103 --heading-font: sans-serif; 2104 --mono-font: monospace; 2105 --body-font: sans-serif; 2106 --navbar-font: sans-serif; /* websites + blogs only */ 2107 } 2108 2109 /*-- ARTICLE METADATA --*/ 2110 d-byline { 2111 --heading-size: 0.6rem; 2112 --heading-color: rgba(0, 0, 0, 0.5); 2113 --body-size: 0.8rem; 2114 --body-color: rgba(0, 0, 0, 0.8); 2115 } 2116 2117 /*-- ARTICLE TABLE OF CONTENTS --*/ 2118 .d-contents { 2119 --heading-size: 18px; 2120 --contents-size: 13px; 2121 } 2122 2123 /*-- ARTICLE APPENDIX --*/ 2124 d-appendix { 2125 --heading-size: 15px; 2126 --heading-color: rgba(0, 0, 0, 0.65); 2127 --text-size: 0.8em; 2128 --text-color: rgba(0, 0, 0, 0.5); 2129 } 2130 2131 /*-- WEBSITE HEADER + FOOTER --*/ 2132 /* These properties only apply to Distill sites and blogs */ 2133 2134 .distill-site-header { 2135 --title-size: 18px; 2136 --text-color: rgba(255, 255, 255, 0.8); 2137 --text-size: 15px; 2138 --hover-color: white; 2139 --bkgd-color: #0F2E3D; 2140 } 2141 2142 .distill-site-footer { 2143 --text-color: rgba(255, 255, 255, 0.8); 2144 --text-size: 15px; 2145 --hover-color: white; 2146 --bkgd-color: #0F2E3D; 2147 } 2148 2149 /*-- Additional custom styles --*/ 2150 /* Add any additional CSS rules below */ 2151 </style> 2152 <style type="text/css">/* base variables */ 2153 2154 /* Edit the CSS properties in this file to create a custom 2155 Distill theme. Only edit values in the right column 2156 for each row; values shown are the CSS defaults. 2157 To return any property to the default, 2158 you may set its value to: unset 2159 All rows must end with a semi-colon. */ 2160 2161 /* Optional: embed custom fonts here with `@import` */ 2162 /* This must remain at the top of this file. */ 2163 @import url('https://fonts.googleapis.com/css?family=Lato:400,400i,700&display=swap'); 2164 @import url('https://fonts.googleapis.com/css2?family=Merriweather'); 2165 @import url('https://fonts.googleapis.com/css2?family=Lora'); 2166 @import url('https://fonts.googleapis.com/css2?family=Play'); 2167 @import url('https://fonts.googleapis.com/css2?family=PT+Sans'); 2168 @import url('https://fonts.googleapis.com/css2?family=Roboto+Condensed'); 2169 @import url('https://fonts.googleapis.com/css2?family=Nunito'); 2170 2171 html { 2172 /*-- Main font sizes --*/ 2173 --title-size: 32px; 2174 --body-size: 1.06rem; 2175 --code-size: 14px; 2176 --aside-size: 13px; 2177 --fig-cap-size: 13px;
2178 /*-- Main font colors --*/ 2179 --title-color: #000000; 2180 --header-color: rgba(0, 0, 0, 0.8); 2181 --body-color: rgba(0, 0, 0, 0.8); 2182 --aside-color: rgba(0, 0, 0, 0.6); 2183 --fig-cap-color: rgba(0, 0, 0, 0.6); 2184 /*-- Specify custom fonts ~~~ must be imported above --*/ 2185 --heading-font: 'Merriweather', serif; 2186 --mono-font: monospace; 2187 --body-font: 'Nunito', sans-serif; 2188 --navbar-font: 'Play', sans-serif; /* websites + blogs only */ 2189 } 2190 2191 /*-- ARTICLE METADATA --*/ 2192 d-byline { 2193 --heading-size: 0.6rem; 2194 --heading-color: rgba(0, 0, 0, 0.5); 2195 --body-size: 0.9rem; 2196 --body-color: rgba(0, 0, 0, 0.8); 2197 --font-weight: 400; 2198 } 2199 2200 /*-- ARTICLE TABLE OF CONTENTS --*/ 2201 .d-contents { 2202 --heading-size: 18px; 2203 --contents-size: 14px; 2204 } 2205 2206 /*-- ARTICLE APPENDIX --*/ 2207 d-appendix { 2208 --heading-size: 15px; 2209 --heading-color: rgba(0, 0, 0, 0.8); 2210 --text-size: 0.9em; 2211 --text-color: rgba(0, 0, 0, 0.8); 2212 } 2213 2214 /*-- WEBSITE HEADER + FOOTER --*/ 2215 /* These properties only apply to Distill sites and blogs */ 2216 2217 .distill-site-footer { 2218 --text-color: #431c5d; 2219 --text-size: 15px; 2220 --hover-color: #e05915; 2221 --bkgd-color: #bccbde; 2222 } 2223 2224 .distill-site-header { 2225 --hover-color: #e05915; 2226 --bkgd-color: #bccbde; 2227 } 2228 2229 .distill-site-header .title{ 2230 color:#431c5d; 2231 font-family: 'Merriweather'; 2232 font-size: 24px; 2233 font-style: normal; 2234 letter-spacing: 1.3px; 2235 font-weight: 200; 2236 } 2237 2238 .distill-site-header .logo img{ 2239 max-height: 35px; 2240 margin-bottom: -10px; 2241 padding-top: 3px; 2242 } 2243 2244 html, body, p { 2245 font-family: 'Nunito', sans-serif; 2246 font-weight: 200; 2247 line-height: 1.4; 2248 font-size: 0.95em; 2249 letter-spacing: 0.2px; 2250 color: #383838; 2251 font-style: normal; 2252 } 2253 2254 .distill-site-nav { 2255 color: #431c5d; 2256 font-family: 'Lato', sans-serif; 2257 font-size: 16px; 2258 } 2259 2260 .distill-site-nav a:hover { 2261 color: #e05915; 2262 } 2263 2264 .distill-site-nav a { 2265 color:#431c5d; 2266 text-decoration: none; 2267 } 2268 2269 2270 .posts-list .metadata .publishedDate { 2271 color: #e05915; 2272 } 2273 2274 .posts-list .post-preview h2, 2275 .posts-list .description h2 { 2276 font-family: 'Merriweather'; 2277 line-height: 1.3; 2278 font-size: 1.1em; 2279 font-style: bold; 2280 letter-spacing: 1.3px; 2281 font-weight: 600; 2282 } 2283 2284 h2, h1, d-title h2, d-title h1, title { 2285 font-family: 'Merriweather'; 2286 line-height: 1.3; 2287 font-size: 1.0em; 2288 font-style: normal; 2289 letter-spacing: 1.3px; 2290 font-weight: 600; 2291 } 2292 2293 code, code.r{ 2294 font-family: 'Consolas', "Roboto Mono", "Ubuntu Mono", monospace; 2295 color: #431c5d; 2296 line-height: 1.2; 2297 font-weight: 400; 2298 font-size: 1em; 2299 padding: 1px 0px; 2300 } 2301 2302 d-article div.sourceCode code, 2303 d-article pre code{ 2304 font-family: 'Consolas', "Roboto Mono", "Ubuntu Mono", monospace; 2305 line-height: 1.2; 2306 font-weight: 400; 2307 font-size: 1.1em; 2308 } 2309 2310 d-article div.sourceCode pre { 2311 border: 1px solid rgba(0,0,0,0.1); 2312 background: rgba(0, 0, 0, 0.02); 2313 padding: 10px 18px; 2314 border-radius: 3px; 2315 } 2316 2317 d-article a { 2318 border-bottom: 1px solid rgba(67, 28, 93, 0.4); 2319 text-decoration: none; 2320 } 2321 2322 .posts-list .dt-tags .dt-tag, .dt-tags .dt-tag { 2323 padding-top: 0.1em; 2324 padding-right: 0.3em; 2325 padding-bottom: 0.2em; 2326 padding-left: 0.3em; 2327 border-radius: 5px; 2328 font-size: 85%; 2329 text-transform: lowercase; 2330 background-color: #e6e9f0; 2331 font-weight: 300; 2332 } 2333 2334 element, d-article details{ 2335 font-size: 14px; 2336 color: #e05915; 2337 } 2338 2339 td { /* Table */ 2340 font-size: 14px; 2341 font-family: "Roboto Condensed", "Nunito", sans-serif; 2342 } 2343 2344 th { /* Table Header */ 2345 font-size: 14px; 2346 font-weight: bold; 2347 font-family: "Roboto Condensed", "Nunito", sans-serif; 2348 } 2349 2350 div.datatables { 2351 height: auto !important; 2352 } 2353 2354 table.dataTable tbody th, 2355 table.dataTable tbody td { 2356 padding-top: 2px; 2357 padding-bottom: 2px; 2358 padding-left: 5px; 2359 font-size: 14px; 2360 line-height: 1.3em; 2361 } 2362 2363 .dataTables_wrapper .dataTables_length, 2364 .dataTables_wrapper .dataTables_filter, 2365 .dataTables_wrapper .dataTables_info, 2366 .dataTables_wrapper .dataTables_processing, 2367 .dataTables_wrapper .dataTables_paginate { 2368 color: #333; 2369 font-size: 14px; 2370 }</style> 2371 <style type="text/css"> 2372 /* base style */ 2373 2374 /* FONT FAMILIES */ 2375 2376 :root { 2377 --heading-default: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif;
2378 --mono-default: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 2379 --body-default: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif; 2380 } 2381 2382 body, 2383 .posts-list .post-preview p, 2384 .posts-list .description p { 2385 font-family: var(--body-font), var(--body-default); 2386 } 2387 2388 h1, h2, h3, h4, h5, h6, 2389 .posts-list .post-preview h2, 2390 .posts-list .description h2 { 2391 font-family: var(--heading-font), var(--heading-default); 2392 } 2393 2394 d-article div.sourceCode code, 2395 d-article pre code { 2396 font-family: var(--mono-font), var(--mono-default); 2397 } 2398 2399 2400 /*-- TITLE --*/ 2401 d-title h1, 2402 .posts-list > h1 { 2403 color: var(--title-color, black); 2404 } 2405 2406 d-title h1 { 2407 font-size: var(--title-size, 50px); 2408 } 2409 2410 /*-- HEADERS --*/ 2411 d-article h1, 2412 d-article h2, 2413 d-article h3, 2414 d-article h4, 2415 d-article h5, 2416 d-article h6 { 2417 color: var(--header-color, rgba(0, 0, 0, 0.8)); 2418 } 2419 2420 /*-- BODY --*/ 2421 d-article > p, /* only text inside of <p> tags */ 2422 d-article > ul, /* lists */ 2423 d-article > ol { 2424 color: var(--body-color, rgba(0, 0, 0, 0.8)); 2425 font-size: var(--body-size, 1.06rem); 2426 } 2427 2428 2429 /*-- CODE --*/ 2430 d-article div.sourceCode code, 2431 d-article pre code { 2432 font-size: var(--code-size, 14px); 2433 } 2434 2435 /*-- ASIDE --*/ 2436 d-article aside { 2437 font-size: var(--aside-size, 12px); 2438 color: var(--aside-color, rgba(0, 0, 0, 0.6)); 2439 } 2440 2441 /*-- FIGURE CAPTIONS --*/ 2442 figure .caption, 2443 figure figcaption, 2444 .figure .caption { 2445 font-size: var(--fig-cap-size, 13px); 2446 color: var(--fig-cap-color, rgba(0, 0, 0, 0.6)); 2447 } 2448 2449 /*-- METADATA --*/ 2450 d-byline h3 { 2451 font-size: var(--heading-size, 0.6rem); 2452 color: var(--heading-color, rgba(0, 0, 0, 0.5)); 2453 } 2454 2455 d-byline { 2456 font-size: var(--body-size, 0.8rem); 2457 color: var(--body-color, rgba(0, 0, 0, 0.8)); 2458 } 2459 2460 d-byline a, 2461 d-article d-byline a { 2462 color: var(--body-color, rgba(0, 0, 0, 0.8)); 2463 } 2464 2465 /*-- TABLE OF CONTENTS --*/ 2466 .d-contents nav h3 { 2467 font-size: var(--heading-size, 18px); 2468 } 2469 2470 .d-contents nav a { 2471 font-size: var(--contents-size, 13px); 2472 } 2473 2474 /*-- APPENDIX --*/ 2475 d-appendix h3 { 2476 font-size: var(--heading-size, 15px); 2477 color: var(--heading-color, rgba(0, 0, 0, 0.65)); 2478 } 2479 2480 d-appendix { 2481 font-size: var(--text-size, 0.8em); 2482 color: var(--text-color, rgba(0, 0, 0, 0.5)); 2483 } 2484 2485 d-appendix d-footnote-list a.footnote-backlink { 2486 color: var(--text-color, rgba(0, 0, 0, 0.5)); 2487 } 2488 2489 /*-- WEBSITE HEADER + FOOTER --*/ 2490 .distill-site-header .title { 2491 font-size: var(--title-size, 18px); 2492 font-family: var(--navbar-font), var(--heading-default); 2493 } 2494 2495 .distill-site-header a, 2496 .nav-dropdown .nav-dropbtn { 2497 font-family: var(--navbar-font), var(--heading-default); 2498 } 2499 2500 .nav-dropdown .nav-dropbtn { 2501 color: var(--text-color, rgba(255, 255, 255, 0.8)); 2502 font-size: var(--text-size, 15px); 2503 } 2504 2505 .distill-site-header a:hover, 2506 .nav-dropdown:hover .nav-dropbtn { 2507 color: var(--hover-color, white); 2508 } 2509 2510 .distill-site-header { 2511 font-size: var(--text-size, 15px); 2512 color: var(--text-color, rgba(255, 255, 255, 0.8)); 2513 background-color: var(--bkgd-color, #0F2E3D); 2514 } 2515 2516 .distill-site-footer { 2517 font-size: var(--text-size, 15px); 2518 color: var(--text-color, rgba(255, 255, 255, 0.8)); 2519 background-color: var(--bkgd-color, #0F2E3D); 2520 } 2521 2522 .distill-site-footer a:hover { 2523 color: var(--hover-color, white); 2524 }</style> 2525 <!--/radix_placeholder_distill--> 2526
2526<script src="site_libs/header-attrs-2.22/header-attrs.js"></script>
2526 2527
2527<script src="site_libs/popper-2.6.0/popper.min.js"></script>
2527 2528 <link href="site_libs/tippy-6.2.7/tippy.css" rel="stylesheet" /> 2529 <link href="site_libs/tippy-6.2.7/tippy-light-border.css" rel="stylesheet" /> 2530
2530<script src="site_libs/tippy-6.2.7/tippy.umd.min.js"></script>
2530 2531
2531<script src="site_libs/anchor-4.2.2/anchor.min.js"></script>
2531 2532
2532<script src="site_libs/bowser-1.9.3/bowser.min.js"></script>
2532 2533
2533<script src="site_libs/webcomponents-2.0.0/webcomponents.js"></script>
2533 2534
2534<script src="site_libs/distill-2.2.21/template.v2.js"></script>
2534 2535 <!--radix_placeholder_site_in_header-->
vendor: 116 bytes, lines 2535-2536
2535 2536 <script type="text/javascript" cookie-consent="tracking" async src="https://www.googletagmanager.com/gtag/js?id=
2536G-W1EX0W2M3D
vendor: 15 bytes, lines 2536-2537
2536"></script> 2537
2537<script type="text/javascript" cookie-consent="tracking"> 2538
vendor: 136 bytes, lines 2538-2541
2538window.dataLayer = window.dataLayer || []; 2539 function gtag(){dataLayer.push(arguments);} 2540 gtag('js', new Date()); 2541 gtag('config', '
2541G-W1EX0W2M3D
vendor: 7 bytes, lines 2541-2542
2541'); 2542
2542</script>
2542 2543 <!--/radix_placeholder_site_in_header--> 2544 2545 2546</head> 2547 2548<body class="layout-listing"> 2549 2550<!--radix_placeholder_front_matter--> 2551
2552<script id="distill-front-matter" type="text/json"> 2553{"title":"dwayzeR","authors":[]} 2554</script>
2554 2555 2556<!--/radix_placeholder_front_matter--> 2557<!--radix_placeholder_navigation_before_body--> 2558<header class="header header--fixed" role="banner"> 2559<nav class="distill-site-nav distill-site-header"> 2560<div class="nav-left"> 2561<span class="logo"> 2562<img src="images/dwayzer.png"/> 2563</span> 2564<a class='title' href='/'>ConviviaR Tools</a> 2565<input id="distill-search" class="nav-search hidden" type="text" placeholder="Search..."/> 2566</div> 2567<div class="nav-right"> 2568<a href='/'>Main</a> 2569<a href='/about'>About</a> 2570<a href="index.xml"> 2571<i class="fa fa-rss" aria-hidden="true"></i> 2572</a> 2573<a href="javascript:void(0);" class="nav-toggle">☰</a> 2574</div> 2575</nav> 2576</header> 2577<!--/radix_placeholder_navigation_before_body--> 2578<!--radix_placeholder_site_before_body--> 2579<!--/radix_placeholder_site_before_body--> 2580<!--radix_placeholder_article_listing--> 2581� 2582�
2583<script type="application/javascript">� 2584� 2585function init_posts_list() {� 2586� 2587 function load_image(img) {� 2588 var src = $(img).attr('data-src');� 2589 if (src) {� 2590 $(img).attr('src', src);� 2591 $(img).on("load", function() {� 2592 img.removeAttribute('data-src');� 2593 });� 2594 }� 2595 }� 2596� 2597 function set_posts_visible(posts, visible) {� 2598 if (visible) {� 2599� 2600 // show bottom border by default� 2601 $(posts).removeClass('post-preview-last');� 2602� 2603 // apply limits if need be� 2604 var max_posts = 25;� 2605 var apply_limits = $('.posts-container').hasClass('posts-apply-limit');� 2606 if (apply_limits && posts.length > max_posts) {� 2607 posts = $(posts).slice(0, max_posts);� 2608 } else {� 2609 $('.posts-more a').addClass('hidden');� 2610 }� 2611� 2612 // apply last style� 2613 $(posts.slice(-1)[0]).addClass('post-preview-last');� 2614� 2615 $(posts).removeClass('hidden');� 2616 $(posts).find('img[data-src]').each(function(i, img) {� 2617 load_image(img);� 2618 });� 2619 } else {� 2620 $(posts).addClass('hidden');� 2621 }� 2622 }� 2623� 2624 function apply_hash_filter() {� 2625� 2626 // clear active state� 2627 $('.categories .active').removeClass('active');� 2628� 2629 // mark all posts invisible to start� 2630 set_posts_visible($('.posts-list').children('a'), false);� 2631� 2632 // if we have a hash filter� 2633 if (window.location.hash && window.location.hash.startsWith("#category:")) {� 2634� 2635 // mark posts that match the category visible� 2636 var page_category = window.location.hash.replace(/^#category:/, "");� 2637 page_category = decodeURIComponent(page_category)� 2638 var posts = $('.post-metadata').map(function(idx, script) {� 2639 var metadata = $.parseJSON($(script).html());� 2640 var post = null;� 2641 $.each(metadata.categories, function(idx, category) {� 2642 category = category.replace(/ /g,"_");� 2643 if ((page_category || '').toLowerCase() === "articles" || category === page_category) {� 2644 post = $(script).parent().get();� 2645 return false;� 2646 }� 2647 });� 2648 return post;� 2649 });� 2650 set_posts_visible(posts, true);� 2651� 2652 // mark the hash active� 2653 $('.categories li>a[href="' + decodeURIComponent(window.location.hash) + '"]').addClass('active');� 2654� 2655 // update the list_caption� 2656 var list_caption = $('.posts-list-caption');� 2657 var caption = (page_category || '').toLowerCase() === "articles"� 2658 ? list_caption.attr('data-caption')� 2659 : ('Category: ' + page_category.replace(/_/g," "));� 2660 list_caption.text(caption);� 2661� 2662 } else {� 2663� 2664 // no hash filter, make all posts visible (subject to max display)� 2665 set_posts_visible($('.posts-list').children(), true);� 2666� 2667 // reset list caption� 2668 var list_caption = $('.posts-list-caption');� 2669 list_caption.text(list_caption.attr('data-caption'));� 2670� 2671� 2672 }� 2673 }� 2674� 2675 // more articles� 2676 function apply_post_limits(apply) {� 2677 if (apply) {� 2678 $('.posts-container').addClass('posts-apply-limit');� 2679 $('.posts-more a').removeClass('hidden');� 2680 } else {� 2681 $('.posts-container').removeClass('posts-apply-limit');� 2682 $('.posts-more a').addClass('hidden');� 2683 }� 2684 }� 2685� 2686 // click handling for tags� 2687 $('.dt-tag').click(function(ev) {� 2688 window.location.hash = '#category:' + $(this).text().replace(/ /g, "_");� 2689 return false;� 2690 })� 2691� 2692 // hash filter handling� 2693 apply_hash_filter();� 2694 $(window).on('hashchange',function() {� 2695 apply_post_limits(true);� 2696 apply_hash_filter();� 2697 });� 2698� 2699 // more articles link� 2700 $('.posts-more a').click(function(e) {� 2701 e.preventDefault();� 2702 apply_post_limits(false);� 2703 apply_hash_filter();� 2704 return false;� 2705 });� 2706� 2707}� 2708� 2709</script>
2709� 2710� 2711� 2712 2713<div class="posts-container posts-with-sidebar posts-apply-limit l-screen-inset"> 2714<div class="posts-list"> 2715<h1 class="posts-list-caption" data-caption="dwayzeR">dwayzeR</h1> 2716<a href="posts/2021-11-22-using-cc-unicode-symbols-in-ggplot2/" class="post-preview">
2717<script class="post-metadata" type="text/json">{"categories":["open science","r","unicode","ggplot2"]}</script>
2717 2718<div class="metadata"> 2719<div class="publishedDate">Feb. 12, 2024</div> 2720</div> 2721<div class="thumbnail"> 2722<img src="posts/2021-11-22-using-cc-unicode-symbols-in-ggplot2/images/cc_in_ggplot.png"/> 2723</div> 2724<div class="description"> 2725<h2>Using CC unicode symbols in ggplot2</h2> 2726<div class="dt-tags"> 2727<div class="dt-tag">open science</div> 2728<div class="dt-tag">r</div> 2729<div class="dt-tag">unicode</div> 2730<div class="dt-tag">ggplot2</div> 2731</div> 2732<p>A short tutorial on how to use the icons for the Creative Commons licenses into ggplot2 charts.</p> 2733</div> 2734</a> 2735<a href="posts/2024-02-10-drawing-a-zodiac-chart/" class="post-preview">
2736<script class="post-metadata" type="text/json">{"categories":["r","wikidata","ggplot2"]}</script>
2736 2737<div class="metadata"> 2738<div class="publishedDate">Feb. 10, 2024</div> 2739</div> 2740<div class="thumbnail"> 2741<img src="posts/2024-02-10-drawing-a-zodiac-chart/images/eu_combo_zodiac.png"/> 2742</div> 2743<div class="description"> 2744<h2>Zodiac Charts</h2> 2745<div class="dt-tags"> 2746<div class="dt-tag">r</div> 2747<div class="dt-tag">wikidata</div> 2748<div class="dt-tag">ggplot2</div> 2749</div> 2750<p>Zodiac signs are popular in many countries. In this post I am offering a routine for creation of fancy zodiac charts based on the birth dates. The example charts are drawn for the elected members of some national parliaments (US House of Representative, UK House of Commons, France National Assembly, German Bundestag, and Russian Duma). The text and the charts are free of any political implications.</p> 2751</div> 2752</a> 2753<a href="posts/2021-09-20-update-on-riro-project/" class="post-preview">
2754<script class="post-metadata" type="text/json">{"categories":["ror","wikidata","russian data","organization identifier","riro","r"]}</script>
2754 2755<div class="metadata"> 2756<div class="publishedDate">Sept. 20, 2021</div> 2757</div> 2758<div class="thumbnail"> 2759<img src="posts/2021-09-20-update-on-riro-project/images/leninsky.png"/> 2760</div> 2761<div class="description"> 2762<h2>Update on RIRO project</h2> 2763<div class="dt-tags"> 2764<div class="dt-tag">ror</div> 2765<div class="dt-tag">wikidata</div> 2766<div class="dt-tag">russian data</div> 2767<div class="dt-tag">organization identifier</div> 2768<div class="dt-tag">riro</div> 2769<div class="dt-tag">r</div> 2770</div> 2771<p>RIRO v.1.2 is out! Here are just some personal reflections on RIRO project's development.</p> 2772</div> 2773</a> 2774<a href="posts/2021-07-27-new-release-of-riro-is-here/" class="post-preview">
2775<script class="post-metadata" type="text/json">{"categories":["ror","russian data","organization identifier","riro","r"]}</script>
2775 2776<div class="metadata"> 2777<div class="publishedDate">July 26, 2021</div> 2778</div> 2779<div class="thumbnail"> 2780<img src="posts/2021-07-27-new-release-of-riro-is-here/images/ror_network.png"/> 2781</div> 2782<div class="description"> 2783<h2>New Release of RIRO is here</h2> 2784<div class="dt-tags"> 2785<div class="dt-tag">ror</div> 2786<div class="dt-tag">russian data</div> 2787<div class="dt-tag">organization identifier</div> 2788<div class="dt-tag">riro</div> 2789<div class="dt-tag">r</div> 2790</div> 2791<p>RIRO is a Russian Index of Research Organizations and here I am writing about (briefly) what this project is by its 1.1 version.</p> 2792</div> 2793</a> 2794<a href="posts/2021-07-02-importing-author-information-from-crossref-to-wikidata-via-quickstatements/" class="post-preview">
2795<script class="post-metadata" type="text/json">{"categories":["crossref","wikidata","r","quickstatements","sparql","author metadata"]}</script>
2795 2796<div class="metadata"> 2797<div class="publishedDate">July 5, 2021</div> 2798</div> 2799<div class="thumbnail"> 2800<img src="posts/2021-07-02-importing-author-information-from-crossref-to-wikidata-via-quickstatements/images/wd_statement_sok2.PNG"/> 2801</div> 2802<div class="description"> 2803<h2>Importing Author Information from CrossRef to Wikidata via QuickStatements</h2> 2804<div class="dt-tags"> 2805<div class="dt-tag">crossref</div> 2806<div class="dt-tag">wikidata</div> 2807<div class="dt-tag">r</div> 2808<div class="dt-tag">quickstatements</div> 2809<div class="dt-tag">sparql</div> 2810<div class="dt-tag">author metadata</div> 2811</div> 2812<p>The post continues my quest to improve the presence of academic journal(s) in Wikidata. I reviewed the different searching approaches to find the authors, especially those with with non-English names, in Wikidata and upload the author metadata via QuickStatements.</p> 2813</div> 2814</a> 2815<a href="posts/2021-06-28-post-publication-collecting-orcids-for-the-authors/" class="post-preview">
2816<script class="post-metadata" type="text/json">{"categories":["russian data","orcid","r","crossref","microsoft academic","igraph/tidygraph","fuzzy matching","open citations","coauthorship analysis"]}</script>
2816 2817<div class="metadata"> 2818<div class="publishedDate">June 28, 2021</div> 2819</div> 2820<div class="thumbnail"> 2821<img data-src="posts/2021-06-28-post-publication-collecting-orcids-for-the-authors/images/graph.png"/> 2822</div> 2823<div class="description"> 2824<h2>Post-Publication Collecting ORCIDs for the Authors</h2> 2825<div class="dt-tags"> 2826<div class="dt-tag">russian data</div> 2827<div class="dt-tag">orcid</div> 2828<div class="dt-tag">r</div> 2829<div class="dt-tag">crossref</div> 2830<div class="dt-tag">microsoft academic</div> 2831<div class="dt-tag">igraph/tidygraph</div> 2832<div class="dt-tag">fuzzy matching</div> 2833<div class="dt-tag">open citations</div> 2834<div class="dt-tag">coauthorship analysis</div> 2835</div> 2836<p>What if the journal ignored ORCID for years? Is there a simple way to collect their ORCIDs except emailing'em with gentle reminders? In this post I exploit the ways to collect ORCIDs for the authors of already published articles using the open sources (CrossRef, Microsoft Academic, ORCID). Writing it was an unusually long journey, as I had to figth inconsistencies and revise the approaches. An initial share of ORCIDs in CrossRef for the authors of selected articles was 10%. It was raised to 32% with just algorithm-based approach and further was improved to 64% after additional manual check-up of the automatically pre-selected candidates. This is another long post about the scholarly articles, metadata quality, blessed open APIs, and utility of R packages.</p> 2837</div> 2838</a> 2839<a href="posts/2021-06-15-tagging-the-abstracts-with-wikidata-items/" class="post-preview">
2840<script class="post-metadata" type="text/json">{"categories":["wikidata","udpipe","api","text mapping","sparql"]}</script>
2840 2841<div class="metadata"> 2842<div class="publishedDate">June 16, 2021</div> 2843</div> 2844<div class="thumbnail"> 2845<img data-src="posts/2021-06-15-tagging-the-abstracts-with-wikidata-items/images/editable_table.png"/> 2846</div> 2847<div class="description"> 2848<h2>Tagging the Scientific Abstracts with Wikidata Items</h2> 2849<div class="dt-tags"> 2850<div class="dt-tag">wikidata</div> 2851<div class="dt-tag">udpipe</div> 2852<div class="dt-tag">api</div> 2853<div class="dt-tag">text mapping</div> 2854<div class="dt-tag">sparql</div> 2855</div> 2856<p>Here I am trying to build a script that process the short scientific texts (abstracts) and finds Wikidata items corresponding to the terms. An interactive and editable table is also created to allow an editor to validate the found matches and find other related items. A bit amateurish attempt by a Wikidata newbie.</p> 2857</div> 2858</a> 2859<a href="posts/2021-06-09-russian-journals-indexed-by-scopus-rsci-and-wos/" class="post-preview">
2860<script class="post-metadata" type="text/json">{"categories":["russian data","citation indices","scopus","web of science","r","rsci","issn.org","crossref","lens.org"]}</script>
2860 2861<div class="metadata"> 2862<div class="publishedDate">June 9, 2021</div> 2863</div> 2864<div class="thumbnail"> 2865<img data-src="posts/2021-06-09-russian-journals-indexed-by-scopus-rsci-and-wos/images/rus_jpournals_joint_list.png"/> 2866</div> 2867<div class="description"> 2868<h2>Russian Journals indexed by Scopus, RSCI, and WoS</h2> 2869<div class="dt-tags"> 2870<div class="dt-tag">russian data</div> 2871<div class="dt-tag">citation indices</div> 2872<div class="dt-tag">scopus</div> 2873<div class="dt-tag">web of science</div> 2874<div class="dt-tag">r</div> 2875<div class="dt-tag">rsci</div> 2876<div class="dt-tag">issn.org</div> 2877<div class="dt-tag">crossref</div> 2878<div class="dt-tag">lens.org</div> 2879</div> 2880<p>How difficult it can be to build an aggregated list of the scientific journal titles indexed in A&I databases and citation indices? Extremely difficult, if those venues are the Russian academic journals. In this post I am reviewing the key obstacles and trying to build such a list of the Russian journals indexed in Web of Science Core Collection, Scopus, and RSCI (Russian Citation Index by Web of Science). This is a version updated on June 9, 2021.</p> 2881</div> 2882</a> 2883<a href="posts/2021-06-07-incites-topics-4-benchmarking/" class="post-preview">
2884<script class="post-metadata" type="text/json">{"categories":["russian data","citation topics","benchmarking","incites","r","htmlwidgets"]}</script>
2884 2885<div class="metadata"> 2886<div class="publishedDate">June 7, 2021</div> 2887</div> 2888<div class="thumbnail"> 2889<img data-src="posts/2021-06-07-incites-topics-4-benchmarking/images/sunburst_screenshot.png"/> 2890</div> 2891<div class="description"> 2892<h2>Using R to analyze the InCites (Clarivate) Citation Topics</h2> 2893<div class="dt-tags"> 2894<div class="dt-tag">russian data</div> 2895<div class="dt-tag">citation topics</div> 2896<div class="dt-tag">benchmarking</div> 2897<div class="dt-tag">incites</div> 2898<div class="dt-tag">r</div> 2899<div class="dt-tag">htmlwidgets</div> 2900</div> 2901<p>Even the most succesful information tools can not offer all the possible analytical interfaces or visualization patterns. In this post I am using the R and few htmlwidgets to build a UI for benchmarking the universities based on their InCites citation topics (Clarivate).</p> 2902</div> 2903</a> 2904<a href="posts/2021-05-27-academic-journals-through-the-lens-of-wikidata/" class="post-preview">
2905<script class="post-metadata" type="text/json">{"categories":["russian data","journal identifier","r","wikidata","wikipedia","sparql"]}</script>
2905 2906<div class="metadata"> 2907<div class="publishedDate">May 26, 2021</div> 2908</div> 2909<div class="thumbnail"> 2910<img data-src="posts/2021-05-27-academic-journals-through-the-lens-of-wikidata/images/5_year_output.png"/> 2911</div> 2912<div class="description"> 2913<h2>National Academic Journals in Wikidata and Wikipedia</h2> 2914<div class="dt-tags"> 2915<div class="dt-tag">russian data</div> 2916<div class="dt-tag">journal identifier</div> 2917<div class="dt-tag">r</div> 2918<div class="dt-tag">wikidata</div> 2919<div class="dt-tag">wikipedia</div> 2920<div class="dt-tag">sparql</div> 2921</div> 2922<p>In this post I am using SPARQL for searching the Russian academic journals in Wikidata and Wikipedia services, and trying to assess their standing.</p> 2923</div> 2924</a> 2925<a href="posts/2021-05-24-riro/" class="post-preview">
2926<script class="post-metadata" type="text/json">{"categories":["russian data","organization identifier","scopus","r","wikidata","web of science","ror","riro","microsoft academic"]}</script>
2926 2927<div class="metadata"> 2928<div class="publishedDate">May 25, 2021</div> 2929</div> 2930<div class="thumbnail"> 2931<img data-src="posts/2021-05-24-riro/images/RIRO_identifiers_for_3_orgs.png"/> 2932</div> 2933<div class="description"> 2934<h2>RIRO - Russian Index of the Research Organizations</h2> 2935<div class="dt-tags"> 2936<div class="dt-tag">russian data</div> 2937<div class="dt-tag">organization identifier</div> 2938<div class="dt-tag">scopus</div> 2939<div class="dt-tag">r</div> 2940<div class="dt-tag">wikidata</div> 2941<div class="dt-tag">web of science</div> 2942<div class="dt-tag">ror</div> 2943<div class="dt-tag">riro</div> 2944<div class="dt-tag">microsoft academic</div> 2945</div> 2946<p>With Web of Science & Scopus, ROR & GRID, Wikidata & Microsoft Academic, ISNI & other providers of the research organization identifiers, is there a need for another one? In this post I am going to answer this question by telling you about RIRO project, launched by me and Ivan Sterligov today. You will see what RORI is, how to get the data, and what value it can provide for the bibliometric research.</p> 2947</div> 2948</a> 2949<a href="posts/2021-05-10-vak-titles-in-crossref/" class="post-preview">
2950<script class="post-metadata" type="text/json">{"categories":["russian data","issn.org","crossref","r","gov data"]}</script>
2950 2951<div class="metadata"> 2952<div class="publishedDate">May 12, 2021</div> 2953</div> 2954<div class="thumbnail"> 2955<img data-src="posts/2021-05-10-vak-titles-in-crossref/images/vak_titles_in_crossref.png"/> 2956</div> 2957<div class="description"> 2958<h2>Checking VAK titles in CrossRef</h2> 2959<div class="dt-tags"> 2960<div class="dt-tag">russian data</div> 2961<div class="dt-tag">issn.org</div> 2962<div class="dt-tag">crossref</div> 2963<div class="dt-tag">r</div> 2964<div class="dt-tag">gov data</div> 2965</div> 2966<p>In this post I am checking how many academic journals from the Russian white list (VAK) deposited their 2020/2021 publications in CrossRef. To do that I queried portal.issn.org & CrossRef, and parsed PDF & JSON files, what I think makes this post of interest to those who analyze the academic journals.</p> 2967</div> 2968</a> 2969<a href="posts/2021-05-09-vak-list-pdfs/" class="post-preview">
2970<script class="post-metadata" type="text/json">{"categories":["russian data","r","gov data"]}</script>
2970 2971<div class="metadata"> 2972<div class="publishedDate">May 9, 2021</div> 2973</div> 2974<div class="thumbnail"> 2975<img/> 2976</div> 2977<div class="description"> 2978<h2>Extracting the Tables from PDF</h2> 2979<div class="dt-tags"> 2980<div class="dt-tag">russian data</div> 2981<div class="dt-tag">r</div> 2982<div class="dt-tag">gov data</div> 2983</div> 2984<p>In this post I am using a R package tabulizer to extract a large table from 853-page PDF, containing a list of VAK (Russian) journal titles.</p> 2985</div> 2986</a> 2987</div> 2988<div class="posts-sidebar"> 2989<div class="sidebar-section categories"> 2990<h3>Categories</h3> 2991<ul> 2992<li> 2993<a href="#category:articles">articles</a> 2994<span class="category-count">(13)</span> 2995</li> 2996<li> 2997<a href="#category:api">api</a> 2998<span class="category-count">(1)</span> 2999</li> 3000<li> 3001<a href="#category:author_metadata">author metadata</a> 3002<span class="category-count">(1)</span> 3003</li> 3004<li> 3005<a href="#category:benchmarking">benchmarking</a> 3006<span class="category-count">(1)</span> 3007</li> 3008<li> 3009<a href="#category:citation_indices">citation indices</a> 3010<span class="category-count">(1)</span> 3011</li> 3012<li> 3013<a href="#category:citation_topics">citation topics</a> 3014<span class="category-count">(1)</span> 3015</li> 3016<li> 3017<a href="#category:coauthorship_analysis">coauthorship analysis</a> 3018<span class="category-count">(1)</span> 3019</li> 3020<li> 3021<a href="#category:crossref">crossref</a> 3022<span class="category-count">(4)</span> 3023</li> 3024<li> 3025<a href="#category:fuzzy_matching">fuzzy matching</a> 3026<span class="category-count">(1)</span> 3027</li> 3028<li> 3029<a href="#category:ggplot2">ggplot2</a> 3030<span class="category-count">(2)</span> 3031</li> 3032<li> 3033<a href="#category:gov_data">gov data</a> 3034<span class="category-count">(2)</span> 3035</li> 3036<li> 3037<a href="#category:htmlwidgets">htmlwidgets</a> 3038<span class="category-count">(1)</span> 3039</li> 3040<li> 3041<a href="#category:igraph/tidygraph">igraph/tidygraph</a> 3042<span class="category-count">(1)</span> 3043</li> 3044<li> 3045<a href="#category:incites">incites</a> 3046<span class="category-count">(1)</span> 3047</li> 3048<li> 3049<a href="#category:issn.org">issn.org</a> 3050<span class="category-count">(2)</span> 3051</li> 3052<li> 3053<a href="#category:journal_identifier">journal identifier</a> 3054<span class="category-count">(1)</span> 3055</li> 3056<li> 3057<a href="#category:lens.org">lens.org</a> 3058<span class="category-count">(1)</span> 3059</li> 3060<li> 3061<a href="#category:microsoft_academic">microsoft academic</a> 3062<span class="category-count">(2)</span> 3063</li> 3064<li> 3065<a href="#category:open_citations">open citations</a> 3066<span class="category-count">(1)</span> 3067</li> 3068<li> 3069<a href="#category:open_science">open science</a> 3070<span class="category-count">(1)</span> 3071</li> 3072<li> 3073<a href="#category:orcid">orcid</a> 3074<span class="category-count">(1)</span> 3075</li> 3076<li> 3077<a href="#category:organization_identifier">organization identifier</a> 3078<span class="category-count">(3)</span> 3079</li> 3080<li> 3081<a href="#category:quickstatements">quickstatements</a> 3082<span class="category-count">(1)</span> 3083</li> 3084<li> 3085<a href="#category:r">r</a> 3086<span class="category-count">(12)</span> 3087</li> 3088<li> 3089<a href="#category:riro">riro</a> 3090<span class="category-count">(3)</span> 3091</li> 3092<li> 3093<a href="#category:ror">ror</a> 3094<span class="category-count">(3)</span> 3095</li> 3096<li> 3097<a href="#category:rsci">rsci</a> 3098<span class="category-count">(1)</span> 3099</li> 3100<li> 3101<a href="#category:russian_data">russian data</a> 3102<span class="category-count">(9)</span> 3103</li> 3104<li> 3105<a href="#category:scopus">scopus</a> 3106<span class="category-count">(2)</span> 3107</li> 3108<li> 3109<a href="#category:sparql">sparql</a> 3110<span class="category-count">(3)</span> 3111</li> 3112<li> 3113<a href="#category:text_mapping">text mapping</a> 3114<span class="category-count">(1)</span> 3115</li> 3116<li> 3117<a href="#category:udpipe">udpipe</a> 3118<span class="category-count">(1)</span> 3119</li> 3120<li> 3121<a href="#category:unicode">unicode</a> 3122<span class="category-count">(1)</span> 3123</li> 3124<li> 3125<a href="#category:web_of_science">web of science</a> 3126<span class="category-count">(2)</span> 3127</li> 3128<li> 3129<a href="#category:wikidata">wikidata</a> 3130<span class="category-count">(6)</span> 3131</li> 3132<li> 3133<a href="#category:wikipedia">wikipedia</a> 3134<span class="category-count">(1)</span> 3135</li> 3136</ul> 3137</div> 3138</div> 3139<div class="posts-more"> 3140<a href="#">More articles »</a> 3141</div> 3142</div> 3143<!--/radix_placeholder_article_listing-->������������������ 3144 3145<div class="d-title"> 3146<h1>dwayzeR</h1> 3147<!--radix_placeholder_categories--> 3148<!--/radix_placeholder_categories--> 3149 3150</div> 3151 3152 3153<div class="d-article"> 3154<div class="sourceCode" id="cb1"><pre class="sourceCode r distill-force-highlighting-css"><code class="sourceCode r"></code></pre></div> 3155<!--radix_placeholder_article_footer--> 3156<!--/radix_placeholder_article_footer--> 3157</div> 3158 3159<div class="d-appendix"> 3160</div> 3161 3162 3163<!--radix_placeholder_site_after_body--> 3164<!--/radix_placeholder_site_after_body--> 3165<!--radix_placeholder_appendices--> 3166<div class="appendix-bottom"></div> 3167<!--/radix_placeholder_appendices--> 3168<!--radix_placeholder_navigation_after_body--> 3169<!--/radix_placeholder_navigation_after_body--> 3170 3171</body> 3172 3173</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.