文档 | 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.设定访问的urlxmlhttp.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 toastdocument.getElementById("filename").innerHTML=filename;//render md to htmlajax(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.mzph.cn/news/891760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SonarQube相关的maven配置及使用

一、maven 全局配置 <settings><pluginGroups><pluginGroup>org.sonarsource.scanner.maven</pluginGroup></pluginGroups><profiles><profile><id>sonar</id><activation><activeByDefault>true</acti…

Arduino Uno简介与使用方法

目录 一、Arduino Uno概述 1. 硬件特性 2. 开发环境 二、Arduino Uno的基本使用方法 1. 硬件连接 2. 软件编程 三、Arduino Uno编程基础 1. 基本语法 2. 常用函数 四、Arduino Uno应用举例 1. LED闪烁 2. 温度检测 3. 超声波测距 五、Arduino Uno的扩展与应用 1…

UniApp | 从入门到精通:开启全平台开发的大门

UniApp | 从入门到精通:开启全平台开发的大门 一、前言二、Uniapp 基础入门2.1 什么是 Uniapp2.2 开发环境搭建三、Uniapp 核心语法与组件3.1 模板语法3.2 组件使用四、页面路由与导航4.1 路由配置4.2 导航方法五、数据请求与处理5.1 发起请求5.2 数据缓存六、样式与布局6.1 样…

滑动窗口。

1456 定长子串中元音的最大数目 采用滑动窗口。每次移动一个位置&#xff0c;判断当前窗口内的子串内目标元素的个数&#xff0c;若比之前更大就更新结果。 如何判断是否更新结果&#xff1f;也即&#xff0c;如何判断当前窗口内所含目标元素个数&#xff0c;是否为遍历到这个…

公共数据授权运营系统建设手册(附下载)

在全球范围内&#xff0c;许多国家和地区已经开始探索公共数据授权运营的路径和模式。通过建立公共数据平台&#xff0c;推动数据的开放共享&#xff0c;促进数据的创新应用&#xff0c;不仅能够提高政府决策的科学性和公共服务的效率&#xff0c;还能够激发市场活力&#xff0…

电脑主机后置音频插孔无声?还得Realtek高清晰音频管理器调教

0 缘起 一台联想电脑&#xff0c;使用Windows 10 专业版32位&#xff0c;电脑主机后置音频插孔一直没有声音&#xff0c;所以音箱是接在机箱前面版的前置音频插孔上的。 一天不小心捱到了音箱的音频线&#xff0c;音频线头断在音频插孔里面了&#xff0c;前置音频插孔因此用不…

【微服务】1、引入;注册中心;OpenFeign

微服务技术学习引入 - 微服务自2016年起搜索指数持续增长&#xff0c;已成为企业开发大型项目的必备技术&#xff0c;中高级java工程师招聘多要求熟悉微服务相关技术。微服务架构介绍 概念&#xff1a;微服务是一种软件架构风格&#xff0c;以专注于单一职责的多个响应项目为基…

UDP_TCP

目录 1. 回顾端口号2. UDP协议2.1 理解报头2.2 UDP的特点2.3 UDP的缓冲区及注意事项 3. TCP协议3.1 报头3.2 流量控制2.3 数据发送模式3.4 捎带应答3.5 URG && 紧急指针3.6 PSH3.7 RES 1. 回顾端口号 在 TCP/IP 协议中&#xff0c;用 “源IP”&#xff0c; “源端口号”…

《Spring Framework实战》2:Spring快速入门

欢迎观看《Spring Framework实战》视频教程 Spring快速入门 目录 1. Java™开发套件&#xff08;JDK&#xff09; 2. 集成开发人员环境&#xff08;IDE&#xff09; 3. 安装Maven 4. Spring快速入门 4.1. 开始一个新的Spring Boot项目 4.2. 添加您的代码 4.3. 尝…

利用Deeplearning4j进行 图像识别

目录 图像识别简介 神经网络 感知器 前馈神经网络 自动编码器 受限玻尔兹曼机 深度卷积网络 理解图像内容以及图像含义方面&#xff0c;计算机遇到了很大困难。本章先介绍计算机理解图像教育方面 遇到的难题&#xff0c;接着重点讲解一个基于深度学习的解决方法。我们会…

