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.