671 lines
24 KiB
HTML
671 lines
24 KiB
HTML
|
|
<!DOCTYPE html>
|
|||
|
|
<html lang="en"><head>
|
|||
|
|
<script src="temporal stroke_files/libs/clipboard/clipboard.min.js"></script>
|
|||
|
|
<script src="temporal stroke_files/libs/quarto-html/tabby.min.js"></script>
|
|||
|
|
<script src="temporal stroke_files/libs/quarto-html/popper.min.js"></script>
|
|||
|
|
<script src="temporal stroke_files/libs/quarto-html/tippy.umd.min.js"></script>
|
|||
|
|
<link href="temporal stroke_files/libs/quarto-html/tippy.css" rel="stylesheet">
|
|||
|
|
<link href="temporal stroke_files/libs/quarto-html/light-border.css" rel="stylesheet">
|
|||
|
|
<link href="temporal stroke_files/libs/quarto-html/quarto-syntax-highlighting-549806ee2085284f45b00abea8c6df48.css" rel="stylesheet" id="quarto-text-highlighting-styles"><meta charset="utf-8">
|
|||
|
|
<meta name="generator" content="quarto-1.6.40">
|
|||
|
|
|
|||
|
|
<title>Neurologisk JC</title>
|
|||
|
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
|||
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
|||
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
|
|||
|
|
<link rel="stylesheet" href="temporal stroke_files/libs/revealjs/dist/reset.css">
|
|||
|
|
<link rel="stylesheet" href="temporal stroke_files/libs/revealjs/dist/reveal.css">
|
|||
|
|
<style>
|
|||
|
|
code{white-space: pre-wrap;}
|
|||
|
|
span.smallcaps{font-variant: small-caps;}
|
|||
|
|
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
|||
|
|
div.column{flex: auto; overflow-x: auto;}
|
|||
|
|
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
|||
|
|
ul.task-list{list-style: none;}
|
|||
|
|
ul.task-list li input[type="checkbox"] {
|
|||
|
|
width: 0.8em;
|
|||
|
|
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
|
|||
|
|
vertical-align: middle;
|
|||
|
|
}
|
|||
|
|
</style>
|
|||
|
|
<link rel="stylesheet" href="temporal stroke_files/libs/revealjs/dist/theme/quarto-a527665ed01beaa5bc5d6c6d96bbc18d.css">
|
|||
|
|
<link href="temporal stroke_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css" rel="stylesheet">
|
|||
|
|
<link href="temporal stroke_files/libs/revealjs/plugin/reveal-menu/menu.css" rel="stylesheet">
|
|||
|
|
<link href="temporal stroke_files/libs/revealjs/plugin/reveal-menu/quarto-menu.css" rel="stylesheet">
|
|||
|
|
<link href="temporal stroke_files/libs/revealjs/plugin/quarto-support/footer.css" rel="stylesheet">
|
|||
|
|
<style type="text/css">
|
|||
|
|
.reveal div.sourceCode {
|
|||
|
|
margin: 0;
|
|||
|
|
overflow: auto;
|
|||
|
|
}
|
|||
|
|
.reveal div.hanging-indent {
|
|||
|
|
margin-left: 1em;
|
|||
|
|
text-indent: -1em;
|
|||
|
|
}
|
|||
|
|
.reveal .slide:not(.center) {
|
|||
|
|
height: 100%;
|
|||
|
|
}
|
|||
|
|
.reveal .slide.scrollable {
|
|||
|
|
overflow-y: auto;
|
|||
|
|
}
|
|||
|
|
.reveal .footnotes {
|
|||
|
|
height: 100%;
|
|||
|
|
overflow-y: auto;
|
|||
|
|
}
|
|||
|
|
.reveal .slide .absolute {
|
|||
|
|
position: absolute;
|
|||
|
|
display: block;
|
|||
|
|
}
|
|||
|
|
.reveal .footnotes ol {
|
|||
|
|
counter-reset: ol;
|
|||
|
|
list-style-type: none;
|
|||
|
|
margin-left: 0;
|
|||
|
|
}
|
|||
|
|
.reveal .footnotes ol li:before {
|
|||
|
|
counter-increment: ol;
|
|||
|
|
content: counter(ol) ". ";
|
|||
|
|
}
|
|||
|
|
.reveal .footnotes ol li > p:first-child {
|
|||
|
|
display: inline-block;
|
|||
|
|
}
|
|||
|
|
.reveal .slide ul,
|
|||
|
|
.reveal .slide ol {
|
|||
|
|
margin-bottom: 0.5em;
|
|||
|
|
}
|
|||
|
|
.reveal .slide ul li,
|
|||
|
|
.reveal .slide ol li {
|
|||
|
|
margin-top: 0.4em;
|
|||
|
|
margin-bottom: 0.2em;
|
|||
|
|
}
|
|||
|
|
.reveal .slide ul[role="tablist"] li {
|
|||
|
|
margin-bottom: 0;
|
|||
|
|
}
|
|||
|
|
.reveal .slide ul li > *:first-child,
|
|||
|
|
.reveal .slide ol li > *:first-child {
|
|||
|
|
margin-block-start: 0;
|
|||
|
|
}
|
|||
|
|
.reveal .slide ul li > *:last-child,
|
|||
|
|
.reveal .slide ol li > *:last-child {
|
|||
|
|
margin-block-end: 0;
|
|||
|
|
}
|
|||
|
|
.reveal .slide .columns:nth-child(3) {
|
|||
|
|
margin-block-start: 0.8em;
|
|||
|
|
}
|
|||
|
|
.reveal blockquote {
|
|||
|
|
box-shadow: none;
|
|||
|
|
}
|
|||
|
|
.reveal .tippy-content>* {
|
|||
|
|
margin-top: 0.2em;
|
|||
|
|
margin-bottom: 0.7em;
|
|||
|
|
}
|
|||
|
|
.reveal .tippy-content>*:last-child {
|
|||
|
|
margin-bottom: 0.2em;
|
|||
|
|
}
|
|||
|
|
.reveal .slide > img.stretch.quarto-figure-center,
|
|||
|
|
.reveal .slide > img.r-stretch.quarto-figure-center {
|
|||
|
|
display: block;
|
|||
|
|
margin-left: auto;
|
|||
|
|
margin-right: auto;
|
|||
|
|
}
|
|||
|
|
.reveal .slide > img.stretch.quarto-figure-left,
|
|||
|
|
.reveal .slide > img.r-stretch.quarto-figure-left {
|
|||
|
|
display: block;
|
|||
|
|
margin-left: 0;
|
|||
|
|
margin-right: auto;
|
|||
|
|
}
|
|||
|
|
.reveal .slide > img.stretch.quarto-figure-right,
|
|||
|
|
.reveal .slide > img.r-stretch.quarto-figure-right {
|
|||
|
|
display: block;
|
|||
|
|
margin-left: auto;
|
|||
|
|
margin-right: 0;
|
|||
|
|
}
|
|||
|
|
</style>
|
|||
|
|
</head>
|
|||
|
|
<body class="quarto-light">
|
|||
|
|
<div class="reveal">
|
|||
|
|
<div class="slides">
|
|||
|
|
|
|||
|
|
<section id="title-slide" class="quarto-title-block center">
|
|||
|
|
<h1 class="title">Neurologisk JC</h1>
|
|||
|
|
<p class="subtitle">Temporal Trends in Vascular Risk Factor Burden Among Young Adults With Ischemic Stroke</p>
|
|||
|
|
|
|||
|
|
<div class="quarto-title-authors">
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</section>
|
|||
|
|
<section id="background" class="slide level2">
|
|||
|
|
<h2>Background</h2>
|
|||
|
|
<ul>
|
|||
|
|
<li>Stroke is a leading cause of death and disability<br>
|
|||
|
|
</li>
|
|||
|
|
<li>Traditionally considered a disease of older adults<br>
|
|||
|
|
</li>
|
|||
|
|
<li>Rising stroke incidence among <strong>young adults (18–55 years old)</strong><br>
|
|||
|
|
</li>
|
|||
|
|
<li>Increasing <strong>vascular risk factors (VRFs)</strong> may be driving this trend<br>
|
|||
|
|
</li>
|
|||
|
|
<li>Study aims to analyze <strong>temporal trends in VRF burden</strong> among young stroke patients</li>
|
|||
|
|
</ul>
|
|||
|
|
</section>
|
|||
|
|
<section id="study-design-data-source" class="slide level2">
|
|||
|
|
<h2>Study Design & Data Source</h2>
|
|||
|
|
<ul>
|
|||
|
|
<li><strong>Prospective Cohort Study</strong> using <strong>Florida Stroke Registry (FSR)</strong><br>
|
|||
|
|
</li>
|
|||
|
|
<li>Data collected from <strong>2014–2022</strong> across <strong>172 hospitals</strong><br>
|
|||
|
|
</li>
|
|||
|
|
<li><strong>Inclusion Criteria:</strong>
|
|||
|
|
<ul>
|
|||
|
|
<li>Patients <strong>18–55 years old</strong> with <strong>ischemic stroke (IS)</strong><br>
|
|||
|
|
</li>
|
|||
|
|
</ul></li>
|
|||
|
|
<li><strong>Exclusion Criteria:</strong>
|
|||
|
|
<ul>
|
|||
|
|
<li>Patients outside age range<br>
|
|||
|
|
</li>
|
|||
|
|
<li>Patients with <strong>TIA, intracranial hemorrhage, or subarachnoid hemorrhage</strong></li>
|
|||
|
|
</ul></li>
|
|||
|
|
</ul>
|
|||
|
|
</section>
|
|||
|
|
<section id="data-collection-variables" class="slide level2">
|
|||
|
|
<h2>Data Collection & Variables</h2>
|
|||
|
|
<ul>
|
|||
|
|
<li>Data obtained from <strong>Get With The Guidelines-Stroke (GWTG-S)</strong><br>
|
|||
|
|
</li>
|
|||
|
|
<li><strong>Demographics:</strong>
|
|||
|
|
<ul>
|
|||
|
|
<li>Age, sex, race/ethnicity<br>
|
|||
|
|
</li>
|
|||
|
|
</ul></li>
|
|||
|
|
<li><strong>Vascular Risk Factors (VRFs):</strong>
|
|||
|
|
<ul>
|
|||
|
|
<li>Hypertension, dyslipidemia, obesity, diabetes, smoking<br>
|
|||
|
|
</li>
|
|||
|
|
<li>Atrial fibrillation, coronary artery disease, heart failure, sleep apnea<br>
|
|||
|
|
</li>
|
|||
|
|
</ul></li>
|
|||
|
|
<li><strong>Polymorbidity:</strong> Defined as <strong>3 or more VRFs</strong></li>
|
|||
|
|
</ul>
|
|||
|
|
</section>
|
|||
|
|
<section id="statistical-analysis" class="slide level2">
|
|||
|
|
<h2>Statistical Analysis</h2>
|
|||
|
|
<ul>
|
|||
|
|
<li><strong>Comparative Analysis:</strong>
|
|||
|
|
<ul>
|
|||
|
|
<li>Continuous variables: <strong>t-test / Wilcoxon-Mann-Whitney</strong><br>
|
|||
|
|
</li>
|
|||
|
|
<li>Categorical variables: <strong>Chi-square test</strong><br>
|
|||
|
|
</li>
|
|||
|
|
</ul></li>
|
|||
|
|
<li><strong>Temporal Trends Analysis:</strong>
|
|||
|
|
<ul>
|
|||
|
|
<li>VRF trends assessed across study period</li>
|
|||
|
|
</ul></li>
|
|||
|
|
</ul>
|
|||
|
|
</section>
|
|||
|
|
<section id="main-results" class="slide level2">
|
|||
|
|
<h2>Main Results</h2>
|
|||
|
|
<ul>
|
|||
|
|
<li><strong>Total patients analyzed:</strong> 36,488<br>
|
|||
|
|
</li>
|
|||
|
|
<li><strong>Age breakdown:</strong>
|
|||
|
|
<ul>
|
|||
|
|
<li>18–35 years: <strong>3,363 patients (9.2%)</strong><br>
|
|||
|
|
</li>
|
|||
|
|
<li>36–55 years: <strong>33,125 patients (90.8%)</strong></li>
|
|||
|
|
</ul></li>
|
|||
|
|
</ul>
|
|||
|
|
</section>
|
|||
|
|
<section id="section" class="slide level2">
|
|||
|
|
<h2></h2>
|
|||
|
|
<ul>
|
|||
|
|
<li><strong>Key Findings:</strong>
|
|||
|
|
<ul>
|
|||
|
|
<li><strong>Polymorbidity (≥3 VRFs) increased</strong> over time:
|
|||
|
|
<ul>
|
|||
|
|
<li><strong>18–35 years:</strong> 10.9% → 16.4% (p = 0.002)<br>
|
|||
|
|
</li>
|
|||
|
|
<li><strong>36–55 years:</strong> 34.6% → 41.9% (p < 0.001)<br>
|
|||
|
|
</li>
|
|||
|
|
</ul></li>
|
|||
|
|
<li><strong>Higher VRF burden in</strong>:
|
|||
|
|
<ul>
|
|||
|
|
<li><strong>Non-Hispanic Black</strong> patients</li>
|
|||
|
|
<li><strong>Male</strong> patients<br>
|
|||
|
|
</li>
|
|||
|
|
</ul></li>
|
|||
|
|
<li><strong>Most common VRFs:</strong> Hypertension, obesity, diabetes</li>
|
|||
|
|
</ul></li>
|
|||
|
|
</ul>
|
|||
|
|
</section>
|
|||
|
|
<section id="strengths-of-the-study" class="slide level2">
|
|||
|
|
<h2>Strengths of the Study</h2>
|
|||
|
|
<p>✅ <strong>Large, diverse cohort</strong> from a statewide registry<br>
|
|||
|
|
✅ <strong>Standardized data collection</strong> via GWTG-S<br>
|
|||
|
|
✅ <strong>Analyzed temporal trends</strong> in VRFs<br>
|
|||
|
|
✅ <strong>Examined racial & sex disparities</strong> in VRF burden</p>
|
|||
|
|
</section>
|
|||
|
|
<section id="study-limitations" class="slide level2">
|
|||
|
|
<h2>Study Limitations</h2>
|
|||
|
|
<p>❌ <strong>Limited generalizability</strong> (Florida hospitals only)<br>
|
|||
|
|
❌ <strong>No stroke etiology data</strong> (high missingness)<br>
|
|||
|
|
❌ <strong>Unknown VRF severity & management</strong> (no treatment data)<br>
|
|||
|
|
❌ <strong>Potential bias in VRF reporting</strong> (better diagnosis over time)<br>
|
|||
|
|
❌ <strong>Lack of socioeconomic data</strong> (income, education, access to care)</p>
|
|||
|
|
</section>
|
|||
|
|
<section id="conclusion" class="slide level2">
|
|||
|
|
<h2>Conclusion</h2>
|
|||
|
|
<ul>
|
|||
|
|
<li><strong>VRF burden is increasing</strong> in young adults with stroke<br>
|
|||
|
|
</li>
|
|||
|
|
<li><strong>Disparities exist</strong>—higher polymorbidity in <strong>Black and male patients</strong><br>
|
|||
|
|
</li>
|
|||
|
|
<li><strong>Early identification & prevention strategies</strong> are crucial<br>
|
|||
|
|
</li>
|
|||
|
|
<li><strong>Future research</strong> should focus on <strong>stroke etiology & socioeconomic factors</strong></li>
|
|||
|
|
</ul>
|
|||
|
|
|
|||
|
|
</section>
|
|||
|
|
</div>
|
|||
|
|
<div class="quarto-auto-generated-content" style="display: none;">
|
|||
|
|
<div class="footer footer-default">
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div></div>
|
|||
|
|
|
|||
|
|
<script>window.backupDefine = window.define; window.define = undefined;</script>
|
|||
|
|
<script src="temporal stroke_files/libs/revealjs/dist/reveal.js"></script>
|
|||
|
|
<!-- reveal.js plugins -->
|
|||
|
|
<script src="temporal stroke_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js"></script>
|
|||
|
|
<script src="temporal stroke_files/libs/revealjs/plugin/pdf-export/pdfexport.js"></script>
|
|||
|
|
<script src="temporal stroke_files/libs/revealjs/plugin/reveal-menu/menu.js"></script>
|
|||
|
|
<script src="temporal stroke_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js"></script>
|
|||
|
|
<script src="temporal stroke_files/libs/revealjs/plugin/quarto-support/support.js"></script>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<script src="temporal stroke_files/libs/revealjs/plugin/notes/notes.js"></script>
|
|||
|
|
<script src="temporal stroke_files/libs/revealjs/plugin/search/search.js"></script>
|
|||
|
|
<script src="temporal stroke_files/libs/revealjs/plugin/zoom/zoom.js"></script>
|
|||
|
|
<script src="temporal stroke_files/libs/revealjs/plugin/math/math.js"></script>
|
|||
|
|
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
|
|||
|
|
// Full list of configuration options available at:
|
|||
|
|
// https://revealjs.com/config/
|
|||
|
|
Reveal.initialize({
|
|||
|
|
'controlsAuto': true,
|
|||
|
|
'previewLinksAuto': false,
|
|||
|
|
'pdfSeparateFragments': false,
|
|||
|
|
'autoAnimateEasing': "ease",
|
|||
|
|
'autoAnimateDuration': 1,
|
|||
|
|
'autoAnimateUnmatched': true,
|
|||
|
|
'jumpToSlide': true,
|
|||
|
|
'menu': {"side":"left","useTextContentForMissingTitles":true,"markers":false,"loadIcons":false,"custom":[{"title":"Tools","icon":"<i class=\"fas fa-gear\"></i>","content":"<ul class=\"slide-menu-items\">\n<li class=\"slide-tool-item active\" data-item=\"0\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.fullscreen(event)\"><kbd>f</kbd> Fullscreen</a></li>\n<li class=\"slide-tool-item\" data-item=\"1\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.speakerMode(event)\"><kbd>s</kbd> Speaker View</a></li>\n<li class=\"slide-tool-item\" data-item=\"2\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.overview(event)\"><kbd>o</kbd> Slide Overview</a></li>\n<li class=\"slide-tool-item\" data-item=\"3\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.togglePdfExport(event)\"><kbd>e</kbd> PDF Export Mode</a></li>\n<li class=\"slide-tool-item\" data-item=\"4\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.toggleScrollView(event)\"><kbd>r</kbd> Scroll View Mode</a></li>\n<li class=\"slide-tool-item\" data-item=\"5\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.keyboardHelp(event)\"><kbd>?</kbd> Keyboard Help</a></li>\n</ul>"}],"openButton":true},
|
|||
|
|
'smaller': false,
|
|||
|
|
|
|||
|
|
// Display controls in the bottom right corner
|
|||
|
|
controls: false,
|
|||
|
|
|
|||
|
|
// Help the user learn the controls by providing hints, for example by
|
|||
|
|
// bouncing the down arrow when they first encounter a vertical slide
|
|||
|
|
controlsTutorial: false,
|
|||
|
|
|
|||
|
|
// Determines where controls appear, "edges" or "bottom-right"
|
|||
|
|
controlsLayout: 'edges',
|
|||
|
|
|
|||
|
|
// Visibility rule for backwards navigation arrows; "faded", "hidden"
|
|||
|
|
// or "visible"
|
|||
|
|
controlsBackArrows: 'faded',
|
|||
|
|
|
|||
|
|
// Display a presentation progress bar
|
|||
|
|
progress: true,
|
|||
|
|
|
|||
|
|
// Display the page number of the current slide
|
|||
|
|
slideNumber: false,
|
|||
|
|
|
|||
|
|
// 'all', 'print', or 'speaker'
|
|||
|
|
showSlideNumber: 'all',
|
|||
|
|
|
|||
|
|
// Add the current slide number to the URL hash so that reloading the
|
|||
|
|
// page/copying the URL will return you to the same slide
|
|||
|
|
hash: true,
|
|||
|
|
|
|||
|
|
// Start with 1 for the hash rather than 0
|
|||
|
|
hashOneBasedIndex: false,
|
|||
|
|
|
|||
|
|
// Flags if we should monitor the hash and change slides accordingly
|
|||
|
|
respondToHashChanges: true,
|
|||
|
|
|
|||
|
|
// Push each slide change to the browser history
|
|||
|
|
history: true,
|
|||
|
|
|
|||
|
|
// Enable keyboard shortcuts for navigation
|
|||
|
|
keyboard: true,
|
|||
|
|
|
|||
|
|
// Enable the slide overview mode
|
|||
|
|
overview: true,
|
|||
|
|
|
|||
|
|
// Disables the default reveal.js slide layout (scaling and centering)
|
|||
|
|
// so that you can use custom CSS layout
|
|||
|
|
disableLayout: false,
|
|||
|
|
|
|||
|
|
// Vertical centering of slides
|
|||
|
|
center: false,
|
|||
|
|
|
|||
|
|
// Enables touch navigation on devices with touch input
|
|||
|
|
touch: true,
|
|||
|
|
|
|||
|
|
// Loop the presentation
|
|||
|
|
loop: false,
|
|||
|
|
|
|||
|
|
// Change the presentation direction to be RTL
|
|||
|
|
rtl: false,
|
|||
|
|
|
|||
|
|
// see https://revealjs.com/vertical-slides/#navigation-mode
|
|||
|
|
navigationMode: 'linear',
|
|||
|
|
|
|||
|
|
// Randomizes the order of slides each time the presentation loads
|
|||
|
|
shuffle: false,
|
|||
|
|
|
|||
|
|
// Turns fragments on and off globally
|
|||
|
|
fragments: true,
|
|||
|
|
|
|||
|
|
// Flags whether to include the current fragment in the URL,
|
|||
|
|
// so that reloading brings you to the same fragment position
|
|||
|
|
fragmentInURL: false,
|
|||
|
|
|
|||
|
|
// Flags if the presentation is running in an embedded mode,
|
|||
|
|
// i.e. contained within a limited portion of the screen
|
|||
|
|
embedded: false,
|
|||
|
|
|
|||
|
|
// Flags if we should show a help overlay when the questionmark
|
|||
|
|
// key is pressed
|
|||
|
|
help: true,
|
|||
|
|
|
|||
|
|
// Flags if it should be possible to pause the presentation (blackout)
|
|||
|
|
pause: true,
|
|||
|
|
|
|||
|
|
// Flags if speaker notes should be visible to all viewers
|
|||
|
|
showNotes: false,
|
|||
|
|
|
|||
|
|
// Global override for autoplaying embedded media (null/true/false)
|
|||
|
|
autoPlayMedia: null,
|
|||
|
|
|
|||
|
|
// Global override for preloading lazy-loaded iframes (null/true/false)
|
|||
|
|
preloadIframes: null,
|
|||
|
|
|
|||
|
|
// Number of milliseconds between automatically proceeding to the
|
|||
|
|
// next slide, disabled when set to 0, this value can be overwritten
|
|||
|
|
// by using a data-autoslide attribute on your slides
|
|||
|
|
autoSlide: 0,
|
|||
|
|
|
|||
|
|
// Stop auto-sliding after user input
|
|||
|
|
autoSlideStoppable: true,
|
|||
|
|
|
|||
|
|
// Use this method for navigation when auto-sliding
|
|||
|
|
autoSlideMethod: null,
|
|||
|
|
|
|||
|
|
// Specify the average time in seconds that you think you will spend
|
|||
|
|
// presenting each slide. This is used to show a pacing timer in the
|
|||
|
|
// speaker view
|
|||
|
|
defaultTiming: null,
|
|||
|
|
|
|||
|
|
// Enable slide navigation via mouse wheel
|
|||
|
|
mouseWheel: false,
|
|||
|
|
|
|||
|
|
// The display mode that will be used to show slides
|
|||
|
|
display: 'block',
|
|||
|
|
|
|||
|
|
// Hide cursor if inactive
|
|||
|
|
hideInactiveCursor: true,
|
|||
|
|
|
|||
|
|
// Time before the cursor is hidden (in ms)
|
|||
|
|
hideCursorTime: 5000,
|
|||
|
|
|
|||
|
|
// Opens links in an iframe preview overlay
|
|||
|
|
previewLinks: false,
|
|||
|
|
|
|||
|
|
// Transition style (none/fade/slide/convex/concave/zoom)
|
|||
|
|
transition: 'none',
|
|||
|
|
|
|||
|
|
// Transition speed (default/fast/slow)
|
|||
|
|
transitionSpeed: 'default',
|
|||
|
|
|
|||
|
|
// Transition style for full page slide backgrounds
|
|||
|
|
// (none/fade/slide/convex/concave/zoom)
|
|||
|
|
backgroundTransition: 'none',
|
|||
|
|
|
|||
|
|
// Number of slides away from the current that are visible
|
|||
|
|
viewDistance: 3,
|
|||
|
|
|
|||
|
|
// Number of slides away from the current that are visible on mobile
|
|||
|
|
// devices. It is advisable to set this to a lower number than
|
|||
|
|
// viewDistance in order to save resources.
|
|||
|
|
mobileViewDistance: 2,
|
|||
|
|
|
|||
|
|
// The "normal" size of the presentation, aspect ratio will be preserved
|
|||
|
|
// when the presentation is scaled to fit different resolutions. Can be
|
|||
|
|
// specified using percentage units.
|
|||
|
|
width: 1050,
|
|||
|
|
|
|||
|
|
height: 700,
|
|||
|
|
|
|||
|
|
// Factor of the display size that should remain empty around the content
|
|||
|
|
margin: 0.1,
|
|||
|
|
|
|||
|
|
math: {
|
|||
|
|
mathjax: 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.9/MathJax.js',
|
|||
|
|
config: 'TeX-AMS_HTML-full',
|
|||
|
|
tex2jax: {
|
|||
|
|
inlineMath: [['\\(','\\)']],
|
|||
|
|
displayMath: [['\\[','\\]']],
|
|||
|
|
balanceBraces: true,
|
|||
|
|
processEscapes: false,
|
|||
|
|
processRefs: true,
|
|||
|
|
processEnvironments: true,
|
|||
|
|
preview: 'TeX',
|
|||
|
|
skipTags: ['script','noscript','style','textarea','pre','code'],
|
|||
|
|
ignoreClass: 'tex2jax_ignore',
|
|||
|
|
processClass: 'tex2jax_process'
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// reveal.js plugins
|
|||
|
|
plugins: [QuartoLineHighlight, PdfExport, RevealMenu, QuartoSupport,
|
|||
|
|
|
|||
|
|
RevealMath,
|
|||
|
|
RevealNotes,
|
|||
|
|
RevealSearch,
|
|||
|
|
RevealZoom
|
|||
|
|
]
|
|||
|
|
});
|
|||
|
|
</script>
|
|||
|
|
<script id="quarto-html-after-body" type="application/javascript">
|
|||
|
|
window.document.addEventListener("DOMContentLoaded", function (event) {
|
|||
|
|
const toggleBodyColorMode = (bsSheetEl) => {
|
|||
|
|
const mode = bsSheetEl.getAttribute("data-mode");
|
|||
|
|
const bodyEl = window.document.querySelector("body");
|
|||
|
|
if (mode === "dark") {
|
|||
|
|
bodyEl.classList.add("quarto-dark");
|
|||
|
|
bodyEl.classList.remove("quarto-light");
|
|||
|
|
} else {
|
|||
|
|
bodyEl.classList.add("quarto-light");
|
|||
|
|
bodyEl.classList.remove("quarto-dark");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
const toggleBodyColorPrimary = () => {
|
|||
|
|
const bsSheetEl = window.document.querySelector("link#quarto-bootstrap");
|
|||
|
|
if (bsSheetEl) {
|
|||
|
|
toggleBodyColorMode(bsSheetEl);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
toggleBodyColorPrimary();
|
|||
|
|
const tabsets = window.document.querySelectorAll(".panel-tabset-tabby")
|
|||
|
|
tabsets.forEach(function(tabset) {
|
|||
|
|
const tabby = new Tabby('#' + tabset.id);
|
|||
|
|
});
|
|||
|
|
const isCodeAnnotation = (el) => {
|
|||
|
|
for (const clz of el.classList) {
|
|||
|
|
if (clz.startsWith('code-annotation-')) {
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
const onCopySuccess = function(e) {
|
|||
|
|
// button target
|
|||
|
|
const button = e.trigger;
|
|||
|
|
// don't keep focus
|
|||
|
|
button.blur();
|
|||
|
|
// flash "checked"
|
|||
|
|
button.classList.add('code-copy-button-checked');
|
|||
|
|
var currentTitle = button.getAttribute("title");
|
|||
|
|
button.setAttribute("title", "Copied!");
|
|||
|
|
let tooltip;
|
|||
|
|
if (window.bootstrap) {
|
|||
|
|
button.setAttribute("data-bs-toggle", "tooltip");
|
|||
|
|
button.setAttribute("data-bs-placement", "left");
|
|||
|
|
button.setAttribute("data-bs-title", "Copied!");
|
|||
|
|
tooltip = new bootstrap.Tooltip(button,
|
|||
|
|
{ trigger: "manual",
|
|||
|
|
customClass: "code-copy-button-tooltip",
|
|||
|
|
offset: [0, -8]});
|
|||
|
|
tooltip.show();
|
|||
|
|
}
|
|||
|
|
setTimeout(function() {
|
|||
|
|
if (tooltip) {
|
|||
|
|
tooltip.hide();
|
|||
|
|
button.removeAttribute("data-bs-title");
|
|||
|
|
button.removeAttribute("data-bs-toggle");
|
|||
|
|
button.removeAttribute("data-bs-placement");
|
|||
|
|
}
|
|||
|
|
button.setAttribute("title", currentTitle);
|
|||
|
|
button.classList.remove('code-copy-button-checked');
|
|||
|
|
}, 1000);
|
|||
|
|
// clear code selection
|
|||
|
|
e.clearSelection();
|
|||
|
|
}
|
|||
|
|
const getTextToCopy = function(trigger) {
|
|||
|
|
const codeEl = trigger.previousElementSibling.cloneNode(true);
|
|||
|
|
for (const childEl of codeEl.children) {
|
|||
|
|
if (isCodeAnnotation(childEl)) {
|
|||
|
|
childEl.remove();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return codeEl.innerText;
|
|||
|
|
}
|
|||
|
|
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
|
|||
|
|
text: getTextToCopy
|
|||
|
|
});
|
|||
|
|
clipboard.on('success', onCopySuccess);
|
|||
|
|
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
|
|||
|
|
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
|
|||
|
|
text: getTextToCopy,
|
|||
|
|
container: window.document.getElementById('quarto-embedded-source-code-modal')
|
|||
|
|
});
|
|||
|
|
clipboardModal.on('success', onCopySuccess);
|
|||
|
|
}
|
|||
|
|
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
|
|||
|
|
var mailtoRegex = new RegExp(/^mailto:/);
|
|||
|
|
var filterRegex = new RegExp('/' + window.location.host + '/');
|
|||
|
|
var isInternal = (href) => {
|
|||
|
|
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
|
|||
|
|
}
|
|||
|
|
// Inspect non-navigation links and adorn them if external
|
|||
|
|
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)');
|
|||
|
|
for (var i=0; i<links.length; i++) {
|
|||
|
|
const link = links[i];
|
|||
|
|
if (!isInternal(link.href)) {
|
|||
|
|
// undo the damage that might have been done by quarto-nav.js in the case of
|
|||
|
|
// links that we want to consider external
|
|||
|
|
if (link.dataset.originalHref !== undefined) {
|
|||
|
|
link.href = link.dataset.originalHref;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
|
|||
|
|
const config = {
|
|||
|
|
allowHTML: true,
|
|||
|
|
maxWidth: 500,
|
|||
|
|
delay: 100,
|
|||
|
|
arrow: false,
|
|||
|
|
appendTo: function(el) {
|
|||
|
|
return el.closest('section.slide') || el.parentElement;
|
|||
|
|
},
|
|||
|
|
interactive: true,
|
|||
|
|
interactiveBorder: 10,
|
|||
|
|
theme: 'light-border',
|
|||
|
|
placement: 'bottom-start',
|
|||
|
|
};
|
|||
|
|
if (contentFn) {
|
|||
|
|
config.content = contentFn;
|
|||
|
|
}
|
|||
|
|
if (onTriggerFn) {
|
|||
|
|
config.onTrigger = onTriggerFn;
|
|||
|
|
}
|
|||
|
|
if (onUntriggerFn) {
|
|||
|
|
config.onUntrigger = onUntriggerFn;
|
|||
|
|
}
|
|||
|
|
config['offset'] = [0,0];
|
|||
|
|
config['maxWidth'] = 700;
|
|||
|
|
window.tippy(el, config);
|
|||
|
|
}
|
|||
|
|
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
|
|||
|
|
for (var i=0; i<noterefs.length; i++) {
|
|||
|
|
const ref = noterefs[i];
|
|||
|
|
tippyHover(ref, function() {
|
|||
|
|
// use id or data attribute instead here
|
|||
|
|
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
|
|||
|
|
try { href = new URL(href).hash; } catch {}
|
|||
|
|
const id = href.replace(/^#\/?/, "");
|
|||
|
|
const note = window.document.getElementById(id);
|
|||
|
|
if (note) {
|
|||
|
|
return note.innerHTML;
|
|||
|
|
} else {
|
|||
|
|
return "";
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
const findCites = (el) => {
|
|||
|
|
const parentEl = el.parentElement;
|
|||
|
|
if (parentEl) {
|
|||
|
|
const cites = parentEl.dataset.cites;
|
|||
|
|
if (cites) {
|
|||
|
|
return {
|
|||
|
|
el,
|
|||
|
|
cites: cites.split(' ')
|
|||
|
|
};
|
|||
|
|
} else {
|
|||
|
|
return findCites(el.parentElement)
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
return undefined;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
|
|||
|
|
for (var i=0; i<bibliorefs.length; i++) {
|
|||
|
|
const ref = bibliorefs[i];
|
|||
|
|
const citeInfo = findCites(ref);
|
|||
|
|
if (citeInfo) {
|
|||
|
|
tippyHover(citeInfo.el, function() {
|
|||
|
|
var popup = window.document.createElement('div');
|
|||
|
|
citeInfo.cites.forEach(function(cite) {
|
|||
|
|
var citeDiv = window.document.createElement('div');
|
|||
|
|
citeDiv.classList.add('hanging-indent');
|
|||
|
|
citeDiv.classList.add('csl-entry');
|
|||
|
|
var biblioDiv = window.document.getElementById('ref-' + cite);
|
|||
|
|
if (biblioDiv) {
|
|||
|
|
citeDiv.innerHTML = biblioDiv.innerHTML;
|
|||
|
|
}
|
|||
|
|
popup.appendChild(citeDiv);
|
|||
|
|
});
|
|||
|
|
return popup.innerHTML;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</body></html>
|