PTA DS 基础实验3-2.1 一元多项式求导

基础实验3-2.1 一元多项式求导 分数 20 全屏浏览 切换布局 作者 DS课程组 单位 浙江大学 设计函数求一元多项式的导数。 输入格式: 以指数递降方式输入多项式非零项系数和指数&#xff08;绝对值均为不超过1000的整数&#xff09;。数字间以空格分隔。 注意&#xff1a…

vue elementUI Plus实现拖拽流程图,不引入插件,纯手写实现。

vue elementUI Plus实现拖拽流程图&#xff0c;不引入插件&#xff0c;纯手写实现。 1.设计思路&#xff1a;2.设计细节3.详细代码实现 1.设计思路&#xff1a; 左侧button列表是要拖拽的组件。中间是拖拽后的流程图。右侧是拖拽后的数据列表。 我们拖动左侧组件放入中间的流…

DC系列之DC-8渗透测试

DC-8 靶机渗透测试实战 靶机下载地址&#xff1a; https://download.vulnhub.com/dc/DC-8.zip&#xff08;下载速度慢可以用迅雷下载&#xff09; 一、实验环境 实验环境&#xff1a; kali2024&#xff1a;192.168.234.145&#xff08;nat模式&#xff09; 靶机环境DC-7&#…

matlab中高精度计算函数vpa与非厄米矩阵本征值的求解

clear;clc;close all tic %并行设置% delete(gcp(nocreate));%关闭之前的并行 cparcluster(local); c.NumWorkers50;%手动设置线程数(否则默认最大线程为12) parpool(c, c.NumWorkers); %并行设置%w1; u2.5;N30;valstozeros(2*N2,100); v10linspace(-3,3,100).;parfor jj1:leng…

GraphRAG vs 传统 RAG:如何通过知识图谱提升 AI 检索能力

相比传统 RAG 仅能独立检索文本片段的局限性&#xff0c;GraphRAG通过构建实体关系图谱实现了信息间的连接&#xff0c;让 AI 能更完整地理解和检索复杂的关联信息&#xff0c;从而生成更准确和连贯的回答 问题背景: 想象有一本详细记录某人(X)成就的传记,每个章节都描述了他的…

Pentaho Kettle迁移至Oracle的空字符串和NULL的问题处理,大坑!

一、问题说明 在使用 Kettle 将 DB2 数据迁移到 Oracle 的过程中&#xff0c;出现了 DB2 中为空字符串的字段&#xff0c;在插入到 Oracle 过程中实际插入的为 NULL &#xff0c;导致触发了非空校验而迁移失败 空字符串 ‘’ &#xff0c;即长度为0的字符串 搜索该问题后得知…

2025-01-04 Unity插件 YodaSheet1 —— 插件介绍

文章目录 1 介绍2 工作原理2.1 ScriptableObject -> YadeSheetData2.2 YadeDatabase 存储多个 YadeSheetData 3 用途4 缺点5 推荐 1 介绍 ​ Yade 提供类似于 Excel 或者 Google Sheets 的表格编辑器&#xff0c;可以轻松地在 Unity 编辑器中 编辑&#xff0c;搜索&#xf…

VScode 格式化代码空格记录

点击 -> “文件” -> “首选项" -> “设置” -> 按下图操作&#xff1a; 怎么格式化代码空格&#xff0c;先看下&#xff1a; 保存代码后&#xff0c;这代码自动格式化发&#xff0c;如下图&#xff1a; 你可以试试看就即可

苹果系统MacOS下ObjectC建立的App程序访问opencv加载图片程序

前言 苹果系统下使用opencv感觉还是有些不太方便&#xff0c;总是感觉有点受到限制。本博客描述的是在MacOS下建立App程序然后调用opencv显示图片时出现的一些问题并最后解决的一个过程。 一、程序的建立 选择程序的类型&#xff1a; 选择界面模式和编程语言&#xff1a; 其余…

CSS3——3. 书写格式二

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><!--css书写&#xff1a;--><!--1. 属性名:属性值--><!--2.属性值是对属性的相关描述--><!--3.属性名必须是…