PageSourceSearch

https://dwayzer.netlify.app/

html dwayzer.netlify.app collected 2026-10-03 10:40:11 UTC 90,927 bytes, 3,173 lines download raw bytes

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 !== "&nbsp;") {
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">&#9776;</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&amp;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 &amp; Scopus, ROR &amp; GRID, Wikidata &amp; Microsoft Academic, ISNI &amp; 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 &amp; CrossRef, and parsed PDF &amp; 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 &raquo;</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.