PageSourceSearch

https://eph-ubasociales.netlify.app/licencia

html eph-ubasociales.netlify.app collected 2026-10-03 10:42:26 UTC 21,691 bytes, 588 lines download raw bytes

1<!DOCTYPE html>
2<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"><head>
3
4<meta charset="utf-8">
5<!-- This site is hosted on Netlify. Anyone can build and deploy a site
6     like this one for free: https://netlify.new/?utm_campaign=loops&utm_source=ai-legible&utm_medium=owned&utm_content=comment&utm_id=56d7f09f-7232-4079-8278-d2eb9edc3ab9
7     Netlify hosting facts for this site: static/SSR served via Netlify Edge. -->
8<meta name="generator" content="quarto-1.5.56">
9
10<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
11
12
13<title>Licencia – Taller EPH en R - UBA Sociales</title>
14<style>
15code{white-space: pre-wrap;}
16span.smallcaps{font-variant: small-caps;}
17div.columns{display: flex; gap: min(4vw, 1.5em);}
18div.column{flex: auto; overflow-x: auto;}
19div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
20ul.task-list{list-style: none;}
21ul.task-list li input[type="checkbox"] {
22  width: 0.8em;
23  margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */ 
24  vertical-align: middle;
25}
26</style>
27
28
29<script src="site_libs/quarto-nav/quarto-nav.js"></script>
vendor: 1 bytes, line 29
29
30<script src="site_libs/quarto-nav/headroom.min.js"></script>
vendor: 1 bytes, line 30
30
31<script src="site_libs/clipboard/clipboard.min.js"></script>
vendor: 1 bytes, line 31
31
32<script src="site_libs/quarto-search/autocomplete.umd.js"></script>
vendor: 1 bytes, line 32
32
33<script src="site_libs/quarto-search/fuse.min.js"></script>
vendor: 1 bytes, line 33
33
34<script src="site_libs/quarto-search/quarto-search.js"></script>
34
35<meta name="quarto:offset" content="./">
36<script src="site_libs/quarto-html/quarto.js"></script>
vendor: 1 bytes, line 36
36
37<script src="site_libs/quarto-html/popper.min.js"></script>
vendor: 1 bytes, line 37
37
38<script src="site_libs/quarto-html/tippy.umd.min.js"></script>
vendor: 1 bytes, line 38
38
39<script src="site_libs/quarto-html/anchor.min.js"></script>
39
40<link href="site_libs/quarto-html/tippy.css" rel="stylesheet">
41<link href="site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles">
42<script src="site_libs/bootstrap/bootstrap.min.js"></script>
42
43<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
44<link href="site_libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light">
45<script id="quarto-search-options" type="application/json">{
46  "location": "navbar",
47  "copy-button": false,
48  "collapse-after": 3,
49  "panel-placement": "end",
50  "type": "overlay",
51  "limit": 50,
52  "keyboard-shortcut": [
53    "f",
54    "/",
55    "s"
56  ],
57  "show-item-context": false,
58  "language": {
59    "search-no-results-text": "Sin resultados",
60    "search-matching-documents-text": "documentos encontrados",
61    "search-copy-link-title": "Copiar el enlace en la búsqueda",
62    "search-hide-matches-text": "Ocultar resultados adicionales",
63    "search-more-match-text": "resultado adicional en este documento",
64    "search-more-matches-text": "resultados adicionales en este documento",
65    "search-clear-button-title": "Borrar",
66    "search-text-placeholder": "",
67    "search-detached-cancel-button-title": "Cancelar",
68    "search-submit-button-title": "Enviar",
69    "search-label": "Buscar"
70  }
71}</script>
71
72
73
74<link rel="stylesheet" href="styles.css">
75</head>
76
77<body class="nav-fixed">
78
79<div id="quarto-search-results"></div>
80  <header id="quarto-header" class="headroom fixed-top">
81    <nav class="navbar navbar-expand-lg " data-bs-theme="dark">
82      <div class="navbar-container container-fluid">
83      <div class="navbar-brand-container mx-auto">
84    <a class='navbar-brand' href='/'>
85    <span class="navbar-title">Taller EPH en R - UBA Sociales</span>
86    </a>
87  </div>
88            <div id="quarto-search" class="" title="Buscar"></div>
89          <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Navegación de palanca" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
90  <span class="navbar-toggler-icon"></span>
91</button>
92          <div class="collapse navbar-collapse" id="navbarCollapse">
93            <ul class="navbar-nav navbar-nav-scroll ms-auto">
94  <li class="nav-item">
95    <a class='nav-link' href='/'> 
96<span class="menu-text">Inicio</span></a>
97  </li>  
98  <li class="nav-item">
99    <a class='nav-link' href='/equipo'> 
100<span class="menu-text">Equipo</span></a>
101  </li>  
102  <li class="nav-item">
103    <a class='nav-link' href='/slides'> 
104<span class="menu-text">Slides</span></a>
105  </li>  
106  <li class="nav-item">
107    <a class="nav-link" href="./Práctica.html"> 
108<span class="menu-text">Práctica</span></a>
109  </li>  
110  <li class="nav-item">
111    <a aria-current='page' class='nav-link active' href='/licencia'> 
112<span class="menu-text">Licencia</span></a>
113  </li>  
114</ul>
115          </div> <!-- /navcollapse -->
116            <div class="quarto-navbar-tools">
117    <a href="https://github.com/SoyAndrea/tallerEPH" title="" class="quarto-navigation-tool px-1" aria-label=""><i class="bi bi-github"></i></a>
118</div>
119      </div> <!-- /container-fluid -->
120    </nav>
121</header>
122<!-- content -->
123<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
124<!-- sidebar -->
125<!-- margin-sidebar -->
126    <div id="quarto-margin-sidebar" class="sidebar margin-sidebar zindex-bottom">
127        
128    </div>
129<!-- main -->
130<main class="content" id="quarto-document-content">
131
132<header id="title-block-header" class="quarto-title-block default">
133<div class="quarto-title">
134<h1 class="title">Licencia</h1>
135</div>
136
137
138
139<div class="quarto-title-meta">
140
141    
142  
143    
144  </div>
145  
146
147
148</header>
149
150
151<p>Este taller está a disposición del público bajo licencias de código abierto. Toda la documentación y los materiales publicados están disponibles bajo una licencia <strong>CC BY-SA-NC</strong>.</p>
152<p>A continuación, puedes leer más sobre la <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional</a>.</p>
153<div class="quarto-figure quarto-figure-left">
154<figure class="figure">
155<p><img src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" class="img-fluid figure-img" style="width:20.0%"></p>
156<figcaption>Licencia de Creative Commons</figcaption>
157</figure>
158</div>
159
160
161
162</main> <!-- /main -->
163<script id="quarto-html-after-body" type="application/javascript">
164window.document.addEventListener("DOMContentLoaded", function (event) {
165  const toggleBodyColorMode = (bsSheetEl) => {
166    const mode = bsSheetEl.getAttribute("data-mode");
167    const bodyEl = window.document.querySelector("body");
168    if (mode === "dark") {
169      bodyEl.classList.add("quarto-dark");
170      bodyEl.classList.remove("quarto-light");
171    } else {
172      bodyEl.classList.add("quarto-light");
173      bodyEl.classList.remove("quarto-dark");
174    }
175  }
176  const toggleBodyColorPrimary = () => {
177    const bsSheetEl = window.document.querySelector("link#quarto-bootstrap");
178    if (bsSheetEl) {
179      toggleBodyColorMode(bsSheetEl);
180    }
181  }
182  toggleBodyColorPrimary();  
183  const icon = "";
184  const anchorJS = new window.AnchorJS();
185  anchorJS.options = {
186    placement: 'right',
187    icon: icon
188  };
189  anchorJS.add('.anchored');
190  const isCodeAnnotation = (el) => {
191    for (const clz of el.classList) {
192      if (clz.startsWith('code-annotation-')) {                     
193        return true;
194      }
195    }
196    return false;
197  }
198  const onCopySuccess = function(e) {
199    // button target
200    const button = e.trigger;
201    // don't keep focus
202    button.blur();
203    // flash "checked"
204    button.classList.add('code-copy-button-checked');
205    var currentTitle = button.getAttribute("title");
206    button.setAttribute("title", "Copiado");
207    let tooltip;
208    if (window.bootstrap) {
209      button.setAttribute("data-bs-toggle", "tooltip");
210      button.setAttribute("data-bs-placement", "left");
211      button.setAttribute("data-bs-title", "Copiado");
212      tooltip = new bootstrap.Tooltip(button, 
213        { trigger: "manual", 
214          customClass: "code-copy-button-tooltip",
215          offset: [0, -8]});
216      tooltip.show();    
217    }
218    setTimeout(function() {
219      if (tooltip) {
220        tooltip.hide();
221        button.removeAttribute("data-bs-title");
222        button.removeAttribute("data-bs-toggle");
223        button.removeAttribute("data-bs-placement");
224      }
225      button.setAttribute("title", currentTitle);
226      button.classList.remove('code-copy-button-checked');
227    }, 1000);
228    // clear code selection
229    e.clearSelection();
230  }
231  const getTextToCopy = function(trigger) {
232      const codeEl = trigger.previousElementSibling.cloneNode(true);
233      for (const childEl of codeEl.children) {
234        if (isCodeAnnotation(childEl)) {
235          childEl.remove();
236        }
237      }
238      return codeEl.innerText;
239  }
240  const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
241    text: getTextToCopy
242  });
243  clipboard.on('success', onCopySuccess);
244  if (window.document.getElementById('quarto-embedded-source-code-modal')) {
245    // For code content inside modals, clipBoardJS needs to be initialized with a container option
246    // TODO: Check when it could be a function (https://github.com/zenorocha/clipboard.js/issues/860)
247    const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
248      text: getTextToCopy,
249      container: window.document.getElementById('quarto-embedded-source-code-modal')
250    });
251    clipboardModal.on('success', onCopySuccess);
252  }
253    var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
254    var mailtoRegex = new RegExp(/^mailto:/);
255      var filterRegex = new RegExp('/' + window.location.host + '/');
256    var isInternal = (href) => {
257        return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
258    }
259    // Inspect non-navigation links and adorn them if external
260 	var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
261    for (var i=0; i<links.length; i++) {
262      const link = links[i];
263      if (!isInternal(link.href)) {
264        // undo the damage that might have been done by quarto-nav.js in the case of
265        // links that we want to consider external
266        if (link.dataset.originalHref !== undefined) {
267          link.href = link.dataset.originalHref;
268        }
269      }
270    }
271  function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
272    const config = {
273      allowHTML: true,
274      maxWidth: 500,
275      delay: 100,
276      arrow: false,
277      appendTo: function(el) {
278          return el.parentElement;
279      },
280      interactive: true,
281      interactiveBorder: 10,
282      theme: 'quarto',
283      placement: 'bottom-start',
284    };
285    if (contentFn) {
286      config.content = contentFn;
287    }
288    if (onTriggerFn) {
289      config.onTrigger = onTriggerFn;
290    }
291    if (onUntriggerFn) {
292      config.onUntrigger = onUntriggerFn;
293    }
294    window.tippy(el, config); 
295  }
296  const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
297  for (var i=0; i<noterefs.length; i++) {
298    const ref = noterefs[i];
299    tippyHover(ref, function() {
300      // use id or data attribute instead here
301      let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
302      try { href = new URL(href).hash; } catch {}
303      const id = href.replace(/^#\/?/, "");
304      const note = window.document.getElementById(id);
305      if (note) {
306        return note.innerHTML;
307      } else {
308        return "";
309      }
310    });
311  }
312  const xrefs = window.document.querySelectorAll('a.quarto-xref');
313  const processXRef = (id, note) => {
314    // Strip column container classes
315    const stripColumnClz = (el) => {
316      el.classList.remove("page-full", "page-columns");
317      if (el.children) {
318        for (const child of el.children) {
319          stripColumnClz(child);
320        }
321      }
322    }
323    stripColumnClz(note)
324    if (id === null || id.startsWith('sec-')) {
325      // Special case sections, only their first couple elements
326      const container = document.createElement("div");
327      if (note.children && note.children.length > 2) {
328        container.appendChild(note.children[0].cloneNode(true));
329        for (let i = 1; i < note.children.length; i++) {
330          const child = note.children[i];
331          if (child.tagName === "P" && child.innerText === "") {
332            continue;
333          } else {
334            container.appendChild(child.cloneNode(true));
335            break;
336          }
337        }
338        if (window.Quarto?.typesetMath) {
339          window.Quarto.typesetMath(container);
340        }
341        return container.innerHTML
342      } else {
343        if (window.Quarto?.typesetMath) {
344          window.Quarto.typesetMath(note);
345        }
346        return note.innerHTML;
347      }
348    } else {
349      // Remove any anchor links if they are present
350      const anchorLink = note.querySelector('a.anchorjs-link');
351      if (anchorLink) {
352        anchorLink.remove();
353      }
354      if (window.Quarto?.typesetMath) {
355        window.Quarto.typesetMath(note);
356      }
357      // TODO in 1.5, we should make sure this works without a callout special case
358      if (note.classList.contains("callout")) {
359        return note.outerHTML;
360      } else {
361        return note.innerHTML;
362      }
363    }
364  }
365  for (var i=0; i<xrefs.length; i++) {
366    const xref = xrefs[i];
367    tippyHover(xref, undefined, function(instance) {
368      instance.disable();
369      let url = xref.getAttribute('href');
370      let hash = undefined; 
371      if (url.startsWith('#')) {
372        hash = url;
373      } else {
374        try { hash = new URL(url).hash; } catch {}
375      }
376      if (hash) {
377        const id = hash.replace(/^#\/?/, "");
378        const note = window.document.getElementById(id);
379        if (note !== null) {
380          try {
381            const html = processXRef(id, note.cloneNode(true));
382            instance.setContent(html);
383          } finally {
384            instance.enable();
385            instance.show();
386          }
387        } else {
388          // See if we can fetch this
389          fetch(url.split('#')[0])
390          .then(res => res.text())
391          .then(html => {
392            const parser = new DOMParser();
393            const htmlDoc = parser.parseFromString(html, "text/html");
394            const note = htmlDoc.getElementById(id);
395            if (note !== null) {
396              const html = processXRef(id, note);
397              instance.setContent(html);
398            } 
399          }).finally(() => {
400            instance.enable();
401            instance.show();
402          });
403        }
404      } else {
405        // See if we can fetch a full url (with no hash to target)
406        // This is a special case and we should probably do some content thinning / targeting
407        fetch(url)
408        .then(res => res.text())
409        .then(html => {
410          const parser = new DOMParser();
411          const htmlDoc = parser.parseFromString(html, "text/html");
412          const note = htmlDoc.querySelector('main.content');
413          if (note !== null) {
414            // This should only happen for chapter cross references
415            // (since there is no id in the URL)
416            // remove the first header
417            if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
418              note.children[0].remove();
419            }
420            const html = processXRef(null, note);
421            instance.setContent(html);
422          } 
423        }).finally(() => {
424          instance.enable();
425          instance.show();
426        });
427      }
428    }, function(instance) {
429    });
430  }
431      let selectedAnnoteEl;
432      const selectorForAnnotation = ( cell, annotation) => {
433        let cellAttr = 'data-code-cell="' + cell + '"';
434        let lineAttr = 'data-code-annotation="' +  annotation + '"';
435        const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
436        return selector;
437      }
438      const selectCodeLines = (annoteEl) => {
439        const doc = window.document;
440        const targetCell = annoteEl.getAttribute("data-target-cell");
441        const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
442        const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
443        const lines = annoteSpan.getAttribute("data-code-lines").split(",");
444        const lineIds = lines.map((line) => {
445          return targetCell + "-" + line;
446        })
447        let top = null;
448        let height = null;
449        let parent = null;
450        if (lineIds.length > 0) {
451            //compute the position of the single el (top and bottom and make a div)
452            const el = window.document.getElementById(lineIds[0]);
453            top = el.offsetTop;
454            height = el.offsetHeight;
455            parent = el.parentElement.parentElement;
456          if (lineIds.length > 1) {
457            const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
458            const bottom = lastEl.offsetTop + lastEl.offsetHeight;
459            height = bottom - top;
460          }
461          if (top !== null && height !== null && parent !== null) {
462            // cook up a div (if necessary) and position it 
463            let div = window.document.getElementById("code-annotation-line-highlight");
464            if (div === null) {
465              div = window.document.createElement("div");
466              div.setAttribute("id", "code-annotation-line-highlight");
467              div.style.position = 'absolute';
468              parent.appendChild(div);
469            }
470            div.style.top = top - 2 + "px";
471            div.style.height = height + 4 + "px";
472            div.style.left = 0;
473            let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
474            if (gutterDiv === null) {
475              gutterDiv = window.document.createElement("div");
476              gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
477              gutterDiv.style.position = 'absolute';
478              const codeCell = window.document.getElementById(targetCell);
479              const gutter = codeCell.querySelector('.code-annotation-gutter');
480              gutter.appendChild(gutterDiv);
481            }
482            gutterDiv.style.top = top - 2 + "px";
483            gutterDiv.style.height = height + 4 + "px";
484          }
485          selectedAnnoteEl = annoteEl;
486        }
487      };
488      const unselectCodeLines = () => {
489        const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
490        elementsIds.forEach((elId) => {
491          const div = window.document.getElementById(elId);
492          if (div) {
493            div.remove();
494          }
495        });
496        selectedAnnoteEl = undefined;
497      };
498        // Handle positioning of the toggle
499    window.addEventListener(
500      "resize",
501      throttle(() => {
502        elRect = undefined;
503        if (selectedAnnoteEl) {
504          selectCodeLines(selectedAnnoteEl);
505        }
506      }, 10)
507    );
508    function throttle(fn, ms) {
509    let throttle = false;
510    let timer;
511      return (...args) => {
512        if(!throttle) { // first call gets through
513            fn.apply(this, args);
514            throttle = true;
515        } else { // all the others get throttled
516            if(timer) clearTimeout(timer); // cancel #2
517            timer = setTimeout(() => {
518              fn.apply(this, args);
519              timer = throttle = false;
520            }, ms);
521        }
522      };
523    }
524      // Attach click handler to the DT
525      const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
526      for (const annoteDlNode of annoteDls) {
527        annoteDlNode.addEventListener('click', (event) => {
528          const clickedEl = event.target;
529          if (clickedEl !== selectedAnnoteEl) {
530            unselectCodeLines();
531            const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
532            if (activeEl) {
533              activeEl.classList.remove('code-annotation-active');
534            }
535            selectCodeLines(clickedEl);
536            clickedEl.classList.add('code-annotation-active');
537          } else {
538            // Unselect the line
539            unselectCodeLines();
540            clickedEl.classList.remove('code-annotation-active');
541          }
542        });
543      }
544  const findCites = (el) => {
545    const parentEl = el.parentElement;
546    if (parentEl) {
547      const cites = parentEl.dataset.cites;
548      if (cites) {
549        return {
550          el,
551          cites: cites.split(' ')
552        };
553      } else {
554        return findCites(el.parentElement)
555      }
556    } else {
557      return undefined;
558    }
559  };
560  var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
561  for (var i=0; i<bibliorefs.length; i++) {
562    const ref = bibliorefs[i];
563    const citeInfo = findCites(ref);
564    if (citeInfo) {
565      tippyHover(citeInfo.el, function() {
566        var popup = window.document.createElement('div');
567        citeInfo.cites.forEach(function(cite) {
568          var citeDiv = window.document.createElement('div');
569          citeDiv.classList.add('hanging-indent');
570          citeDiv.classList.add('csl-entry');
571          var biblioDiv = window.document.getElementById('ref-' + cite);
572          if (biblioDiv) {
573            citeDiv.innerHTML = biblioDiv.innerHTML;
574          }
575          popup.appendChild(citeDiv);
576        });
577        return popup.innerHTML;
578      });
579    }
580  }
581});
582</script>
582
583</div> <!-- /content -->
584
585
586
587
588</body></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.