当前位置: 首页 > article >正文

文档 | Rstudio下的轻量级单页面markdown阅读器 markdownReader

需求:在写R数据分析项目的时候,代码及结果的关键变化怎么记录下来?最好git能很容易的跟踪版本变化。

  • markdown 是最理想的选择,本文给出一种Rstuidio下的轻量级md阅读器实现:markdownReader。
  • 书写md还是在Rstudio。
  • 更新内容后保存,回到网页刷新即可看到最新效果,无需编译。
  • 优点免费,阅读效果好,方便多文档阅读,防止复制误删除。

前置知识:掌握 markdown 的语法格式。常见的有6大类,如 标题#,列表-,代码```,链接[]圆括号,图片,注释>。

1. 目录结构

output/ 输出内容
script/  代码文件及文档,git记录整个内容
|- a0_xx.R 我的R代码
|- a1_yy.R 我的另一个R代码

|- docs/ 文档文件夹
|- |- index.html  作为markdown阅读器
|- |- help.md 入口文档,打开index.html 默认读取help.md文档
|- |- CD45.md 自定义文档示例

|- |- adv/ 二级目录
|- |- |- xx.md 二级目录下的md文档

在这里插入图片描述

2. md阅读器 index.html 的代码实现

  • 警告:这是重点和难点。如果看不懂html/css/js,尽量不要做任何修改。

  • 注意:需要联网载入js和css文件才能正常预览效果。

$ cat index.html
<meta charset="utf-8"/>
<title>MarkdownReader.js</title>

<!--
<script src="/StackNote/static/js/lib/marked-2.0.3.js"></script>
<link rel="stylesheet" type="text/css" href="/StackNote/static/css/MarkDown.css" media="all">
v0.1 only js markdown reader;
-->
<script src="https://note.biomooc.com/static/js/lib/marked-2.0.3.js"></script>
<link rel="stylesheet" type="text/css" href="https://note.biomooc.com/static/css/MarkDown.css" media="all">
<style>
body{margin:0; padding:0;}
.wrapper{
	width:800px;
	margin:0 auto;
}
.header{ padding:5px; color: #aaa; font-size:small; border-bottom:1px dashed #aaa; }
.footer{margin-top:80px; border-top:1px solid black; padding:10px; color: #999;}

.markdown a{
    color: #0969da;
    text-decoration: none;
}

.markdown a:hover{ text-decoration: underline; }
.markdown p{ display: block; }
</style>


<div class="header wrapper">
	filename: <span id="filename"></span>
</div>

<div class="markdown">
	<div id="content" class="wrapper"></div>
</div>

<div class="footer wrapper">
	Powered by <a target="_blank" href="https://github.com/markedjs/marked">markedJS</a> | 
	Fork me on <a target="_blank" href="https://github.com/DawnEve/bioToolKit/tree/dev/JavaScript/markdownReader">Github</a> | 
</div>







<script>
// Tools
//get parameters from URL
function getUrlParam(name) {
	var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
	var r = window.location.search.substr(1).match(reg);  //匹配目标参数
	if (r != null) return unescape(r[2]); return null; //返回参数值
}

//ajax get file contents;
function ajax(fileName, obj){
	var xmlhttp=new XMLHttpRequest(); //1.获取对象
	//2.绑定回调函数
	xmlhttp.onreadystatechange=function(){
		if (xmlhttp.readyState==4 && xmlhttp.status==200){
			//wjl=marked.parse(xmlhttp.responseText);
			obj.innerHTML= marked(xmlhttp.responseText);
		}
	}
	//3.设定访问的url
	xmlhttp.open("GET", fileName, true);
	//4.发送请求
	xmlhttp.send();
}



// Action after window OK;
window.onload=function(){
	// get parameter from URL;
	var filename=getUrlParam("file");
	filename = filename || "./help.md";
	// update toast
	document.getElementById("filename").innerHTML=filename;
	//render md to html
	ajax(filename, document.getElementById('content'))
}
//document.getElementById('content').innerHTML = marked.parse('# Marked in the browser\n\nRendered by **marked**.');
</script>

3. 自定义文档:md格式

(1) 默认载入的help.md文件

打开index.html 默认载入的help.md文件,该md文件由用户提供。

就是很常规的md格式,比如,随便写3行内容:

$ cat help.md
# Milestone
[CD45](?file=CD45.md)

## cell cluster (117204=117k cells)
  • 在Rstudio 的Files 面板单击 script/docs/index.html,选择 View in web browser。
    在这里插入图片描述

  • 自动载入同目录下的 help.md 文件,效果如下图:
    在这里插入图片描述
    其中:

    • 1 为Rstudio 预览html的地址栏url
    • 2 为实际上载入的md文件路径,相对于index.html文件;
    • 3 这是一个标准的md a链接,写法是 [CD45](?file=CD45.md),指向同目录下的 CD45.md文件。

(2) 载入更多其他md文件

注:可通过在help.md中写a链接,通过参数file引入更多其它md文件,比如 ?file=XX.md

$ cat CD45.md
# this is CD45 file

- T
- B
- mono

点击以上index.html页面中的 CD45 链接,可预览CD45.md文件,其内容如上文,页面效果如下:
在这里插入图片描述

  • 1 是url,可见完整格式就是 index.html?file=CD45.md,可以自己直接组装URL来显示二级目录下的md。
  • 2 显示实际上载入的文件路径。

(3) 载入二级目录中的md文件

在文档目录 docs/ 下可新建二级目录 adv/,再在其中新建md文件 xx.md,内容如下图。
可以直接在浏览器的地址栏手工输入url,末尾是 index.html?file=adv/xx.md,渲染效果如下:
在这里插入图片描述
类似的,可支持更多层级的文档目录结构。

4. markdown 语法简介(.md结尾)

略,网上很多。

(1) md中的 代码

首尾行写三个反引号,就是键盘顶部一排数字键数字1的左边那个键`。
如输入左侧的2行R代码,渲染出右侧的灰背景红字代码效果。

注:这是md,不是Rmd。本文仅仅是文档显示,不能执行。

在这里插入图片描述


End


http://www.kler.cn/a/467614.html

相关文章:

  • 极限学习机 (Extreme Learning Machine, ELM) 算法详解与PyTorch实现
  • Linux中rsync命令使用
  • 【Elasticsearch】文档操作:添加、更新和删除
  • unity学习11:地图相关的一些基础
  • 算法:两个升序单链表的合并
  • 现代前端框架
  • 【Nginx】Nginx代理模式相关概念解释及Nginx安装
  • 【Linux系列】Vim 编辑器中的高效文本编辑技巧:删除操作
  • (leetcode算法题)382. 链表随机节点
  • LightGBM算法详解与PyTorch实现
  • vite-plugin-imagemin安装问题
  • 第五届电网系统与绿色能源国际学术会议(PGSGE 2025)
  • python学opencv|读取图像(二十五)使用cv2.putText()绘制文字进阶-垂直镜像文字
  • Kbuild学习知识点
  • Framebuffer 驱动
  • 网络安全学习路线
  • Springboot 升级带来的Swagger异常
  • PINN方程残差以及损失函数的理解
  • 探索电商新维度:利用JAVA爬虫获取1688店铺商品接口
  • MySQL 日志简介
  • 信息收集在网络安全中的重要性在网络安全领域,渗透测试
  • HTTP协议-报文结构
  • Java 内存溢出(OOM)问题的排查与解决
  • 《攀爬者》
  • 探讨面向未来的框架新技术:逻辑驱动和自适应框架的突破
  • k8s集群,CRI-Docker部署条件及方法