From 2abd696064affdfc6d0228c4b6fe0aae32eaca24 Mon Sep 17 00:00:00 2001 From: Kien123291 Date: Fri, 23 Jan 2026 16:06:53 -0500 Subject: [PATCH 1/2] upload slides --- presentations/test.Rmd | 636 +++++++++++++++++++++++++++ presentations/test.html | 920 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1556 insertions(+) create mode 100644 presentations/test.Rmd create mode 100644 presentations/test.html diff --git a/presentations/test.Rmd b/presentations/test.Rmd new file mode 100644 index 0000000..b47eb19 --- /dev/null +++ b/presentations/test.Rmd @@ -0,0 +1,636 @@ +--- +title: "Presentation Ninja" +subtitle: "⚔
with xaringan" +author: "Yihui Xie" +institute: "RStudio, PBC" +date: "2016/12/12 (updated: `r Sys.Date()`)" +output: + xaringan::moon_reader: + lib_dir: libs + nature: + highlightStyle: github + highlightLines: true + countIncrementalSlides: false +--- + +background-image: url(https://upload.wikimedia.org/wikipedia/commons/b/be/Sharingan_triple.svg) + +```{r setup, include=FALSE} +options(htmltools.dir.version = FALSE) +``` + +??? + +Image credit: [Wikimedia Commons](https://commons.wikimedia.org/wiki/File:Sharingan_triple.svg) + +--- +class: center, middle + +# xaringan + +### /ʃaː.'riŋ.ɡan/ + +--- +class: inverse, center, middle + +# Get Started + +--- + +# Hello World + +Install the **xaringan** package from [Github](https://github.com/yihui/xaringan): + +```{r eval=FALSE, tidy=FALSE} +remotes::install_github("yihui/xaringan") +``` + +-- + +You are recommended to use the [RStudio IDE](https://www.rstudio.com/products/rstudio/), but you do not have to. + +- Create a new R Markdown document from the menu `File -> New File -> R Markdown -> From Template -> Ninja Presentation`;1 + +-- + +- Click the `Knit` button to compile it; + +-- + +- or use the [RStudio Addin](https://rstudio.github.io/rstudioaddins/)2 "Infinite Moon Reader" to live preview the slides (every time you update and save the Rmd document, the slides will be automatically reloaded in RStudio Viewer. + +.footnote[ +[1] 中文用户请看[这份教程](https://slides.yihui.org/xaringan/zh-CN.html) + +[2] See [#2](https://github.com/yihui/xaringan/issues/2) if you do not see the template or addin in RStudio. +] + +--- +background-image: url(`r xaringan:::karl`) +background-position: 50% 50% +class: center, bottom, inverse + +# You only live once! + +--- + +# Hello Ninja + +As a presentation ninja, you certainly should not be satisfied by the "Hello World" example. You need to understand more about two things: + +1. The [remark.js](https://remarkjs.com) library; + +1. The **xaringan** package; + +Basically **xaringan** injected the chakra of R Markdown (minus Pandoc) into **remark.js**. The slides are rendered by remark.js in the web browser, and the Markdown source needed by remark.js is generated from R Markdown (**knitr**). + +--- + +# remark.js + +You can see an introduction of remark.js from [its homepage](https://remarkjs.com). You should read the [remark.js Wiki](https://github.com/gnab/remark/wiki) at least once to know how to + +- create a new slide (Markdown syntax* and slide properties); + +- format a slide (e.g. text alignment); + +- configure the slideshow; + +- and use the presentation (keyboard shortcuts). + +It is important to be familiar with remark.js before you can understand the options in **xaringan**. + +.footnote[[*] It is different with Pandoc's Markdown! It is limited but should be enough for presentation purposes. Come on... You do not need a slide for the Table of Contents! Well, the Markdown support in remark.js [may be improved](https://github.com/gnab/remark/issues/142) in the future.] + +--- +background-image: url(`r xaringan:::karl`) +background-size: cover +class: center, bottom, inverse + +# I was so happy to have discovered remark.js! + +--- +class: inverse, middle, center + +# Using xaringan + +--- + +# xaringan + +Provides an R Markdown output format `xaringan::moon_reader` as a wrapper for remark.js, and you can use it in the YAML metadata, e.g. + +```yaml +--- +title: "A Cool Presentation" +output: + xaringan::moon_reader: + yolo: true + nature: + autoplay: 30000 +--- +``` + +See the help page `?xaringan::moon_reader` for all possible options that you can use. + +--- + +# remark.js vs xaringan + +Some differences between using remark.js (left) and using **xaringan** (right): + +.pull-left[ +1. Start with a boilerplate HTML file; + +1. Plain Markdown; + +1. Write JavaScript to autoplay slides; + +1. Manually configure MathJax; + +1. Highlight code with `*`; + +1. Edit Markdown source and refresh browser to see updated slides; +] + +.pull-right[ +1. Start with an R Markdown document; + +1. R Markdown (can embed R/other code chunks); + +1. Provide an option `autoplay`; + +1. MathJax just works;* + +1. Highlight code with `{{}}`; + +1. The RStudio addin "Infinite Moon Reader" automatically refreshes slides on changes; +] + +.footnote[[*] Not really. See next page.] + +--- + +# Math Expressions + +You can write LaTeX math expressions inside a pair of dollar signs, e.g. $\alpha+\beta$ renders $\alpha+\beta$. You can use the display style with double dollar signs: + +``` +$$\bar{X}=\frac{1}{n}\sum_{i=1}^nX_i$$ +``` + +$$\bar{X}=\frac{1}{n}\sum_{i=1}^nX_i$$ + +Limitations: + +1. The source code of a LaTeX math expression must be in one line, unless it is inside a pair of double dollar signs, in which case the starting `$$` must appear in the very beginning of a line, followed immediately by a non-space character, and the ending `$$` must be at the end of a line, led by a non-space character; + +1. There should not be spaces after the opening `$` or before the closing `$`. + +1. Math does not work on the title slide (see [#61](https://github.com/yihui/xaringan/issues/61) for a workaround). + +--- + +# R Code + +```{r comment='#'} +# a boring regression +fit = lm(dist ~ 1 + speed, data = cars) +coef(summary(fit)) +dojutsu = c('地爆天星', '天照', '加具土命', '神威', '須佐能乎', '無限月読') +grep('天', dojutsu, value = TRUE) +``` + +--- + +# R Plots + +```{r cars, fig.height=4, dev='svg'} +par(mar = c(4, 4, 1, .1)) +plot(cars, pch = 19, col = 'darkgray', las = 1) +abline(fit, lwd = 2) +``` + +--- + +# Tables + +If you want to generate a table, make sure it is in the HTML format (instead of Markdown or other formats), e.g., + +```{r} +knitr::kable(head(iris), format = 'html') +``` + +--- + +# HTML Widgets + +I have not thoroughly tested HTML widgets against **xaringan**. Some may work well, and some may not. It is a little tricky. + +Similarly, the Shiny mode (`runtime: shiny`) does not work. I might get these issues fixed in the future, but these are not of high priority to me. I never turn my presentation into a Shiny app. When I need to demonstrate more complicated examples, I just launch them separately. It is convenient to share slides with other people when they are plain HTML/JS applications. + +See the next page for two HTML widgets. + +--- + +```{r out.width='100%', fig.height=6, eval=require('leaflet')} +library(leaflet) +leaflet() %>% addTiles() %>% setView(-93.65, 42.0285, zoom = 17) +``` + +--- + +```{r eval=require('DT'), tidy=FALSE} +DT::datatable( + head(iris, 10), + fillContainer = FALSE, options = list(pageLength = 8) +) +``` + +--- + +# Some Tips + +- Do not forget to try the `yolo` option of `xaringan::moon_reader`. + + ```yaml + output: + xaringan::moon_reader: + yolo: true + ``` + +--- + +# Some Tips + +- Slides can be automatically played if you set the `autoplay` option under `nature`, e.g. go to the next slide every 30 seconds in a lightning talk: + + ```yaml + output: + xaringan::moon_reader: + nature: + autoplay: 30000 + ``` + +- If you want to restart the play after it reaches the last slide, you may set the sub-option `loop` to TRUE, e.g., + + ```yaml + output: + xaringan::moon_reader: + nature: + autoplay: + interval: 30000 + loop: true + ``` + +--- + +# Some Tips + +- A countdown timer can be added to every page of the slides using the `countdown` option under `nature`, e.g. if you want to spend one minute on every page when you give the talk, you can set: + + ```yaml + output: + xaringan::moon_reader: + nature: + countdown: 60000 + ``` + + Then you will see a timer counting down from `01:00`, to `00:59`, `00:58`, ... When the time is out, the timer will continue but the time turns red. + +--- + +# Some Tips + +- The title slide is created automatically by **xaringan**, but it is just another remark.js slide added before your other slides. + + The title slide is set to `class: center, middle, inverse, title-slide` by default. You can change the classes applied to the title slide with the `titleSlideClass` option of `nature` (`title-slide` is always applied). + + ```yaml + output: + xaringan::moon_reader: + nature: + titleSlideClass: [top, left, inverse] + ``` + +-- + +- If you'd like to create your own title slide, disable **xaringan**'s title slide with the `seal = FALSE` option of `moon_reader`. + + ```yaml + output: + xaringan::moon_reader: + seal: false + ``` + +--- + +# Some Tips + +- There are several ways to build incremental slides. See [this presentation](https://slides.yihui.org/xaringan/incremental.html) for examples. + +- The option `highlightLines: true` of `nature` will highlight code lines that start with `*`, or are wrapped in `{{ }}`, or have trailing comments `#<<`; + + ```yaml + output: + xaringan::moon_reader: + nature: + highlightLines: true + ``` + + See examples on the next page. + +--- + +# Some Tips + + +.pull-left[ +An example using a leading `*`: + + ```r + if (TRUE) { + ** message("Very important!") + } + ``` +Output: +```r +if (TRUE) { +* message("Very important!") +} +``` + +This is invalid R code, so it is a plain fenced code block that is not executed. +] + +.pull-right[ +An example using `{{}}`: + +```` +`r ''````{r tidy=FALSE} +if (TRUE) { +*{{ message("Very important!") }} +} +``` +```` +Output: +```{r tidy=FALSE} +if (TRUE) { +{{ message("Very important!") }} +} +``` + +It is valid R code so you can run it. Note that `{{}}` can wrap an R expression of multiple lines. +] + +--- + +# Some Tips + +An example of using the trailing comment `#<<` to highlight lines: + +````markdown +`r ''````{r tidy=FALSE} +library(ggplot2) +ggplot(mtcars) + + aes(mpg, disp) + + geom_point() + #<< + geom_smooth() #<< +``` +```` + +Output: + +```{r tidy=FALSE, eval=FALSE} +library(ggplot2) +ggplot(mtcars) + + aes(mpg, disp) + + geom_point() + #<< + geom_smooth() #<< +``` + +--- + +# Some Tips + +When you enable line-highlighting, you can also use the chunk option `highlight.output` to highlight specific lines of the text output from a code chunk. For example, `highlight.output = TRUE` means highlighting all lines, and `highlight.output = c(1, 3)` means highlighting the first and third line. + +````md +`r ''````{r, highlight.output=c(1, 3)} +head(iris) +``` +```` + +```{r, highlight.output=c(1, 3), echo=FALSE} +head(iris) +``` + +Question: what does `highlight.output = c(TRUE, FALSE)` mean? (Hint: think about R's recycling of vectors) + +--- + +# Some Tips + +- To make slides work offline, you need to download a copy of remark.js in advance, because **xaringan** uses the online version by default (see the help page `?xaringan::moon_reader`). + +- You can use `xaringan::summon_remark()` to download the latest or a specified version of remark.js. By default, it is downloaded to `libs/remark-latest.min.js`. + +- Then change the `chakra` option in YAML to point to this file, e.g. + + ```yaml + output: + xaringan::moon_reader: + chakra: libs/remark-latest.min.js + ``` + +- If you used Google fonts in slides (the default theme uses _Yanone Kaffeesatz_, _Droid Serif_, and _Source Code Pro_), they won't work offline unless you download or install them locally. The Heroku app [google-webfonts-helper](https://google-webfonts-helper.herokuapp.com/fonts) can help you download fonts and generate the necessary CSS. + +--- + +# Macros + +- remark.js [allows users to define custom macros](https://github.com/yihui/xaringan/issues/80) (JS functions) that can be applied to Markdown text using the syntax `![:macroName arg1, arg2, ...]` or `![:macroName arg1, arg2, ...](this)`. For example, before remark.js initializes the slides, you can define a macro named `scale`: + + ```js + remark.macros.scale = function (percentage) { + var url = this; + return ''; + }; + ``` + + Then the Markdown text + + ```markdown + ![:scale 50%](image.jpg) + ``` + + will be translated to + + ```html + + ``` + +--- + +# Macros (continued) + +- To insert macros in **xaringan** slides, you can use the option `beforeInit` under the option `nature`, e.g., + + ```yaml + output: + xaringan::moon_reader: + nature: + beforeInit: "macros.js" + ``` + + You save your remark.js macros in the file `macros.js`. + +- The `beforeInit` option can be used to insert arbitrary JS code before `remark.create()`. Inserting macros is just one of its possible applications. + +--- + +# CSS + +Among all options in `xaringan::moon_reader`, the most challenging but perhaps also the most rewarding one is `css`, because it allows you to customize the appearance of your slides using any CSS rules or hacks you know. + +You can see the default CSS file [here](https://github.com/yihui/xaringan/blob/master/inst/rmarkdown/templates/xaringan/resources/default.css). You can completely replace it with your own CSS files, or define new rules to override the default. See the help page `?xaringan::moon_reader` for more information. + +--- + +# CSS + +For example, suppose you want to change the font for code from the default "Source Code Pro" to "Ubuntu Mono". You can create a CSS file named, say, `ubuntu-mono.css`: + +```css +@import url(https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic); + +.remark-code, .remark-inline-code { font-family: 'Ubuntu Mono'; } +``` + +Then set the `css` option in the YAML metadata: + +```yaml +output: + xaringan::moon_reader: + css: ["default", "ubuntu-mono.css"] +``` + +Here I assume `ubuntu-mono.css` is under the same directory as your Rmd. + +See [yihui/xaringan#83](https://github.com/yihui/xaringan/issues/83) for an example of using the [Fira Code](https://github.com/tonsky/FiraCode) font, which supports ligatures in program code. + +--- + +# CSS (with Sass) + +**xaringan** also supports Sass support via **rmarkdown**. Suppose you want to use the same color for different elements, e.g., first heading and bold text. You can create a `.scss` file, say `mytheme.scss`, using the [sass](https://sass-lang.com/) syntax with variables: + +```scss +$mycolor: #ff0000; +.remark-slide-content > h1 { color: $mycolor; } +.remark-slide-content strong { color: $mycolor; } +``` + +Then set the `css` option in the YAML metadata using this file placed under the same directory as your Rmd: + +```yaml +output: + xaringan::moon_reader: + css: ["default", "mytheme.scss"] +``` + +This requires **rmarkdown** >= 2.8 and the [**sass**](https://rstudio.github.io/sass/) package. You can learn more about **rmarkdown** and **sass** support in [this blog post](https://blog.rstudio.com/2021/04/15/2021-spring-rmd-news/#sass-and-scss-support-for-html-based-output) and in [**sass** overview vignette](https://rstudio.github.io/sass/articles/sass.html). + +--- + +# Themes + +Don't want to learn CSS? Okay, you can use some user-contributed themes. A theme typically consists of two CSS files `foo.css` and `foo-fonts.css`, where `foo` is the theme name. Below are some existing themes: + +```{r, R.options=list(width = 70)} +names(xaringan:::list_css()) +``` + +--- + +# Themes + +To use a theme, you can specify the `css` option as an array of CSS filenames (without the `.css` extensions), e.g., + +```yaml +output: + xaringan::moon_reader: + css: [default, metropolis, metropolis-fonts] +``` + +If you want to contribute a theme to **xaringan**, please read [this blog post](https://yihui.org/en/2017/10/xaringan-themes). + +--- +class: inverse, middle, center +background-image: url(https://upload.wikimedia.org/wikipedia/commons/3/39/Naruto_Shiki_Fujin.svg) +background-size: contain + +# Naruto + +--- +background-image: url(https://upload.wikimedia.org/wikipedia/commons/b/be/Sharingan_triple.svg) +background-size: 100px +background-position: 90% 8% + +# Sharingan + +The R package name **xaringan** was derived1 from **Sharingan**, a dōjutsu in the Japanese anime _Naruto_ with two abilities: + +- the "Eye of Insight" + +- the "Eye of Hypnotism" + +I think a presentation is basically a way to communicate insights to the audience, and a great presentation may even "hypnotize" the audience.2,3 + +.footnote[ +[1] In Chinese, the pronounciation of _X_ is _Sh_ /ʃ/ (as in _shrimp_). Now you should have a better idea of how to pronounce my last name _Xie_. + +[2] By comparison, bad presentations only put the audience to sleep. + +[3] Personally I find that setting background images for slides is a killer feature of remark.js. It is an effective way to bring visual impact into your presentations. +] + +--- + +# Naruto terminology + +The **xaringan** package borrowed a few terms from Naruto, such as + +- [Sharingan](https://naruto.fandom.com/wiki/Sharingan) (写輪眼; the package name) + +- The [moon reader](https://naruto.fandom.com/wiki/Moon_Reader) (月読; an attractive R Markdown output format) + +- [Chakra](https://naruto.fandom.com/wiki/Chakra) (查克拉; the path to the remark.js library, which is the power to drive the presentation) + +- [Nature transformation](https://naruto.fandom.com/wiki/Nature_Transformation) (性質変化; transform the chakra by setting different options) + +- The [infinite moon reader](https://naruto.fandom.com/wiki/Infinite_Tsukuyomi) (無限月読; start a local web server to continuously serve your slides) + +- The [summoning technique](https://naruto.fandom.com/wiki/Summoning_Technique) (download remark.js from the web) + +You can click the links to know more about them if you want. The jutsu "Moon Reader" may seem a little evil, but that does not mean your slides are evil. + +--- + +class: center + +# Hand seals (印) + +Press `h` or `?` to see the possible ninjutsu you can use in remark.js. + +![](https://upload.wikimedia.org/wikipedia/commons/7/7e/Mudra-Naruto-KageBunshin.svg) + +--- + +class: center, middle + +# Thanks! + +Slides created via the R package [**xaringan**](https://github.com/yihui/xaringan). + +The chakra comes from [remark.js](https://remarkjs.com), [**knitr**](https://yihui.org/knitr/), and [R Markdown](https://rmarkdown.rstudio.com). diff --git a/presentations/test.html b/presentations/test.html new file mode 100644 index 0000000..6552ed9 --- /dev/null +++ b/presentations/test.html @@ -0,0 +1,920 @@ + + + + Presentation Ninja + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From add636d242e3b3d4e0f49600a58a6711d5282b7b Mon Sep 17 00:00:00 2001 From: Kien123291 Date: Thu, 29 Jan 2026 21:35:52 -0500 Subject: [PATCH 2/2] Mini_Project_Idea --- presentations/Mini_Project_Idea.docx | Bin 0 -> 18618 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 presentations/Mini_Project_Idea.docx diff --git a/presentations/Mini_Project_Idea.docx b/presentations/Mini_Project_Idea.docx new file mode 100644 index 0000000000000000000000000000000000000000..9c2eea03e60f15305d77e60931813885a4368e4b GIT binary patch literal 18618 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 G?*2cdV*Hx` literal 0 HcmV?d00001