class: center, middle, inverse, title-slide # mindr:R 语言制作思维导图 ### 赵鹏 ###
西交利物浦大学健康与环境科学系
中国 苏州 --- class: animated, fadeIn # 自我介绍 .pull-left[ - 主页:[pzhao.org](https://pzhao.org) - 单位:[西交利物浦大学,健康与环境科学系](https://www.xjtlu.edu.cn/en/study/departments/academic-departments/health-and-environmental-sciences/) - 专业:环境科学,大气科学([招收博士生](https://pzhao.org/en/post/phd1/)) - 两本书 - 几个 R 包 .small[ | 包 | 功能 | 下载量 | | ------------ | -------------------------------------------- | ------------------------------------------------------------ | | beginr | 帮助 R 语言初学者的函数集 |  | | bookdownplus | 为 bookdown 提供的 `\(\LaTeX\)` 模板集 |  | | .red[mindr] | 制作思维导图 |  | | pinyin | 将中文字符转换成拼音、五笔字型码、四角号码 |  | | rmd | 收集、安装和加载 R markdown 系列扩展包 |  | ] ] .pull-right[ <img src="img/book-xuer.jpg" width="50%" /><img src="img/book-msg.jpg" width="50%" /> - 赵鹏,李怡(2018)。[学 R:零基础学习 R 语言](https://xuer.pzhao.org/)。 - 赵鹏,谢益辉,黄湘云(2021)。[现代统计图形](https://msg2020.pzhao.org/)。 ] --- class: animated, fadeIn # 纲要 <iframe src="img/mindr-talk-outline.html" width="100%" height = 400 frameborder="no"></iframe> ```r from <- readLines('mindr.Rmd', encoding = 'UTF-8') mindr::markmap(from) ``` --- background-image: url(img/stories.jpg) class: inverse, center, middle, animated, slideInRight # 故事篇 --- background-image: url(img/mindmap-xi.jpg) background-size: contain class: animated, zoomIn --- class: animated, fadeIn ## 源流 <img src="img/mindmapbook.jpg" style="float: left; width: 18%; margin-right: 1%;"> <img src="img/note-taking.jpg" style="float: left; width: 20%; margin-right: 1%;"> <img src="img/buzan.jpg" style="float: left; width: 55%;"> <p style="clear: both;"> <br><br> <img src="img/mindmap-organic.png" style="float: left; width: 23%; margin-right: 2%;"> <img src="img/mindmap-speed.png" style="float: left; width: 23%; margin-right: 2%;"> <img src="img/mindmap-freemind.png" style="float: left; width: 23%; margin-right: 2%;"> <img src="img/mindmap-xmind.png" style="float: left; width: 23%; margin-right: 2%;"> <p style="clear: both;"> ??? 思维导图(或者是相似概念)被教育学家、工程师、心理学家和其他学家使用在学习、头脑风暴、记忆、视觉记忆和解决问题已经有几世纪。而在上世纪这位有名的思想家托尼·博赞宣称发明思维导图模型。他说他的想法来自阿尔佛雷德·科齐布司基的普通语义学。他发展一些早期思维导图的例子,并且生动地将亚里士多德的概念显现出来。哲学家拉曼·鲁尔(Ramon Llull)也同样使用这些思维导图。 思维导图延伸向许多不同形式发展,同时也在包括学习、头脑风暴、教育、文档规划在创意、记录笔记和工程图表等场合中广为应用。思维导图软件工具很多种,例如:Mindjet公司的Mindjet是专业的思维导图工具,XMind.net公司的XMind有跨平台开源码版和商业专业版及分享网站提供、及微软的Visio 2002及以上版本提供了部分绘制思维导图的功能。 --- class: animated, fadeIn .pull-left[ ## 一本书 [](img/mindmap-xuer.png) 书稿大纲(<https://xuer.pzhao.org/>) ] -- .pull-right[  bookdown 项目 ] --- class: animated, fadeIn ## 一个包 .pull-left[  mindr 包源代码:<https://github.com/pzhaonet/mindr> ] -- .pull-right[  ```r install.packages(mindr) # 稳定版, v1.3 remotes::install_github('pzhaonet/mindr') # 开发版 ``` ] --- background-image: url(img/mindr-env221.png) background-size: 800px class: animated, fadeIn ## 一次考试 .footnote[[课程介绍](http://modules.xjtlu.edu.cn/MOD_CAT.aspx?mod_code=ENV221)] --- background-image: url(img/mindmap-msg.png) background-size: cover class: animated, fadeIn ## 一个网页 .footnote[《现代统计图形》目录:<https://msg2020.pzhao.org/new/> ] --- background-image: url(img/castle.jpg) class: inverse, center, middle, animated, slideInRight # 功能篇 --- class: animated, fadeIn ## (R) Markdown & 思维导图 .pull-left[ ```r from <- c("# Chapter 1", "## Section 1.1", "- Item 1", "- Item 2", "# Chapter 2") output <- md2mm(from) # output <- mm(from, output_type = 'mindmap') output ``` ``` ## [1] "<map version=\"1.0.1\">" ## [2] "<node TEXT=\"mindr\">" ## [3] "<node TEXT=\"Chapter 1\">" ## [4] "<node TEXT=\"Section 1.1\"></node></node>" ## [5] "" ## [6] "</node></map>" ``` ```r writeLines(output, 'output.mm') ``` ] .pull-right[ ```r md2mm(from, root, md_list, md_braces, md_bookdown, md_eq, md_maxlevel) ``` - 超级链接 - `root`:中心文本 - `md_list`:是否包含列表 - `md_braces`:是否包含标题后的 `{#ID}` - `md_bookdown`:是否按照 **bookdown** 项目 - `# (PART)` - `# (APPENDIX)` - `md_eq`:是否包含公式 - `md_maxlevel`:设置最大标题级别 反函数: ```r mm2md(from) ``` ] .center[ `\(\text{.Rmd}\rightleftharpoons\text{.mm}\)`: `md2mm()` 与 `mm2md()` ] --- class: animated, fadeIn .pull-left[ **插入 `\(\LaTeX\)` 公式** ```markdown # One-sample $$t =\frac{\bar x - \mu}{s / \sqrt{n}}$$ # Two-sample ## With equal variances $$t = \frac{(\bar x_1 - \bar x_2) - (\mu_1 - \mu_2)}{\sqrt{\frac{(n-1)s_1^2 + (m - 1)s_2^2}{(n - 1) + (m -1)} (\frac{1}{n} + \frac{1}{m})}}$$ ## With unequal varicances $$t = \frac{\bar x_d - \mu_d}{\sqrt{\frac{s_1^2}{n} + \frac{s_2^2}{m}}}$$ ``` ] .pull-right[ .center[[Docear](https://docear.org/)]  ] .center[[markmap](https://markmap.js.org/)] <iframe src="img/eq.html" width="100%" frameborder="no"></iframe> --- class: animated, fadeIn .pull-left[ ## R 脚本 & 思维导图  详见:`knitr::spin()` ] .pull-right[ ```r #= # Introduction ---- #' This file was adapted from < https://github.com/yihui/knitr/blob/master/inst/examples/knitr-spin.R>. #' This is a special R script which can be used to generate a report. You can #' write normal text in roxygen comments. #' #= # Quick Start ---- #= ## Options ---- #' First we set up some options (you do not have to do this): #+ setup, include=FALSE library(knitr) opts_chunk$set(fig.path = 'figure/silk-') #= ## A Simple Example ---- #' The report begins here. #+ test-a, cache=FALSE # boring examples as usual set.seed(123) x = rnorm(5) mean(x) ``` ] .center[ `\(\text{.R}\rightleftharpoons\text{.mm}\)`: `r2mm()` 与 `mm2r()` ] --- class: animated, fadeIn .pull-left[ ```r input <- system.file("examples/mindr-r.R", package = "mindr") input_txt <- readLines(input) output_txt <- r2mm(input_txt) # output_txt <- mm(input_txt, output_type = 'mindmap') writeLines(output_txt, 'mindr-r.mm') ``` <img src="img/rstudio-r.png" width="80%" /> ] .pull-right[  `\(\text{.R}\rightleftharpoons\text{.mm}\)`: `r2mm()` 与 `mm2r()` ] --- class: animated, fadeIn .pull-left[ ## 文件目录 & 思维导图 ```r output_txt <- dir2mm(R.home(), dir_files = FALSE, dir_excluded = 'library', md_maxlevel = 3) writeLines(output_txt, 'dir2mm.mm') ``` `\(\text{dir}\rightleftharpoons\text{.mm}\)`: `dir2mm()` 与 `mm2dir()` ] .pull-right[  ] --- background-image: url(img/mindr-universe0.png) background-size: 800px background-position: 50% 50% class: animated, rotateIn ## mindr 宇宙 --- background-image: url(img/mindr-universe1.png) background-size: 800px background-position: 50% 50% class: animated, fadeIn ## 开放宇宙 .pull-left[ [pandoc](https://pandoc.org/) <img src="img/pandoc-diagram.jpg" width="16%" style="display: block; margin: auto auto auto 0;" /> ] --- background-image: url(img/film-bean-grow.jpg) background-size: cover class: inverse, center, middle, animated, slideInRight # 开发篇 --- class: animated, fadeIn .pull-left[ ## 四海普适的格式  [](img/freemind.demo.png) ] -- .pull-right[ [](img/freemind.code.png) ] --- class: animated, fadeIn ## 有如神助的包 .center[`knitr::spin()` & `knitr::purl()`] .center[ `$$\text{.Rmd}\rightleftharpoons\text{.R}$$` ] | .Rmd | .R | | :------------------------------- | :------------------------------------ | | 1. 正文文字 | "`#'`" 开头的注释行 | | 2. 代码块的选项 chunk options | "`#+`" 开头的注释行 | | .red[3.] 章节标题 | "`#=`" 开头、"`----`"结尾的章节标签 | .center[`mindr::r2md()` & `mindr::md2r()`] .pull-left[ ````markdown ## A Simple Example The report begins here. ```{r test-a, cache=FALSE} # boring examples as usual set.seed(123) x = rnorm(5) mean(x) ``` ```` ] .pull-right[ ```r #= ## A Simple Example ---- #' The report begins here. #+ test-a, cache=FALSE # boring examples as usual set.seed(123) x = rnorm(5) mean(x) ``` ] --- class: animated, fadeIn .pull-left[ ## 锦上添花的库 .center[`mindr::markmap()`] .center[$$\uparrow$$] .center[Chenliang Wang: R 包 [Rmarkmap](https://github.com/seifer08ms/Rmarkmap)] .center[$$\uparrow$$] .center[Jakub Dundalek: Javascript 库:[markmap](https://github.com/dundalek/markmap)] ] .pull-right[ <iframe src="https://msg2020.pzhao.org/html-widget/markmap-msg2020.html" width="100%" height = 600 frameborder="no"></iframe> ] --- class: animated, fadeIn # 总结展望 .pull-left[ - 总结 - (R) Markdown 文本、R 代码、目录结构等层级形信息与思维导图的转换 - 学习、头脑风暴、教育、文档规划等领域的应用 - 展望 - FreeMind 思维导图对更多元素(如图片、文本格式)的支持 - widget 对 `\(\LaTeX\)` 公式的支持 - 与 pandoc 的接口,融入 `mm()` 函数,一键实现各种文档与思维导图的相互转换 - 诚邀合作 ] .pull-right[  ] --- background-image: url(img/end.jpg) class: inverse, center, middle, animated, zoomIn # 谢谢