PageSourceSearch

https://rafael-zambrano-blog-ds.netlify.app/publicaciones

html rafael-zambrano-blog-ds.netlify.app collected 2026-10-03 11:18:53 UTC 64,379 bytes, 2,486 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<!-- This site is hosted on Netlify. Anyone can build and deploy a site
8     like this one for free: https://netlify.new/?utm_campaign=loops&utm_source=ai-legible&utm_medium=owned&utm_content=comment&utm_id=6b7d082f-80de-4033-b631-1677e0d26412
9     Netlify hosting facts for this site: static/SSR served via Netlify Edge. -->
10  <meta name="viewport" content="width=device-width, initial-scale=1"/>
11  <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"/>
12  <meta name="generator" content="distill" />
13
14  <style type="text/css">
15  /* Hide doc at startup (prevent jankiness while JS renders/transforms) */
16  body {
17    visibility: hidden;
18  }
19  </style>
20
21 <!--radix_placeholder_import_source-->
22 <!--/radix_placeholder_import_source-->
23
24<style type="text/css">code{white-space: pre;}</style>
25<style type="text/css" data-origin="pandoc">
26pre > code.sourceCode { white-space: pre; position: relative; }
27pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
28pre > code.sourceCode > span:empty { height: 1.2em; }
29.sourceCode { overflow: visible; }
30code.sourceCode > span { color: inherit; text-decoration: inherit; }
31div.sourceCode { margin: 1em 0; }
32pre.sourceCode { margin: 0; }
33@media screen {
34div.sourceCode { overflow: auto; }
35}
36@media print {
37pre > code.sourceCode { white-space: pre-wrap; }
38pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
39}
40pre.numberSource code
41  { counter-reset: source-line 0; }
42pre.numberSource code > span
43  { position: relative; left: -4em; counter-increment: source-line; }
44pre.numberSource code > span > a:first-child::before
45  { content: counter(source-line);
46    position: relative; left: -1em; text-align: right; vertical-align: baseline;
47    border: none; display: inline-block;
48    -webkit-touch-callout: none; -webkit-user-select: none;
49    -khtml-user-select: none; -moz-user-select: none;
50    -ms-user-select: none; user-select: none;
51    padding: 0 4px; width: 4em;
52    color: #aaaaaa;
53  }
54pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-left: 4px; }
55div.sourceCode
56  { color: #00769e; background-color: #f1f3f5; }
57@media screen {
58pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
59}
60code span { color: #00769e; } /* Normal */
61code span.al { color: #ad0000; } /* Alert */
62code span.an { color: #5e5e5e; } /* Annotation */
63code span.at { color: #657422; } /* Attribute */
64code span.bn { color: #ad0000; } /* BaseN */
65code span.bu { } /* BuiltIn */
66code span.cf { color: #00769e; } /* ControlFlow */
67code span.ch { color: #20794d; } /* Char */
68code span.cn { color: #8f5902; } /* Constant */
69code span.co { color: #5e5e5e; } /* Comment */
70code span.cv { color: #5e5e5e; font-style: italic; } /* CommentVar */
71code span.do { color: #5e5e5e; font-style: italic; } /* Documentation */
72code span.dt { color: #ad0000; } /* DataType */
73code span.dv { color: #ad0000; } /* DecVal */
74code span.er { color: #ad0000; } /* Error */
75code span.ex { } /* Extension */
76code span.fl { color: #ad0000; } /* Float */
77code span.fu { color: #4758ab; } /* Function */
78code span.im { } /* Import */
79code span.in { color: #5e5e5e; } /* Information */
80code span.kw { color: #00769e; } /* Keyword */
81code span.op { color: #5e5e5e; } /* Operator */
82code span.ot { color: #00769e; } /* Other */
83code span.pp { color: #ad0000; } /* Preprocessor */
84code span.sc { color: #5e5e5e; } /* SpecialChar */
85code span.ss { color: #20794d; } /* SpecialString */
86code span.st { color: #20794d; } /* String */
87code span.va { color: #111111; } /* Variable */
88code span.vs { color: #20794d; } /* VerbatimString */
89code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */
90</style>
91
92
93  <!--radix_placeholder_meta_tags-->
94  <title>Rafael Zambrano: Publicaciones</title>
95
96
97  <link rel="license" href="https://creativecommons.org/licenses/by/4.0/"/>
98
99
100  <!--  https://developers.facebook.com/docs/sharing/webmasters#markup -->
101  <meta property="og:title" content="Rafael Zambrano: Publicaciones"/>
102  <meta property="og:type" content="article"/>
103  <meta property="og:locale" content="en_US"/>
104  <meta property="og:site_name" content="Rafael Zambrano"/>
105
106  <!--  https://dev.twitter.com/cards/types/summary -->
107  <meta property="twitter:card" content="summary"/>
108  <meta property="twitter:title" content="Rafael Zambrano: Publicaciones"/>
109
110  <!--/radix_placeholder_meta_tags-->
111  <!--radix_placeholder_rmarkdown_metadata-->
112
113  
113<script type="text/json" id="radix-rmarkdown-metadata">
114  {"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["title"]}},"value":[{"type":"character","attributes":{},"value":["Publicaciones"]}]}
115  </script>
115
116  <!--/radix_placeholder_rmarkdown_metadata-->
117  <!--radix_placeholder_navigation_in_header-->
118  <meta name="distill:offset" content=""/>
119
120  
120<script type="application/javascript">
121
122    window.headroom_prevent_pin = false;
123
124    window.document.addEventListener("DOMContentLoaded", function (event) {
125
126      // initialize headroom for banner
127      var header = $('header').get(0);
128      var headerHeight = header.offsetHeight;
129      var headroom = new Headroom(header, {
130        tolerance: 5,
131        onPin : function() {
132          if (window.headroom_prevent_pin) {
133            window.headroom_prevent_pin = false;
134            headroom.unpin();
135          }
136        }
137      });
138      headroom.init();
139      if(window.location.hash)
140        headroom.unpin();
141      $(header).addClass('headroom--transition');
142
143      // offset scroll location for banner on hash change
144      // (see: https://github.com/WickyNilliams/headroom.js/issues/38)
145      window.addEventListener("hashchange", function(event) {
146        window.scrollTo(0, window.pageYOffset - (headerHeight + 25));
147      });
148
149      // responsive menu
150      $('.distill-site-header').each(function(i, val) {
151        var topnav = $(this);
152        var toggle = topnav.find('.nav-toggle');
153        toggle.on('click', function() {
154          topnav.toggleClass('responsive');
155        });
156      });
157
158      // nav dropdowns
159      $('.nav-dropbtn').click(function(e) {
160        $(this).next('.nav-dropdown-content').toggleClass('nav-dropdown-active');
161        $(this).parent().siblings('.nav-dropdown')
162           .children('.nav-dropdown-content').removeClass('nav-dropdown-active');
163      });
164      $("body").click(function(e){
165        $('.nav-dropdown-content').removeClass('nav-dropdown-active');
166      });
167      $(".nav-dropdown").click(function(e){
168        e.stopPropagation();
169      });
170    });
171  </script>
171
172
173  <style type="text/css">
174
175  /* Theme (user-documented overrideables for nav appearance) */
176
177  .distill-site-nav {
178    color: rgba(255, 255, 255, 0.8);
179    background-color: #0F2E3D;
180    font-size: 15px;
181    font-weight: 300;
182  }
183
184  .distill-site-nav a {
185    color: inherit;
186    text-decoration: none;
187  }
188
189  .distill-site-nav a:hover {
190    color: white;
191  }
192
193  @media print {
194    .distill-site-nav {
195      display: none;
196    }
197  }
198
199  .distill-site-header {
200
201  }
202
203  .distill-site-footer {
204
205  }
206
207
208  /* Site Header */
209
210  .distill-site-header {
211    width: 100%;
212    box-sizing: border-box;
213    z-index: 3;
214  }
215
216  .distill-site-header .nav-left {
217    display: inline-block;
218    margin-left: 8px;
219  }
220
221  @media screen and (max-width: 768px) {
222    .distill-site-header .nav-left {
223      margin-left: 0;
224    }
225  }
226
227
228  .distill-site-header .nav-right {
229    float: right;
230    margin-right: 8px;
231  }
232
233  .distill-site-header a,
234  .distill-site-header .title {
235    display: inline-block;
236    text-align: center;
237    padding: 14px 10px 14px 10px;
238  }
239
240  .distill-site-header .title {
241    font-size: 18px;
242    min-width: 150px;
243  }
244
245  .distill-site-header .logo {
246    padding: 0;
247  }
248
249  .distill-site-header .logo img {
250    display: none;
251    max-height: 20px;
252    width: auto;
253    margin-bottom: -4px;
254  }
255
256  .distill-site-header .nav-image img {
257    max-height: 18px;
258    width: auto;
259    display: inline-block;
260    margin-bottom: -3px;
261  }
262
263
264
265  @media screen and (min-width: 1000px) {
266    .distill-site-header .logo img {
267      display: inline-block;
268    }
269    .distill-site-header .nav-left {
270      margin-left: 20px;
271    }
272    .distill-site-header .nav-right {
273      margin-right: 20px;
274    }
275    .distill-site-header .title {
276      padding-left: 12px;
277    }
278  }
279
280
281  .distill-site-header .nav-toggle {
282    display: none;
283  }
284
285  .nav-dropdown {
286    display: inline-block;
287    position: relative;
288  }
289
290  .nav-dropdown .nav-dropbtn {
291    border: none;
292    outline: none;
293    color: rgba(255, 255, 255, 0.8);
294    padding: 16px 10px;
295    background-color: transparent;
296    font-family: inherit;
297    font-size: inherit;
298    font-weight: inherit;
299    margin: 0;
300    margin-top: 1px;
301    z-index: 2;
302  }
303
304  .nav-dropdown-content {
305    display: none;
306    position: absolute;
307    background-color: white;
308    min-width: 200px;
309    border: 1px solid rgba(0,0,0,0.15);
310    border-radius: 4px;
311    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.1);
312    z-index: 1;
313    margin-top: 2px;
314    white-space: nowrap;
315    padding-top: 4px;
316    padding-bottom: 4px;
317  }
318
319  .nav-dropdown-content hr {
320    margin-top: 4px;
321    margin-bottom: 4px;
322    border: none;
323    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
324  }
325
326  .nav-dropdown-active {
327    display: block;
328  }
329
330  .nav-dropdown-content a, .nav-dropdown-content .nav-dropdown-header {
331    color: black;
332    padding: 6px 24px;
333    text-decoration: none;
334    display: block;
335    text-align: left;
336  }
337
338  .nav-dropdown-content .nav-dropdown-header {
339    display: block;
340    padding: 5px 24px;
341    padding-bottom: 0;
342    text-transform: uppercase;
343    font-size: 14px;
344    color: #999999;
345    white-space: nowrap;
346  }
347
348  .nav-dropdown:hover .nav-dropbtn {
349    color: white;
350  }
351
352  .nav-dropdown-content a:hover {
353    background-color: #ddd;
354    color: black;
355  }
356
357  .nav-right .nav-dropdown-content {
358    margin-left: -45%;
359    right: 0;
360  }
361
362  @media screen and (max-width: 768px) {
363    .distill-site-header a, .distill-site-header .nav-dropdown  {display: none;}
364    .distill-site-header a.nav-toggle {
365      float: right;
366      display: block;
367    }
368    .distill-site-header .title {
369      margin-left: 0;
370    }
371    .distill-site-header .nav-right {
372      margin-right: 0;
373    }
374    .distill-site-header {
375      overflow: hidden;
376    }
377    .nav-right .nav-dropdown-content {
378      margin-left: 0;
379    }
380  }
381
382
383  @media screen and (max-width: 768px) {
384    .distill-site-header.responsive {position: relative; min-height: 500px; }
385    .distill-site-header.responsive a.nav-toggle {
386      position: absolute;
387      right: 0;
388      top: 0;
389    }
390    .distill-site-header.responsive a,
391    .distill-site-header.responsive .nav-dropdown {
392      display: block;
393      text-align: left;
394    }
395    .distill-site-header.responsive .nav-left,
396    .distill-site-header.responsive .nav-right {
397      width: 100%;
398    }
399    .distill-site-header.responsive .nav-dropdown {float: none;}
400    .distill-site-header.responsive .nav-dropdown-content {position: relative;}
401    .distill-site-header.responsive .nav-dropdown .nav-dropbtn {
402      display: block;
403      width: 100%;
404      text-align: left;
405    }
406  }
407
408  /* Site Footer */
409
410  .distill-site-footer {
411    width: 100%;
412    overflow: hidden;
413    box-sizing: border-box;
414    z-index: 3;
415    margin-top: 30px;
416    padding-top: 30px;
417    padding-bottom: 30px;
418    text-align: center;
419  }
420
421  /* Headroom */
422
423  d-title {
424    padding-top: 6rem;
425  }
426
427  @media print {
428    d-title {
429      padding-top: 4rem;
430    }
431  }
432
433  .headroom {
434    z-index: 1000;
435    position: fixed;
436    top: 0;
437    left: 0;
438    right: 0;
439  }
440
441  .headroom--transition {
442    transition: all .4s ease-in-out;
443  }
444
445  .headroom--unpinned {
446    top: -100px;
447  }
448
449  .headroom--pinned {
450    top: 0;
451  }
452
453  /* adjust viewport for navbar height */
454  /* helps vertically center bootstrap (non-distill) content */
455  .min-vh-100 {
456    min-height: calc(100vh - 100px) !important;
457  }
458
459  </style>
460
461  
461<script src="site_libs/jquery-3.6.0/jquery-3.6.0.min.js"></script>
461
462  <link href="site_libs/font-awesome-5.1.0/css/all.css" rel="stylesheet"/>
463  <link href="site_libs/font-awesome-5.1.0/css/v4-shims.css" rel="stylesheet"/>
464  
464<script src="site_libs/headroom-0.9.4/headroom.min.js"></script>
464
465  
465<script src="site_libs/autocomplete-0.37.1/autocomplete.min.js"></script>
465
466  
466<script src="site_libs/fuse-6.4.1/fuse.min.js"></script>
466
467
468  
468<script type="application/javascript">
469
470  function getMeta(metaName) {
471    var metas = document.getElementsByTagName('meta');
472    for (let i = 0; i < metas.length; i++) {
473      if (metas[i].getAttribute('name') === metaName) {
474        return metas[i].getAttribute('content');
475      }
476    }
477    return '';
478  }
479
480  function offsetURL(url) {
481    var offset = getMeta('distill:offset');
482    return offset ? offset + '/' + url : url;
483  }
484
485  function createFuseIndex() {
486
487    // create fuse index
488    var options = {
489      keys: [
490        { name: 'title', weight: 20 },
491        { name: 'categories', weight: 15 },
492        { name: 'description', weight: 10 },
493        { name: 'contents', weight: 5 },
494      ],
495      ignoreLocation: true,
496      threshold: 0
497    };
498    var fuse = new window.Fuse([], options);
499
500    // fetch the main search.json
501    return fetch(offsetURL('search.json'))
502      .then(function(response) {
503        if (response.status == 200) {
504          return response.json().then(function(json) {
505            // index main articles
506            json.articles.forEach(function(article) {
507              fuse.add(article);
508            });
509            // download collections and index their articles
510            return Promise.all(json.collections.map(function(collection) {
511              return fetch(offsetURL(collection)).then(function(response) {
512                if (response.status === 200) {
513                  return response.json().then(function(articles) {
514                    articles.forEach(function(article) {
515                      fuse.add(article);
516                    });
517                  })
518                } else {
519                  return Promise.reject(
520                    new Error('Unexpected status from search index request: ' +
521                              response.status)
522                  );
523                }
524              });
525            })).then(function() {
526              return fuse;
527            });
528          });
529
530        } else {
531          return Promise.reject(
532            new Error('Unexpected status from search index request: ' +
533                        response.status)
534          );
535        }
536      });
537  }
538
539  window.document.addEventListener("DOMContentLoaded", function (event) {
540
541    // get search element (bail if we don't have one)
542    var searchEl = window.document.getElementById('distill-search');
543    if (!searchEl)
544      return;
545
546    createFuseIndex()
547      .then(function(fuse) {
548
549        // make search box visible
550        searchEl.classList.remove('hidden');
551
552        // initialize autocomplete
553        var options = {
554          autoselect: true,
555          hint: false,
556          minLength: 2,
557        };
558        window.autocomplete(searchEl, options, [{
559          source: function(query, callback) {
560            const searchOptions = {
561              isCaseSensitive: false,
562              shouldSort: true,
563              minMatchCharLength: 2,
564              limit: 10,
565            };
566            var results = fuse.search(query, searchOptions);
567            callback(results
568              .map(function(result) { return result.item; })
569            );
570          },
571          templates: {
572            suggestion: function(suggestion) {
573              var img = suggestion.preview && Object.keys(suggestion.preview).length > 0
574                ? `<img src="${offsetURL(suggestion.preview)}"</img>`
575                : '';
576              var html = `
577                <div class="search-item">
578                  <h3>${suggestion.title}</h3>
579                  <div class="search-item-description">
580                    ${suggestion.description || ''}
581                  </div>
582                  <div class="search-item-preview">
583                    ${img}
584                  </div>
585                </div>
586              `;
587              return html;
588            }
589          }
590        }]).on('autocomplete:selected', function(event, suggestion) {
591          window.location.href = offsetURL(suggestion.path);
592        });
593        // remove inline display style on autocompleter (we want to
594        // manage responsive display via css)
595        $('.algolia-autocomplete').css("display", "");
596      })
597      .catch(function(error) {
598        console.log(error);
599      });
600
601  });
602
603  </script>
603
604
605  <style type="text/css">
606
607  .nav-search {
608    font-size: x-small;
609  }
610
611  /* Algolioa Autocomplete */
612
613  .algolia-autocomplete {
614    display: inline-block;
615    margin-left: 10px;
616    vertical-align: sub;
617    background-color: white;
618    color: black;
619    padding: 6px;
620    padding-top: 8px;
621    padding-bottom: 0;
622    border-radius: 6px;
623    border: 1px #0F2E3D solid;
624    width: 180px;
625  }
626
627
628  @media screen and (max-width: 768px) {
629    .distill-site-nav .algolia-autocomplete {
630      display: none;
631      visibility: hidden;
632    }
633    .distill-site-nav.responsive .algolia-autocomplete {
634      display: inline-block;
635      visibility: visible;
636    }
637    .distill-site-nav.responsive .algolia-autocomplete .aa-dropdown-menu {
638      margin-left: 0;
639      width: 400px;
640      max-height: 400px;
641    }
642  }
643
644  .algolia-autocomplete .aa-input, .algolia-autocomplete .aa-hint {
645    width: 90%;
646    outline: none;
647    border: none;
648  }
649
650  .algolia-autocomplete .aa-hint {
651    color: #999;
652  }
653  .algolia-autocomplete .aa-dropdown-menu {
654    width: 550px;
655    max-height: 70vh;
656    overflow-x: visible;
657    overflow-y: scroll;
658    padding: 5px;
659    margin-top: 3px;
660    margin-left: -150px;
661    background-color: #fff;
662    border-radius: 5px;
663    border: 1px solid #999;
664    border-top: none;
665  }
666
667  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion {
668    cursor: pointer;
669    padding: 5px 4px;
670    border-bottom: 1px solid #eee;
671  }
672
673  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion:last-of-type {
674    border-bottom: none;
675    margin-bottom: 2px;
676  }
677
678  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item {
679    overflow: hidden;
680    font-size: 0.8em;
681    line-height: 1.4em;
682  }
683
684  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item h3 {
685    font-size: 1rem;
686    margin-block-start: 0;
687    margin-block-end: 5px;
688  }
689
690  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-description {
691    display: inline-block;
692    overflow: hidden;
693    height: 2.8em;
694    width: 80%;
695    margin-right: 4%;
696  }
697
698  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-preview {
699    display: inline-block;
700    width: 15%;
701  }
702
703  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-preview img {
704    height: 3em;
705    width: auto;
706    display: none;
707  }
708
709  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-preview img[src] {
710    display: initial;
711  }
712
713  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion.aa-cursor {
714    background-color: #eee;
715  }
716  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion em {
717    font-weight: bold;
718    font-style: normal;
719  }
720
721  </style>
722
723
724  <!--/radix_placeholder_navigation_in_header-->
725  <!--radix_placeholder_distill-->
726
727  <style type="text/css">
728
729  body {
730    background-color: white;
731  }
732
733  .pandoc-table {
734    width: 100%;
735  }
736
737  .pandoc-table>caption {
738    margin-bottom: 10px;
739  }
740
741  .pandoc-table th:not([align]) {
742    text-align: left;
743  }
744
745  .pagedtable-footer {
746    font-size: 15px;
747  }
748
749  d-byline .byline {
750    grid-template-columns: 2fr 2fr;
751  }
752
753  d-byline .byline h3 {
754    margin-block-start: 1.5em;
755  }
756
757  d-byline .byline .authors-affiliations h3 {
758    margin-block-start: 0.5em;
759  }
760
761  .authors-affiliations .orcid-id {
762    width: 16px;
763    height:16px;
764    margin-left: 4px;
765    margin-right: 4px;
766    vertical-align: middle;
767    padding-bottom: 2px;
768  }
769
770  d-title .dt-tags {
771    margin-top: 1em;
772    grid-column: text;
773  }
774
775  .dt-tags .dt-tag {
776    text-decoration: none;
777    display: inline-block;
778    color: rgba(0,0,0,0.6);
779    padding: 0em 0.4em;
780    margin-right: 0.5em;
781    margin-bottom: 0.4em;
782    font-size: 70%;
783    border: 1px solid rgba(0,0,0,0.2);
784    border-radius: 3px;
785    text-transform: uppercase;
786    font-weight: 500;
787  }
788
789  d-article table.gt_table td,
790  d-article table.gt_table th {
791    border-bottom: none;
792    font-size: 100%;
793  }
794
795  .html-widget {
796    margin-bottom: 2.0em;
797  }
798
799  .l-screen-inset {
800    padding-right: 16px;
801  }
802
803  .l-screen .caption {
804    margin-left: 10px;
805  }
806
807  .shaded {
808    background: rgb(247, 247, 247);
809    padding-top: 20px;
810    padding-bottom: 20px;
811    border-top: 1px solid rgba(0, 0, 0, 0.1);
812    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
813  }
814
815  .shaded .html-widget {
816    margin-bottom: 0;
817    border: 1px solid rgba(0, 0, 0, 0.1);
818  }
819
820  .shaded .shaded-content {
821    background: white;
822  }
823
824  .text-output {
825    margin-top: 0;
826    line-height: 1.5em;
827  }
828
829  .hidden {
830    display: none !important;
831  }
832
833  d-article {
834    padding-top: 2.5rem;
835    padding-bottom: 30px;
836  }
837
838  d-appendix {
839    padding-top: 30px;
840  }
841
842  d-article>p>img {
843    width: 100%;
844  }
845
846  d-article h2 {
847    margin: 1rem 0 1.5rem 0;
848  }
849
850  d-article h3 {
851    margin-top: 1.5rem;
852  }
853
854  d-article iframe {
855    border: 1px solid rgba(0, 0, 0, 0.1);
856    margin-bottom: 2.0em;
857    width: 100%;
858  }
859
860  /* Tweak code blocks */
861
862  d-article div.sourceCode code,
863  d-article pre code {
864    font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
865  }
866
867  d-article pre,
868  d-article div.sourceCode,
869  d-article div.sourceCode pre {
870    overflow: auto;
871  }
872
873  d-article div.sourceCode {
874    background-color: white;
875  }
876
877  d-article div.sourceCode pre {
878    padding-left: 10px;
879    font-size: 12px;
880    border-left: 2px solid rgba(0,0,0,0.1);
881  }
882
883  d-article pre {
884    font-size: 12px;
885    color: black;
886    background: none;
887    margin-top: 0;
888    text-align: left;
889    white-space: pre;
890    word-spacing: normal;
891    word-break: normal;
892    word-wrap: normal;
893    line-height: 1.5;
894
895    -moz-tab-size: 4;
896    -o-tab-size: 4;
897    tab-size: 4;
898
899    -webkit-hyphens: none;
900    -moz-hyphens: none;
901    -ms-hyphens: none;
902    hyphens: none;
903  }
904
905  d-article pre a {
906    border-bottom: none;
907  }
908
909  d-article pre a:hover {
910    border-bottom: none;
911    text-decoration: underline;
912  }
913
914  d-article details {
915    grid-column: text;
916    margin-bottom: 0.8em;
917  }
918
919  @media(min-width: 768px) {
920
921  d-article pre,
922  d-article div.sourceCode,
923  d-article div.sourceCode pre {
924    overflow: visible !important;
925  }
926
927  d-article div.sourceCode pre {
928    padding-left: 18px;
929    font-size: 14px;
930  }
931
932  d-article pre {
933    font-size: 14px;
934  }
935
936  }
937
938  figure img.external {
939    background: white;
940    border: 1px solid rgba(0, 0, 0, 0.1);
941    box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1);
942    padding: 18px;
943    box-sizing: border-box;
944  }
945
946  /* CSS for d-contents */
947
948  .d-contents {
949    grid-column: text;
950    color: rgba(0,0,0,0.8);
951    font-size: 0.9em;
952    padding-bottom: 1em;
953    margin-bottom: 1em;
954    padding-bottom: 0.5em;
955    margin-bottom: 1em;
956    padding-left: 0.25em;
957    justify-self: start;
958  }
959
960  @media(min-width: 1000px) {
961    .d-contents.d-contents-float {
962      height: 0;
963      grid-column-start: 1;
964      grid-column-end: 4;
965      justify-self: center;
966      padding-right: 3em;
967      padding-left: 2em;
968    }
969  }
970
971  .d-contents nav h3 {
972    font-size: 18px;
973    margin-top: 0;
974    margin-bottom: 1em;
975  }
976
977  .d-contents li {
978    list-style-type: none
979  }
980
981  .d-contents nav > ul {
982    padding-left: 0;
983  }
984
985  .d-contents ul {
986    padding-left: 1em
987  }
988
989  .d-contents nav ul li {
990    margin-top: 0.6em;
991    margin-bottom: 0.2em;
992  }
993
994  .d-contents nav a {
995    font-size: 13px;
996    border-bottom: none;
997    text-decoration: none
998    color: rgba(0, 0, 0, 0.8);
999  }
1000
1001  .d-contents nav a:hover {
1002    text-decoration: underline solid rgba(0, 0, 0, 0.6)
1003  }
1004
1005  .d-contents nav > ul > li > a {
1006    font-weight: 600;
1007  }
1008
1009  .d-contents nav > ul > li > ul {
1010    font-weight: inherit;
1011  }
1012
1013  .d-contents nav > ul > li > ul > li {
1014    margin-top: 0.2em;
1015  }
1016
1017
1018  .d-contents nav ul {
1019    margin-top: 0;
1020    margin-bottom: 0.25em;
1021  }
1022
1023  .d-article-with-toc h2:nth-child(2) {
1024    margin-top: 0;
1025  }
1026
1027
1028  /* Figure */
1029
1030  .figure {
1031    position: relative;
1032    margin-bottom: 2.5em;
1033    margin-top: 1.5em;
1034  }
1035
1036  .figure .caption {
1037    color: rgba(0, 0, 0, 0.6);
1038    font-size: 12px;
1039    line-height: 1.5em;
1040  }
1041
1042  .figure img.external {
1043    background: white;
1044    border: 1px solid rgba(0, 0, 0, 0.1);
1045    box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1);
1046    padding: 18px;
1047    box-sizing: border-box;
1048  }
1049
1050  .figure .caption a {
1051    color: rgba(0, 0, 0, 0.6);
1052  }
1053
1054  .figure .caption b,
1055  .figure .caption strong, {
1056    font-weight: 600;
1057    color: rgba(0, 0, 0, 1.0);
1058  }
1059
1060  /* Citations */
1061
1062  d-article .citation {
1063    color: inherit;
1064    cursor: inherit;
1065  }
1066
1067  div.hanging-indent{
1068    margin-left: 1em; text-indent: -1em;
1069  }
1070
1071  /* Citation hover box */
1072
1073  .tippy-box[data-theme~=light-border] {
1074    background-color: rgba(250, 250, 250, 0.95);
1075  }
1076
1077  .tippy-content > p {
1078    margin-bottom: 0;
1079    padding: 2px;
1080  }
1081
1082
1083  /* Tweak 1000px media break to show more text */
1084
1085  @media(min-width: 1000px) {
1086    .base-grid,
1087    distill-header,
1088    d-title,
1089    d-abstract,
1090    d-article,
1091    d-appendix,
1092    distill-appendix,
1093    d-byline,
1094    d-footnote-list,
1095    d-citation-list,
1096    distill-footer {
1097      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];
1098      grid-column-gap: 16px;
1099    }
1100
1101    .grid {
1102      grid-column-gap: 16px;
1103    }
1104
1105    d-article {
1106      font-size: 1.06rem;
1107      line-height: 1.7em;
1108    }
1109    figure .caption, .figure .caption, figure figcaption {
1110      font-size: 13px;
1111    }
1112  }
1113
1114  @media(min-width: 1180px) {
1115    .base-grid,
1116    distill-header,
1117    d-title,
1118    d-abstract,
1119    d-article,
1120    d-appendix,
1121    distill-appendix,
1122    d-byline,
1123    d-footnote-list,
1124    d-citation-list,
1125    distill-footer {
1126      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];
1127      grid-column-gap: 32px;
1128    }
1129
1130    .grid {
1131      grid-column-gap: 32px;
1132    }
1133  }
1134
1135
1136  /* Get the citation styles for the appendix (not auto-injected on render since
1137     we do our own rendering of the citation appendix) */
1138
1139  d-appendix .citation-appendix,
1140  .d-appendix .citation-appendix {
1141    font-size: 11px;
1142    line-height: 15px;
1143    border-left: 1px solid rgba(0, 0, 0, 0.1);
1144    padding-left: 18px;
1145    border: 1px solid rgba(0,0,0,0.1);
1146    background: rgba(0, 0, 0, 0.02);
1147    padding: 10px 18px;
1148    border-radius: 3px;
1149    color: rgba(150, 150, 150, 1);
1150    overflow: hidden;
1151    margin-top: -12px;
1152    white-space: pre-wrap;
1153    word-wrap: break-word;
1154  }
1155
1156  /* Include appendix styles here so they can be overridden */
1157
1158  d-appendix {
1159    contain: layout style;
1160    font-size: 0.8em;
1161    line-height: 1.7em;
1162    margin-top: 60px;
1163    margin-bottom: 0;
1164    border-top: 1px solid rgba(0, 0, 0, 0.1);
1165    color: rgba(0,0,0,0.5);
1166    padding-top: 60px;
1167    padding-bottom: 48px;
1168  }
1169
1170  d-appendix h3 {
1171    grid-column: page-start / text-start;
1172    font-size: 15px;
1173    font-weight: 500;
1174    margin-top: 1em;
1175    margin-bottom: 0;
1176    color: rgba(0,0,0,0.65);
1177  }
1178
1179  d-appendix h3 + * {
1180    margin-top: 1em;
1181  }
1182
1183  d-appendix ol {
1184    padding: 0 0 0 15px;
1185  }
1186
1187  @media (min-width: 768px) {
1188    d-appendix ol {
1189      padding: 0 0 0 30px;
1190      margin-left: -30px;
1191    }
1192  }
1193
1194  d-appendix li {
1195    margin-bottom: 1em;
1196  }
1197
1198  d-appendix a {
1199    color: rgba(0, 0, 0, 0.6);
1200  }
1201
1202  d-appendix > * {
1203    grid-column: text;
1204  }
1205
1206  d-appendix > d-footnote-list,
1207  d-appendix > d-citation-list,
1208  d-appendix > distill-appendix {
1209    grid-column: screen;
1210  }
1211
1212  /* Include footnote styles here so they can be overridden */
1213
1214  d-footnote-list {
1215    contain: layout style;
1216  }
1217
1218  d-footnote-list > * {
1219    grid-column: text;
1220  }
1221
1222  d-footnote-list a.footnote-backlink {
1223    color: rgba(0,0,0,0.3);
1224    padding-left: 0.5em;
1225  }
1226
1227
1228
1229  /* Anchor.js */
1230
1231  .anchorjs-link {
1232    /*transition: all .25s linear; */
1233    text-decoration: none;
1234    border-bottom: none;
1235  }
1236  *:hover > .anchorjs-link {
1237    margin-left: -1.125em !important;
1238    text-decoration: none;
1239    border-bottom: none;
1240  }
1241
1242  /* Social footer */
1243
1244  .social_footer {
1245    margin-top: 30px;
1246    margin-bottom: 0;
1247    color: rgba(0,0,0,0.67);
1248  }
1249
1250  .disqus-comments {
1251    margin-right: 30px;
1252  }
1253
1254  .disqus-comment-count {
1255    border-bottom: 1px solid rgba(0, 0, 0, 0.4);
1256    cursor: pointer;
1257  }
1258
1259  #disqus_thread {
1260    margin-top: 30px;
1261  }
1262
1263  .article-sharing a {
1264    border-bottom: none;
1265    margin-right: 8px;
1266  }
1267
1268  .article-sharing a:hover {
1269    border-bottom: none;
1270  }
1271
1272  .sidebar-section.subscribe {
1273    font-size: 12px;
1274    line-height: 1.6em;
1275  }
1276
1277  .subscribe p {
1278    margin-bottom: 0.5em;
1279  }
1280
1281
1282  .article-footer .subscribe {
1283    font-size: 15px;
1284    margin-top: 45px;
1285  }
1286
1287
1288  .sidebar-section.custom {
1289    font-size: 12px;
1290    line-height: 1.6em;
1291  }
1292
1293  .custom p {
1294    margin-bottom: 0.5em;
1295  }
1296
1297  /* Styles for listing layout (hide title) */
1298  .layout-listing d-title, .layout-listing .d-title {
1299    display: none;
1300  }
1301
1302  /* Styles for posts lists (not auto-injected) */
1303
1304
1305  .posts-with-sidebar {
1306    padding-left: 45px;
1307    padding-right: 45px;
1308  }
1309
1310  .posts-list .description h2,
1311  .posts-list .description p {
1312    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif;
1313  }
1314
1315  .posts-list .description h2 {
1316    font-weight: 700;
1317    border-bottom: none;
1318    padding-bottom: 0;
1319  }
1320
1321  .posts-list h2.post-tag {
1322    border-bottom: 1px solid rgba(0, 0, 0, 0.2);
1323    padding-bottom: 12px;
1324  }
1325  .posts-list {
1326    margin-top: 60px;
1327    margin-bottom: 24px;
1328  }
1329
1330  .posts-list .post-preview {
1331    text-decoration: none;
1332    overflow: hidden;
1333    display: block;
1334    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
1335    padding: 24px 0;
1336  }
1337
1338  .post-preview-last {
1339    border-bottom: none !important;
1340  }
1341
1342  .posts-list .posts-list-caption {
1343    grid-column: screen;
1344    font-weight: 400;
1345  }
1346
1347  .posts-list .post-preview h2 {
1348    margin: 0 0 6px 0;
1349    line-height: 1.2em;
1350    font-style: normal;
1351    font-size: 24px;
1352  }
1353
1354  .posts-list .post-preview p {
1355    margin: 0 0 12px 0;
1356    line-height: 1.4em;
1357    font-size: 16px;
1358  }
1359
1360  .posts-list .post-preview .thumbnail {
1361    box-sizing: border-box;
1362    margin-bottom: 24px;
1363    position: relative;
1364    max-width: 500px;
1365  }
1366  .posts-list .post-preview img {
1367    width: 100%;
1368    display: block;
1369  }
1370
1371  .posts-list .metadata {
1372    font-size: 12px;
1373    line-height: 1.4em;
1374    margin-bottom: 18px;
1375  }
1376
1377  .posts-list .metadata > * {
1378    display: inline-block;
1379  }
1380
1381  .posts-list .metadata .publishedDate {
1382    margin-right: 2em;
1383  }
1384
1385  .posts-list .metadata .dt-authors {
1386    display: block;
1387    margin-top: 0.3em;
1388    margin-right: 2em;
1389  }
1390
1391  .posts-list .dt-tags {
1392    display: block;
1393    line-height: 1em;
1394  }
1395
1396  .posts-list .dt-tags .dt-tag {
1397    display: inline-block;
1398    color: rgba(0,0,0,0.6);
1399    padding: 0.3em 0.4em;
1400    margin-right: 0.2em;
1401    margin-bottom: 0.4em;
1402    font-size: 60%;
1403    border: 1px solid rgba(0,0,0,0.2);
1404    border-radius: 3px;
1405    text-transform: uppercase;
1406    font-weight: 500;
1407  }
1408
1409  .posts-list img {
1410    opacity: 1;
1411  }
1412
1413  .posts-list img[data-src] {
1414    opacity: 0;
1415  }
1416
1417  .posts-more {
1418    clear: both;
1419  }
1420
1421
1422  .posts-sidebar {
1423    font-size: 16px;
1424  }
1425
1426  .posts-sidebar h3 {
1427    font-size: 16px;
1428    margin-top: 0;
1429    margin-bottom: 0.5em;
1430    font-weight: 400;
1431    text-transform: uppercase;
1432  }
1433
1434  .sidebar-section {
1435    margin-bottom: 30px;
1436  }
1437
1438  .categories ul {
1439    list-style-type: none;
1440    margin: 0;
1441    padding: 0;
1442  }
1443
1444  .categories li {
1445    color: rgba(0, 0, 0, 0.8);
1446    margin-bottom: 0;
1447  }
1448
1449  .categories li>a {
1450    border-bottom: none;
1451  }
1452
1453  .categories li>a:hover {
1454    border-bottom: 1px solid rgba(0, 0, 0, 0.4);
1455  }
1456
1457  .categories .active {
1458    font-weight: 600;
1459  }
1460
1461  .categories .category-count {
1462    color: rgba(0, 0, 0, 0.4);
1463  }
1464
1465
1466  @media(min-width: 768px) {
1467    .posts-list .post-preview h2 {
1468      font-size: 26px;
1469    }
1470    .posts-list .post-preview .thumbnail {
1471      float: right;
1472      width: 30%;
1473      margin-bottom: 0;
1474    }
1475    .posts-list .post-preview .description {
1476      float: left;
1477      width: 45%;
1478    }
1479    .posts-list .post-preview .metadata {
1480      float: left;
1481      width: 20%;
1482      margin-top: 8px;
1483    }
1484    .posts-list .post-preview p {
1485      margin: 0 0 12px 0;
1486      line-height: 1.5em;
1487      font-size: 16px;
1488    }
1489    .posts-with-sidebar .posts-list {
1490      float: left;
1491      width: 75%;
1492    }
1493    .posts-with-sidebar .posts-sidebar {
1494      float: right;
1495      width: 20%;
1496      margin-top: 60px;
1497      padding-top: 24px;
1498      padding-bottom: 24px;
1499    }
1500  }
1501
1502
1503  /* Improve display for browsers without grid (IE/Edge <= 15) */
1504
1505  .downlevel {
1506    line-height: 1.6em;
1507    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif;
1508    margin: 0;
1509  }
1510
1511  .downlevel .d-title {
1512    padding-top: 6rem;
1513    padding-bottom: 1.5rem;
1514  }
1515
1516  .downlevel .d-title h1 {
1517    font-size: 50px;
1518    font-weight: 700;
1519    line-height: 1.1em;
1520    margin: 0 0 0.5rem;
1521  }
1522
1523  .downlevel .d-title p {
1524    font-weight: 300;
1525    font-size: 1.2rem;
1526    line-height: 1.55em;
1527    margin-top: 0;
1528  }
1529
1530  .downlevel .d-byline {
1531    padding-top: 0.8em;
1532    padding-bottom: 0.8em;
1533    font-size: 0.8rem;
1534    line-height: 1.8em;
1535  }
1536
1537  .downlevel .section-separator {
1538    border: none;
1539    border-top: 1px solid rgba(0, 0, 0, 0.1);
1540  }
1541
1542  .downlevel .d-article {
1543    font-size: 1.06rem;
1544    line-height: 1.7em;
1545    padding-top: 1rem;
1546    padding-bottom: 2rem;
1547  }
1548
1549
1550  .downlevel .d-appendix {
1551    padding-left: 0;
1552    padding-right: 0;
1553    max-width: none;
1554    font-size: 0.8em;
1555    line-height: 1.7em;
1556    margin-bottom: 0;
1557    color: rgba(0,0,0,0.5);
1558    padding-top: 40px;
1559    padding-bottom: 48px;
1560  }
1561
1562  .downlevel .footnotes ol {
1563    padding-left: 13px;
1564  }
1565
1566  .downlevel .base-grid,
1567  .downlevel .distill-header,
1568  .downlevel .d-title,
1569  .downlevel .d-abstract,
1570  .downlevel .d-article,
1571  .downlevel .d-appendix,
1572  .downlevel .distill-appendix,
1573  .downlevel .d-byline,
1574  .downlevel .d-footnote-list,
1575  .downlevel .d-citation-list,
1576  .downlevel .distill-footer,
1577  .downlevel .appendix-bottom,
1578  .downlevel .posts-container {
1579    padding-left: 40px;
1580    padding-right: 40px;
1581  }
1582
1583  @media(min-width: 768px) {
1584    .downlevel .base-grid,
1585    .downlevel .distill-header,
1586    .downlevel .d-title,
1587    .downlevel .d-abstract,
1588    .downlevel .d-article,
1589    .downlevel .d-appendix,
1590    .downlevel .distill-appendix,
1591    .downlevel .d-byline,
1592    .downlevel .d-footnote-list,
1593    .downlevel .d-citation-list,
1594    .downlevel .distill-footer,
1595    .downlevel .appendix-bottom,
1596    .downlevel .posts-container {
1597    padding-left: 150px;
1598    padding-right: 150px;
1599    max-width: 900px;
1600  }
1601  }
1602
1603  .downlevel pre code {
1604    display: block;
1605    border-left: 2px solid rgba(0, 0, 0, .1);
1606    padding: 0 0 0 20px;
1607    font-size: 14px;
1608  }
1609
1610  .downlevel code, .downlevel pre {
1611    color: black;
1612    background: none;
1613    font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
1614    text-align: left;
1615    white-space: pre;
1616    word-spacing: normal;
1617    word-break: normal;
1618    word-wrap: normal;
1619    line-height: 1.5;
1620
1621    -moz-tab-size: 4;
1622    -o-tab-size: 4;
1623    tab-size: 4;
1624
1625    -webkit-hyphens: none;
1626    -moz-hyphens: none;
1627    -ms-hyphens: none;
1628    hyphens: none;
1629  }
1630
1631  .downlevel .posts-list .post-preview {
1632    color: inherit;
1633  }
1634
1635
1636
1637  </style>
1638
1639  
1639<script type="application/javascript">
1640
1641  function is_downlevel_browser() {
1642    if (bowser.isUnsupportedBrowser({ msie: "12", msedge: "16"},
1643                                   window.navigator.userAgent)) {
1644      return true;
1645    } else {
1646      return window.load_distill_framework === undefined;
1647    }
1648  }
1649
1650  // show body when load is complete
1651  function on_load_complete() {
1652
1653    // add anchors
1654    if (window.anchors) {
1655      window.anchors.options.placement = 'left';
1656      window.anchors.add('d-article > h2, d-article > h3, d-article > h4, d-article > h5');
1657    }
1658
1659
1660    // set body to visible
1661    document.body.style.visibility = 'visible';
1662
1663    // force redraw for leaflet widgets
1664    if (window.HTMLWidgets) {
1665      var maps = window.HTMLWidgets.findAll(".leaflet");
1666      $.each(maps, function(i, el) {
1667        var map = this.getMap();
1668        map.invalidateSize();
1669        map.eachLayer(function(layer) {
1670          if (layer instanceof L.TileLayer)
1671            layer.redraw();
1672        });
1673      });
1674    }
1675
1676    // trigger 'shown' so htmlwidgets resize
1677    $('d-article').trigger('shown');
1678  }
1679
1680  function init_distill() {
1681
1682    init_common();
1683
1684    // create front matter
1685    var front_matter = $('<d-front-matter></d-front-matter>');
1686    $('#distill-front-matter').wrap(front_matter);
1687
1688    // create d-title
1689    $('.d-title').changeElementType('d-title');
1690
1691    // create d-byline
1692    var byline = $('<d-byline></d-byline>');
1693    $('.d-byline').replaceWith(byline);
1694
1695    // create d-article
1696    var article = $('<d-article></d-article>');
1697    $('.d-article').wrap(article).children().unwrap();
1698
1699    // move posts container into article
1700    $('.posts-container').appendTo($('d-article'));
1701
1702    // create d-appendix
1703    $('.d-appendix').changeElementType('d-appendix');
1704
1705    // flag indicating that we have appendix items
1706    var appendix = $('.appendix-bottom').children('h3').length > 0;
1707
1708    // replace footnotes with <d-footnote>
1709    $('.footnote-ref').each(function(i, val) {
1710      appendix = true;
1711      var href = $(this).attr('href');
1712      var id = href.replace('#', '');
1713      var fn = $('#' + id);
1714      var fn_p = $('#' + id + '>p');
1715      fn_p.find('.footnote-back').remove();
1716      var text = fn_p.html();
1717      var dtfn = $('<d-footnote></d-footnote>');
1718      dtfn.html(text);
1719      $(this).replaceWith(dtfn);
1720    });
1721    // remove footnotes
1722    $('.footnotes').remove();
1723
1724    // move refs into #references-listing
1725    $('#references-listing').replaceWith($('#refs'));
1726
1727    $('h1.appendix, h2.appendix').each(function(i, val) {
1728      $(this).changeElementType('h3');
1729    });
1730    $('h3.appendix').each(function(i, val) {
1731      var id = $(this).attr('id');
1732      $('.d-contents a[href="#' + id + '"]').parent().remove();
1733      appendix = true;
1734      $(this).nextUntil($('h1, h2, h3')).addBack().appendTo($('d-appendix'));
1735    });
1736
1737    // show d-appendix if we have appendix content
1738    $("d-appendix").css('display', appendix ? 'grid' : 'none');
1739
1740    // localize layout chunks to just output
1741    $('.layout-chunk').each(function(i, val) {
1742
1743      // capture layout
1744      var layout = $(this).attr('data-layout');
1745
1746      // apply layout to markdown level block elements
1747      var elements = $(this).children().not('details, div.sourceCode, pre, script');
1748      elements.each(function(i, el) {
1749        var layout_div = $('<div class="' + layout + '"></div>');
1750        if (layout_div.hasClass('shaded')) {
1751          var shaded_content = $('<div class="shaded-content"></div>');
1752          $(this).wrap(shaded_content);
1753          $(this).parent().wrap(layout_div);
1754        } else {
1755          $(this).wrap(layout_div);
1756        }
1757      });
1758
1759
1760      // unwrap the layout-chunk div
1761      $(this).children().unwrap();
1762    });
1763
1764    // remove code block used to force  highlighting css
1765    $('.distill-force-highlighting-css').parent().remove();
1766
1767    // remove empty line numbers inserted by pandoc when using a
1768    // custom syntax highlighting theme
1769    $('code.sourceCode a:empty').remove();
1770
1771    // load distill framework
1772    load_distill_framework();
1773
1774    // wait for window.distillRunlevel == 4 to do post processing
1775    function distill_post_process() {
1776
1777      if (!window.distillRunlevel || window.distillRunlevel < 4)
1778        return;
1779
1780      // hide author/affiliations entirely if we have no authors
1781      var front_matter = JSON.parse($("#distill-front-matter").html());
1782      var have_authors = front_matter.authors && front_matter.authors.length > 0;
1783      if (!have_authors)
1784        $('d-byline').addClass('hidden');
1785
1786      // article with toc class
1787      $('.d-contents').parent().addClass('d-article-with-toc');
1788
1789      // strip links that point to #
1790      $('.authors-affiliations').find('a[href="#"]').removeAttr('href');
1791
1792      // add orcid ids
1793      $('.authors-affiliations').find('.author').each(function(i, el) {
1794        var orcid_id = front_matter.authors[i].orcidID;
1795        if (orcid_id) {
1796          var a = $('<a></a>');
1797          a.attr('href', 'https://orcid.org/' + orcid_id);
1798          var img = $('<img></img>');
1799          img.addClass('orcid-id');
1800          img.attr('alt', 'ORCID ID');
1801          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==');
1802          a.append(img);
1803          $(this).append(a);
1804        }
1805      });
1806
1807      // hide elements of author/affiliations grid that have no value
1808      function hide_byline_column(caption) {
1809        $('d-byline').find('h3:contains("' + caption + '")').parent().css('visibility', 'hidden');
1810      }
1811
1812      // affiliations
1813      var have_affiliations = false;
1814      for (var i = 0; i<front_matter.authors.length; ++i) {
1815        var author = front_matter.authors[i];
1816        if (author.affiliation !== "&nbsp;") {
1817          have_affiliations = true;
1818          break;
1819        }
1820      }
1821      if (!have_affiliations)
1822        $('d-byline').find('h3:contains("Affiliations")').css('visibility', 'hidden');
1823
1824      // published date
1825      if (!front_matter.publishedDate)
1826        hide_byline_column("Published");
1827
1828      // document object identifier
1829      var doi = $('d-byline').find('h3:contains("DOI")');
1830      var doi_p = doi.next().empty();
1831      if (!front_matter.doi) {
1832        // if we have a citation and valid citationText then link to that
1833        if ($('#citation').length > 0 && front_matter.citationText) {
1834          doi.html('Citation');
1835          $('<a href="#citation"></a>')
1836            .text(front_matter.citationText)
1837            .appendTo(doi_p);
1838        } else {
1839          hide_byline_column("DOI");
1840        }
1841      } else {
1842        $('<a></a>')
1843           .attr('href', "https://doi.org/" + front_matter.doi)
1844           .html(front_matter.doi)
1845           .appendTo(doi_p);
1846      }
1847
1848       // change plural form of authors/affiliations
1849      if (front_matter.authors.length === 1) {
1850        var grid = $('.authors-affiliations');
1851        grid.children('h3:contains("Authors")').text('Author');
1852        grid.children('h3:contains("Affiliations")').text('Affiliation');
1853      }
1854
1855      // remove d-appendix and d-footnote-list local styles
1856      $('d-appendix > style:first-child').remove();
1857      $('d-footnote-list > style:first-child').remove();
1858
1859      // move appendix-bottom entries to the bottom
1860      $('.appendix-bottom').appendTo('d-appendix').children().unwrap();
1861      $('.appendix-bottom').remove();
1862
1863      // hoverable references
1864      $('span.citation[data-cites]').each(function() {
1865        const citeChild = $(this).children()[0]
1866        // Do not process if @xyz has been used without escaping and without bibliography activated
1867        // https://github.com/rstudio/distill/issues/466
1868        if (citeChild === undefined) return true
1869
1870        if (citeChild.nodeName == "D-FOOTNOTE") {
1871          var fn = citeChild
1872          $(this).html(fn.shadowRoot.querySelector("sup"))
1873          $(this).id = fn.id
1874          fn.remove()
1875        }
1876        var refs = $(this).attr('data-cites').split(" ");
1877        var refHtml = refs.map(function(ref) {
1878          // Could use CSS.escape too here, we insure backward compatibility in navigator
1879          return "<p>" + $('div[id="ref-' + ref + '"]').html() + "</p>";
1880        }).join("\n");
1881        window.tippy(this, {
1882          allowHTML: true,
1883          content: refHtml,
1884          maxWidth: 500,
1885          interactive: true,
1886          interactiveBorder: 10,
1887          theme: 'light-border',
1888          placement: 'bottom-start'
1889        });
1890      });
1891
1892      // fix footnotes in tables (#411)
1893      // replacing broken distill.pub feature
1894      $('table d-footnote').each(function() {
1895        // we replace internal showAtNode methode which is triggered when hovering a footnote
1896        this.hoverBox.showAtNode = function(node) {
1897          // ported from https://github.com/distillpub/template/pull/105/files
1898          calcOffset = function(elem) {
1899              let x = elem.offsetLeft;
1900              let y = elem.offsetTop;
1901              // Traverse upwards until an `absolute` element is found or `elem`
1902              // becomes null.
1903              while (elem = elem.offsetParent && elem.style.position != 'absolute') {
1904                  x += elem.offsetLeft;
1905                  y += elem.offsetTop;
1906              }
1907
1908              return { left: x, top: y };
1909          }
1910          // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetTop
1911          const bbox = node.getBoundingClientRect();
1912          const offset = calcOffset(node);
1913          this.show([offset.left + bbox.width, offset.top + bbox.height]);
1914        }
1915      })
1916
1917      // clear polling timer
1918      clearInterval(tid);
1919
1920      // show body now that everything is ready
1921      on_load_complete();
1922    }
1923
1924    var tid = setInterval(distill_post_process, 50);
1925    distill_post_process();
1926
1927  }
1928
1929  function init_downlevel() {
1930
1931    init_common();
1932
1933     // insert hr after d-title
1934    $('.d-title').after($('<hr class="section-separator"/>'));
1935
1936    // check if we have authors
1937    var front_matter = JSON.parse($("#distill-front-matter").html());
1938    var have_authors = front_matter.authors && front_matter.authors.length > 0;
1939
1940    // manage byline/border
1941    if (!have_authors)
1942      $('.d-byline').remove();
1943    $('.d-byline').after($('<hr class="section-separator"/>'));
1944    $('.d-byline a').remove();
1945
1946    // remove toc
1947    $('.d-contents').remove();
1948
1949    // move appendix elements
1950    $('h1.appendix, h2.appendix').each(function(i, val) {
1951      $(this).changeElementType('h3');
1952    });
1953    $('h3.appendix').each(function(i, val) {
1954      $(this).nextUntil($('h1, h2, h3')).addBack().appendTo($('.d-appendix'));
1955    });
1956
1957
1958    // inject headers into references and footnotes
1959    var refs_header = $('<h3></h3>');
1960    refs_header.text('References');
1961    $('#refs').prepend(refs_header);
1962
1963    var footnotes_header = $('<h3></h3');
1964    footnotes_header.text('Footnotes');
1965    $('.footnotes').children('hr').first().replaceWith(footnotes_header);
1966
1967    // move appendix-bottom entries to the bottom
1968    $('.appendix-bottom').appendTo('.d-appendix').children().unwrap();
1969    $('.appendix-bottom').remove();
1970
1971    // remove appendix if it's empty
1972    if ($('.d-appendix').children().length === 0)
1973      $('.d-appendix').remove();
1974
1975    // prepend separator above appendix
1976    $('.d-appendix').before($('<hr class="section-separator" style="clear: both"/>'));
1977
1978    // trim code
1979    $('pre>code').each(function(i, val) {
1980      $(this).html($.trim($(this).html()));
1981    });
1982
1983    // move posts-container right before article
1984    $('.posts-container').insertBefore($('.d-article'));
1985
1986    $('body').addClass('downlevel');
1987
1988    on_load_complete();
1989  }
1990
1991
1992  function init_common() {
1993
1994    // jquery plugin to change element types
1995    (function($) {
1996      $.fn.changeElementType = function(newType) {
1997        var attrs = {};
1998
1999        $.each(this[0].attributes, function(idx, attr) {
2000          attrs[attr.nodeName] = attr.nodeValue;
2001        });
2002
2003        this.replaceWith(function() {
2004          return $("<" + newType + "/>", attrs).append($(this).contents());
2005        });
2006      };
2007    })(jQuery);
2008
2009    // prevent underline for linked images
2010    $('a > img').parent().css({'border-bottom' : 'none'});
2011
2012    // mark non-body figures created by knitr chunks as 100% width
2013    $('.layout-chunk').each(function(i, val) {
2014      var figures = $(this).find('img, .html-widget');
2015      // ignore leaflet img layers (#106)
2016      figures = figures.filter(':not(img[class*="leaflet"])')
2017      if ($(this).attr('data-layout') !== "l-body") {
2018        figures.css('width', '100%');
2019      } else {
2020        figures.css('max-width', '100%');
2021        figures.filter("[width]").each(function(i, val) {
2022          var fig = $(this);
2023          fig.css('width', fig.attr('width') + 'px');
2024        });
2025
2026      }
2027    });
2028
2029    // auto-append index.html to post-preview links in file: protocol
2030    // and in rstudio ide preview
2031    $('.post-preview').each(function(i, val) {
2032      if (window.location.protocol === "file:")
2033        $(this).attr('href', $(this).attr('href') + "index.html");
2034    });
2035
2036    // get rid of index.html references in header
2037    if (window.location.protocol !== "file:") {
2038      $('.distill-site-header a[href]').each(function(i,val) {
2039        $(this).attr('href', $(this).attr('href').replace(/^index[.]html/, "./"));
2040      });
2041    }
2042
2043    // add class to pandoc style tables
2044    $('tr.header').parent('thead').parent('table').addClass('pandoc-table');
2045    $('.kable-table').children('table').addClass('pandoc-table');
2046
2047    // add figcaption style to table captions
2048    $('caption').parent('table').addClass("figcaption");
2049
2050    // initialize posts list
2051    if (window.init_posts_list)
2052      window.init_posts_list();
2053
2054    // implmement disqus comment link
2055    $('.disqus-comment-count').click(function() {
2056      window.headroom_prevent_pin = true;
2057      $('#disqus_thread').toggleClass('hidden');
2058      if (!$('#disqus_thread').hasClass('hidden')) {
2059        var offset = $(this).offset();
2060        $(window).resize();
2061        $('html, body').animate({
2062          scrollTop: offset.top - 35
2063        });
2064      }
2065    });
2066  }
2067
2068  document.addEventListener('DOMContentLoaded', function() {
2069    if (is_downlevel_browser())
2070      init_downlevel();
2071    else
2072      window.addEventListener('WebComponentsReady', init_distill);
2073  });
2074
2075  </script>
2075
2076
2077  <style type="text/css">
2078  /* base variables */
2079
2080  /* Edit the CSS properties in this file to create a custom
2081     Distill theme. Only edit values in the right column
2082     for each row; values shown are the CSS defaults.
2083     To return any property to the default,
2084     you may set its value to: unset
2085     All rows must end with a semi-colon.                      */
2086
2087  /* Optional: embed custom fonts here with `@import`          */
2088  /* This must remain at the top of this file.                 */
2089
2090
2091
2092  html {
2093    /*-- Main font sizes --*/
2094    --title-size:      50px;
2095    --body-size:       1.06rem;
2096    --code-size:       14px;
2097    --aside-size:      12px;
2098    --fig-cap-size:    13px;
2099    /*-- Main font colors --*/
2100    --title-color:     #000000;
2101    --header-color:    rgba(0, 0, 0, 0.8);
2102    --body-color:      rgba(0, 0, 0, 0.8);
2103    --aside-color:     rgba(0, 0, 0, 0.6);
2104    --fig-cap-color:   rgba(0, 0, 0, 0.6);
2105    /*-- Specify custom fonts ~~~ must be imported above   --*/
2106    --heading-font:    sans-serif;
2107    --mono-font:       monospace;
2108    --body-font:       sans-serif;
2109    --navbar-font:     sans-serif;  /* websites + blogs only */
2110  }
2111
2112  /*-- ARTICLE METADATA --*/
2113  d-byline {
2114    --heading-size:    0.6rem;
2115    --heading-color:   rgba(0, 0, 0, 0.5);
2116    --body-size:       0.8rem;
2117    --body-color:      rgba(0, 0, 0, 0.8);
2118  }
2119
2120  /*-- ARTICLE TABLE OF CONTENTS --*/
2121  .d-contents {
2122    --heading-size:    18px;
2123    --contents-size:   13px;
2124  }
2125
2126  /*-- ARTICLE APPENDIX --*/
2127  d-appendix {
2128    --heading-size:    15px;
2129    --heading-color:   rgba(0, 0, 0, 0.65);
2130    --text-size:       0.8em;
2131    --text-color:      rgba(0, 0, 0, 0.5);
2132  }
2133
2134  /*-- WEBSITE HEADER + FOOTER --*/
2135  /* These properties only apply to Distill sites and blogs  */
2136
2137  .distill-site-header {
2138    --title-size:       18px;
2139    --text-color:       rgba(255, 255, 255, 0.8);
2140    --text-size:        15px;
2141    --hover-color:      white;
2142    --bkgd-color:       #0F2E3D;
2143  }
2144
2145  .distill-site-footer {
2146    --text-color:       rgba(255, 255, 255, 0.8);
2147    --text-size:        15px;
2148    --hover-color:      white;
2149    --bkgd-color:       #0F2E3D;
2150  }
2151
2152  /*-- Additional custom styles --*/
2153  /* Add any additional CSS rules below                      */
2154  </style>
2155  <style type="text/css">
2156  /* base variables */
2157
2158  /* Edit the CSS properties in this file to create a custom
2159     Distill theme. Only edit values in the right column
2160     for each row; values shown are the CSS defaults.
2161     To return any property to the default,
2162     you may set its value to: unset
2163     All rows must end with a semi-colon.                      */
2164
2165  /* Optional: embed custom fonts here with `@import`          */
2166  /* This must remain at the top of this file.                 */
2167  @import url('https://fonts.googleapis.com/css2?family=Amiri');
2168
2169
2170
2171  html {
2172    /*-- Main font sizes --*/
2173    --title-size:      50px;
2174    --body-size:       1.06rem;
2175    --code-size:       14px;
2176    --aside-size:      12px;
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:    "Amiri", serif;
2186    --mono-font:        monospace;
2187    --body-font:        sans-serif;
2188    --navbar-font:     "Amiri", serif;
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.8rem;
2196    --body-color:      rgba(0, 0, 0, 0.8);
2197  }
2198
2199  /*-- ARTICLE TABLE OF CONTENTS --*/
2200  .d-contents {
2201    --heading-size:    18px;
2202    --contents-size:   13px;
2203  }
2204
2205  /*-- ARTICLE APPENDIX --*/
2206  d-appendix {
2207    --heading-size:    15px;
2208    --heading-color:   rgba(0, 0, 0, 0.65);
2209    --text-size:       0.8em;
2210    --text-color:      rgba(0, 0, 0, 0.5);
2211  }
2212
2213  /*-- WEBSITE HEADER + FOOTER --*/
2214  /* These properties only apply to Distill sites and blogs  */
2215
2216  .distill-site-header {
2217    --title-size:       18px;
2218    --text-color:       rgba(255, 255, 255, 0.8);
2219    --text-size:        15px;
2220    --hover-color:      white;
2221    --bkgd-color:       #0F2E3D;
2222  }
2223
2224  .distill-site-footer {
2225    --text-color:       rgba(255, 255, 255, 0.8);
2226    --text-size:        15px;
2227    --hover-color:      white;
2228    --bkgd-color:       #0F2E3D;
2229  }
2230
2231  /*-- Additional custom styles --*/
2232  /* Add any additional CSS rules below                      */
2233  </style>
2234  <style type="text/css">
2235  /* base style */
2236
2237  /* FONT FAMILIES */
2238
2239  :root {
2240    --heading-default: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif;
2241    --mono-default: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
2242    --body-default: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif;
2243  }
2244
2245  body,
2246  .posts-list .post-preview p,
2247  .posts-list .description p {
2248    font-family: var(--body-font), var(--body-default);
2249  }
2250
2251  h1, h2, h3, h4, h5, h6,
2252  .posts-list .post-preview h2,
2253  .posts-list .description h2 {
2254    font-family: var(--heading-font), var(--heading-default);
2255  }
2256
2257  d-article div.sourceCode code,
2258  d-article pre code {
2259    font-family: var(--mono-font), var(--mono-default);
2260  }
2261
2262
2263  /*-- TITLE --*/
2264  d-title h1,
2265  .posts-list > h1 {
2266    color: var(--title-color, black);
2267  }
2268
2269  d-title h1 {
2270    font-size: var(--title-size, 50px);
2271  }
2272
2273  /*-- HEADERS --*/
2274  d-article h1,
2275  d-article h2,
2276  d-article h3,
2277  d-article h4,
2278  d-article h5,
2279  d-article h6 {
2280    color: var(--header-color, rgba(0, 0, 0, 0.8));
2281  }
2282
2283  /*-- BODY --*/
2284  d-article > p,  /* only text inside of <p> tags */
2285  d-article > ul, /* lists */
2286  d-article > ol {
2287    color: var(--body-color, rgba(0, 0, 0, 0.8));
2288    font-size: var(--body-size, 1.06rem);
2289  }
2290
2291
2292  /*-- CODE --*/
2293  d-article div.sourceCode code,
2294  d-article pre code {
2295    font-size: var(--code-size, 14px);
2296  }
2297
2298  /*-- ASIDE --*/
2299  d-article aside {
2300    font-size: var(--aside-size, 12px);
2301    color: var(--aside-color, rgba(0, 0, 0, 0.6));
2302  }
2303
2304  /*-- FIGURE CAPTIONS --*/
2305  figure .caption,
2306  figure figcaption,
2307  .figure .caption {
2308    font-size: var(--fig-cap-size, 13px);
2309    color: var(--fig-cap-color, rgba(0, 0, 0, 0.6));
2310  }
2311
2312  /*-- METADATA --*/
2313  d-byline h3 {
2314    font-size: var(--heading-size, 0.6rem);
2315    color: var(--heading-color, rgba(0, 0, 0, 0.5));
2316  }
2317
2318  d-byline {
2319    font-size: var(--body-size, 0.8rem);
2320    color: var(--body-color, rgba(0, 0, 0, 0.8));
2321  }
2322
2323  d-byline a,
2324  d-article d-byline a {
2325    color: var(--body-color, rgba(0, 0, 0, 0.8));
2326  }
2327
2328  /*-- TABLE OF CONTENTS --*/
2329  .d-contents nav h3 {
2330    font-size: var(--heading-size, 18px);
2331  }
2332
2333  .d-contents nav a {
2334    font-size: var(--contents-size, 13px);
2335  }
2336
2337  /*-- APPENDIX --*/
2338  d-appendix h3 {
2339    font-size: var(--heading-size, 15px);
2340    color: var(--heading-color, rgba(0, 0, 0, 0.65));
2341  }
2342
2343  d-appendix {
2344    font-size: var(--text-size, 0.8em);
2345    color: var(--text-color, rgba(0, 0, 0, 0.5));
2346  }
2347
2348  d-appendix d-footnote-list a.footnote-backlink {
2349    color: var(--text-color, rgba(0, 0, 0, 0.5));
2350  }
2351
2352  /*-- WEBSITE HEADER + FOOTER --*/
2353  .distill-site-header .title {
2354    font-size: var(--title-size, 18px);
2355    font-family: var(--navbar-font), var(--heading-default);
2356  }
2357
2358  .distill-site-header a,
2359  .nav-dropdown .nav-dropbtn {
2360    font-family: var(--navbar-font), var(--heading-default);
2361  }
2362
2363  .nav-dropdown .nav-dropbtn {
2364    color: var(--text-color, rgba(255, 255, 255, 0.8));
2365    font-size: var(--text-size, 15px);
2366  }
2367
2368  .distill-site-header a:hover,
2369  .nav-dropdown:hover .nav-dropbtn {
2370    color: var(--hover-color, white);
2371  }
2372
2373  .distill-site-header {
2374    font-size: var(--text-size, 15px);
2375    color: var(--text-color, rgba(255, 255, 255, 0.8));
2376    background-color: var(--bkgd-color, #0F2E3D);
2377  }
2378
2379  .distill-site-footer {
2380    font-size: var(--text-size, 15px);
2381    color: var(--text-color, rgba(255, 255, 255, 0.8));
2382    background-color: var(--bkgd-color, #0F2E3D);
2383  }
2384
2385  .distill-site-footer a:hover {
2386    color: var(--hover-color, white);
2387  }</style>
2388  <!--/radix_placeholder_distill-->
2389  
2389<script src="site_libs/header-attrs-2.14/header-attrs.js"></script>
2389
2390  
2390<script src="site_libs/popper-2.6.0/popper.min.js"></script>
2390
2391  <link href="site_libs/tippy-6.2.7/tippy.css" rel="stylesheet" />
2392  <link href="site_libs/tippy-6.2.7/tippy-light-border.css" rel="stylesheet" />
2393  
2393<script src="site_libs/tippy-6.2.7/tippy.umd.min.js"></script>
2393
2394  
2394<script src="site_libs/anchor-4.2.2/anchor.min.js"></script>
2394
2395  
2395<script src="site_libs/bowser-1.9.3/bowser.min.js"></script>
2395
2396  
2396<script src="site_libs/webcomponents-2.0.0/webcomponents.js"></script>
2396
2397  
2397<script src="site_libs/distill-2.2.21/template.v2.js"></script>
2397
2398  <!--radix_placeholder_site_in_header-->
2399  <!--/radix_placeholder_site_in_header-->
2400
2401
2402</head>
2403
2404<body>
2405
2406<!--radix_placeholder_front_matter-->
2407
2408<script id="distill-front-matter" type="text/json">
2409{"title":"Publicaciones","authors":[]}
2410</script>
2410
2411
2412<!--/radix_placeholder_front_matter-->
2413<!--radix_placeholder_navigation_before_body-->
2414<header class="header header--fixed" role="banner">
2415<nav class="distill-site-nav distill-site-header">
2416<div class="nav-left">
2417<a class='title' href='/'>Rafael Zambrano</a>
2418<input id="distill-search" class="nav-search hidden" type="text" placeholder="Search..."/>
2419</div>
2420<div class="nav-right">
2421<a href='/'>Perfil</a>
2422<a href='/blog'>Proyectos</a>
2423<a href='/publicaciones'>Publicaciones</a>
2424<a href="https://github.com/rafzamb">
2425<i class="fa fa-github" aria-hidden="true"></i>
2426</a>
2427<a href="https://www.linkedin.com/in/rafael-zambrano/">
2428<i class="fa fa-linkedin" aria-hidden="true"></i>
2429</a>
2430<a href="https://twitter.com/rafa_zamr/">
2431<i class="fa fa-twitter" aria-hidden="true"></i>
2432</a>
2433<a href="blog.xml">
2434<i class="fa fa-rss" aria-hidden="true"></i>
2435</a>
2436<a href="javascript:void(0);" class="nav-toggle">&#9776;</a>
2437</div>
2438</nav>
2439</header>
2440<!--/radix_placeholder_navigation_before_body-->
2441<!--radix_placeholder_site_before_body-->
2442<!--/radix_placeholder_site_before_body-->
2443
2444<div class="d-title">
2445<h1>Publicaciones</h1>
2446<!--radix_placeholder_categories-->
2447<!--/radix_placeholder_categories-->
2448
2449</div>
2450
2451
2452<div class="d-article">
2453<ul>
2454<li><p>Zambrano, R. (2021). Predicción de ocurrencia de delitos: implementación de modelos predictivos en base a los casos registrados en CABA durante el periodo 2017-2019.
2455<a href="http://bibliotecadigital.econ.uba.ar/download/tpos/1502-1919_ZambranoMedinaRA.pdf"><strong>Link de publicación</strong></a></p></li>
2456<li><p>Zambrano, R. (2021). Un enfoque espaciotemporal para la predicción de delitos en la ciudad de Buenos Aires. Revista de investigación en modelos matemáticos aplicados a la gestión y la economía.
2457<a href="http://www.economicas.uba.ar/wp-content/uploads/2016/04/Zambrano-Rafael-1.pdf"><strong>Link de publicación</strong></a></p></li>
2458</ul>
2459<div class="sourceCode" id="cb1"><pre class="sourceCode r distill-force-highlighting-css"><code class="sourceCode r"></code></pre></div>
2460<!--radix_placeholder_article_footer-->
2461<!--/radix_placeholder_article_footer-->
2462</div>
2463
2464<div class="d-appendix">
2465</div>
2466
2467
2468<!--radix_placeholder_site_after_body-->
2469<!--/radix_placeholder_site_after_body-->
2470<!--radix_placeholder_appendices-->
2471<div class="appendix-bottom">
2472<h3 id="reuse">Reuse</h3>
2473<p>Text and figures are licensed under Creative Commons Attribution <a rel="license" href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".</p>
2474</div>
2475<!--/radix_placeholder_appendices-->
2476<!--radix_placeholder_navigation_after_body-->
2477<div class="distill-site-nav distill-site-footer">
2478<p>© Rafael Zambrano 2020. Made with the R <a
2479href="https://rstudio.github.io/distill/">distill</a> package.</p>
2480</div>
2481<!--/radix_placeholder_navigation_after_body-->
2482
2483
2484</body>
2485
2486</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.