Commit d1b368e4 authored by 稻米鼠's avatar 稻米鼠
Browse files

Merge pull request #7 from whzecomjm/master

增加页内索引;增加latex加载;增加表格样式;修改文档错误。by whzecomjm
parents 3bb9133f 70e78c1e
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -31,7 +31,8 @@ Mac 系统我不了解,求赞助一个供我研究……
* 首页文档 ………… OK
* 内页链接 ………… OK
* 代码复制 ………… OK
* 页内索引 ………… 还在犹豫它的必要性
* 页内索引 ………… **Beta**
* 数学公式 ………… OK
* 变量设置
* 内链优化

@@ -39,7 +40,7 @@ Mac 系统我不了解,求赞助一个供我研究……

1. 如果你使用的是 Firefox 浏览器,那么可以把文件放在网盘,在本地使用,十分方便;
2. 如果你使用的是 Chrome 浏览器,你需要准备一个 Http 服务器,请不要找那些大型套件,一个很小很小的 Http 服务器即可,把文件放在网站根目录,在本地使用一样爽歪;
3. 如果你有需要,也可以以上传到网站进行展示,这不需要做任何修改,但是由于是异步读取文件内容,境外主机请慎选,否则可能也面颊在时间过长;
3. 如果你有需要,也可以以上传到网站进行展示,这不需要做任何修改,但是由于是异步读取文件内容,境外主机请慎选,否则可能页面加载时间过长;
4. 文件存放在 data 目录下,后缀为 md,因为本系统支持的是 Markdown 语法([Markdown教程](http://wowubuntu.com/markdown/));
5. data 目录下支持子目录;
6. 命名空间深度无限,区分大小写,详细规则如下:
@@ -52,6 +53,7 @@ Mac 系统我不了解,求赞助一个供我研究……

7. 内部链接只需要链接到页面命名,比如:```[链接到一个页面](linux:vim)```
8. imgs 文件夹可用来储存文章图片,目录结构自行安排;
9. 打开 latex.html 文件可以浏览相应加载 MathJax 的 md 文档;

## 文件结构: ##

@@ -60,14 +62,15 @@ Mac 系统我不了解,求赞助一个供我研究……
		* 	|- css			全部样式文件,包括 Bootscrap、Hightlight、自定义
		* 	|- fonts		全部字体文件,目前主要是 Bootscrap
		* 	|- js			全部脚本文件,包括 Bootscrap、Hightlight、自定义
	* 	|- files			全部引用文件
	* 	|- imgs				全部文章图片
	* 	|- data				全部文章源码
		*	|- index.md		默认显示文档,建议用作索引
	* 	|- index.html		唯一的页面文件,负责解读一切内容
	* 	|- latex.html		新增的页面文件,用于解读带LaTeX公式的内容


## 技术支持: ##

* [marked](https://github.com/chjj/marked) by [chjj](https://github.com/chjj) 这是一个很不错的 Markdown 转化 Html 的工具,JavaScript 书写, Node.js 和本地都可以使用.
* [highlight.js](https://github.com/isagalaev/highlight.js) by [isagalaev](https://github.com/isagalaev) 一个真心好用的代码高亮工具,支持 118 种代码高亮。爽得一塌糊涂,记得去他的管网下载,我就是傻乎乎的在 Github 下载的,然后被坑的好爽……
* [toc](https://github.com/jgallen23/toc) by [jgallen23](https://github.com/jgallen23) 这是一个业内索引 jQuery 插件. 不幸的是,此插件存在点击目录定位不准的问题。
+66 −1
Original line number Diff line number Diff line
/*为什么在写之前还有一点小激动呢?*/
*{
	font-family: Arial, 'Microsoft YaHei';
	font-size: 16px;
@@ -116,3 +115,69 @@ body>#main #content blockquote {
body>#main #content blockquote>blockquote {
	background: #FFF;
}

table{
	font-family:verdana,arial,sans-serif;
	color:#333;border-width:1px;
	border-color:#666;
	border-collapse:collapse;
	font-size:14px
}
table th{
	border-width:1px;
	padding:8px;
	border-style:solid;
	border-color:#666;
	font-weight:bold;
	background-color:#d1d1d1
}
table td{
	border-width:1px;
	padding:8px;
	border-style:solid;
	border-color:#666
}
table tr:nth-child(even){
	background-color: #f2f2f2;
}
table tr:nth-child(odd){
	background-color: #fff;
}

#toc {
    top: 0px;
    left: 0px;
    height: 100%;
    position: fixed;
    background: #333;
    box-shadow: inset -5px 0 5px 0px #222;
    width: 220px;
    padding-top: 20px;
    color: #fff;
}

#toc ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

#toc li {
    padding: 5px 10px;
}
#toc a {
    color: #fff;
    text-decoration: none;
    display: block;
}
#toc .toc-h2 {
    padding-left: 15px;
}
#toc .toc-h3 {
    font-size: 80%;
    padding-left: 23px;
}
#toc .toc-active {
    background: #336699;
    box-shadow: inset -5px 0px 10px -5px #000;
}
 No newline at end of file

files/js/toc.min.js

0 → 100644
+9 −0
Original line number Diff line number Diff line
/*!
 * toc - jQuery Table of Contents Plugin
 * v0.3.2
 * http://projects.jga.me/toc/
 * copyright Greg Allen 2014
 * MIT License
*/
!function(a){a.fn.smoothScroller=function(b){b=a.extend({},a.fn.smoothScroller.defaults,b);var c=a(this);return a(b.scrollEl).animate({scrollTop:c.offset().top-a(b.scrollEl).offset().top-b.offset},b.speed,b.ease,function(){var a=c.attr("id");a.length&&(history.pushState?history.pushState(null,null,"#"+a):document.location.hash=a),c.trigger("smoothScrollerComplete")}),this},a.fn.smoothScroller.defaults={speed:400,ease:"swing",scrollEl:"body,html",offset:0},a("body").on("click","[data-smoothscroller]",function(b){b.preventDefault();var c=a(this).attr("href");0===c.indexOf("#")&&a(c).smoothScroller()})}(jQuery),function(a){var b={};a.fn.toc=function(b){var c,d=this,e=a.extend({},jQuery.fn.toc.defaults,b),f=a(e.container),g=a(e.selectors,f),h=[],i=e.activeClass,j=function(b,c){if(e.smoothScrolling&&"function"==typeof e.smoothScrolling){b.preventDefault();var f=a(b.target).attr("href");e.smoothScrolling(f,e,c)}a("li",d).removeClass(i),a(b.target).parent().addClass(i)},k=function(){c&&clearTimeout(c),c=setTimeout(function(){for(var b,c=a(window).scrollTop(),f=Number.MAX_VALUE,g=0,j=0,k=h.length;k>j;j++){var l=Math.abs(h[j]-c);f>l&&(g=j,f=l)}a("li",d).removeClass(i),b=a("li:eq("+g+")",d).addClass(i),e.onHighlight(b)},50)};return e.highlightOnScroll&&(a(window).bind("scroll",k),k()),this.each(function(){var b=a(this),c=a(e.listType);g.each(function(d,f){var g=a(f);h.push(g.offset().top-e.highlightOffset);var i=e.anchorName(d,f,e.prefix);if(f.id!==i){a("<span/>").attr("id",i).insertBefore(g)}var l=a("<a/>").text(e.headerText(d,f,g)).attr("href","#"+i).bind("click",function(c){a(window).unbind("scroll",k),j(c,function(){a(window).bind("scroll",k)}),b.trigger("selected",a(this).attr("href"))}),m=a("<li/>").addClass(e.itemClass(d,f,g,e.prefix)).append(l);c.append(m)}),b.html(c)})},jQuery.fn.toc.defaults={container:"body",listType:"<ul/>",selectors:"h1,h2,h3",smoothScrolling:function(b,c,d){a(b).smoothScroller({offset:c.scrollToOffset}).on("smoothScrollerComplete",function(){d()})},scrollToOffset:0,prefix:"toc",activeClass:"toc-active",onHighlight:function(){},highlightOnScroll:!0,highlightOffset:100,anchorName:function(c,d,e){if(d.id.length)return d.id;var f=a(d).text().replace(/[^a-z0-9]/gi," ").replace(/\s+/g,"-").toLowerCase();if(b[f]){for(var g=2;b[f+g];)g++;f=f+"-"+g}return b[f]=!0,e+"-"+f},headerText:function(a,b,c){return c.text()},itemClass:function(a,b,c,d){return d+"-"+c[0].tagName.toLowerCase()}}}(jQuery);
!function(a){a.fn.smoothScroller=function(b){b=a.extend({},a.fn.smoothScroller.defaults,b);var c=a(this);return a(b.scrollEl).animate({scrollTop:c.offset().top-a(b.scrollEl).offset().top-b.offset},b.speed,b.ease,function(){var a=c.attr("id");a.length&&(history.pushState?history.pushState(null,null,"#"+a):document.location.hash=a),c.trigger("smoothScrollerComplete")}),this},a.fn.smoothScroller.defaults={speed:400,ease:"swing",scrollEl:"body,html",offset:0},a("body").on("click","[data-smoothscroller]",function(b){b.preventDefault();var c=a(this).attr("href");0===c.indexOf("#")&&a(c).smoothScroller()})}(jQuery),function(a){var b={};a.fn.toc=function(b){var c,d=this,e=a.extend({},jQuery.fn.toc.defaults,b),f=a(e.container),g=a(e.selectors,f),h=[],i=e.activeClass,j=function(b,c){if(e.smoothScrolling&&"function"==typeof e.smoothScrolling){b.preventDefault();var f=a(b.target).attr("href");e.smoothScrolling(f,e,c)}a("li",d).removeClass(i),a(b.target).parent().addClass(i)},k=function(){c&&clearTimeout(c),c=setTimeout(function(){for(var b,c=a(window).scrollTop(),f=Number.MAX_VALUE,g=0,j=0,k=h.length;k>j;j++){var l=Math.abs(h[j]-c);f>l&&(g=j,f=l)}a("li",d).removeClass(i),b=a("li:eq("+g+")",d).addClass(i),e.onHighlight(b)},50)};return e.highlightOnScroll&&(a(window).bind("scroll",k),k()),this.each(function(){var b=a(this),c=a(e.listType);g.each(function(d,f){var g=a(f);h.push(g.offset().top-e.highlightOffset);var i=e.anchorName(d,f,e.prefix);if(f.id!==i){a("<span/>").attr("id",i).insertBefore(g)}var l=a("<a/>").text(e.headerText(d,f,g)).attr("href","#"+i).bind("click",function(c){a(window).unbind("scroll",k),j(c,function(){a(window).bind("scroll",k)}),b.trigger("selected",a(this).attr("href"))}),m=a("<li/>").addClass(e.itemClass(d,f,g,e.prefix)).append(l);c.append(m)}),b.html(c)})},jQuery.fn.toc.defaults={container:"body",listType:"<ul/>",selectors:"h1,h2,h3",smoothScrolling:function(b,c,d){a(b).smoothScroller({offset:c.scrollToOffset}).on("smoothScrollerComplete",function(){d()})},scrollToOffset:0,prefix:"toc",activeClass:"toc-active",onHighlight:function(){},highlightOnScroll:!0,highlightOffset:100,anchorName:function(c,d,e){if(d.id.length)return d.id;var f=a(d).text().replace(/[^a-z0-9]/gi," ").replace(/\s+/g,"-").toLowerCase();if(b[f]){for(var g=2;b[f+g];)g++;f=f+"-"+g}return b[f]=!0,e+"-"+f},headerText:function(a,b,c){return c.text()},itemClass:function(a,b,c,d){return d+"-"+c[0].tagName.toLowerCase()}}}(jQuery);
 No newline at end of file
+3 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@
		<link href="files/css/main.css" rel="stylesheet">
		<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
		<script src="files/js/jquery.min.js"></script>
		<script src="files/js/toc.min.js"></script>
		<script src="files/js/marked.js"></script>
		<script src="files/js/highlight.js"></script>
		<script>
@@ -95,6 +96,7 @@
						$("#content").html(function(){
							return marked(markdownString,{ renderer: renderer });
						});
						$('#toc').toc();
						// 代码高亮加行号
						$('pre code').each(function(){
							var thecode = $(this).html().split('\n');
@@ -131,6 +133,7 @@
		<div id="main" class="container">
			<div class="row">
				<div class="col-md-8 col-md-offset-2">
				    <div id="toc"></div>
					<div id="content">
						Loading……
					</div>

latex.html

0 → 100644
+164 −0
Original line number Diff line number Diff line
<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>Whzecomjm's Wiki</title>

		<!-- Bootstrap -->
		<link href="files/css/bootstrap.min.css" rel="stylesheet">
		<link href="files/css/rainbow.css" rel="stylesheet">
		<link href="files/css/main.css" rel="stylesheet">
		<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
		<script src="files/js/jquery.min.js"></script>
		<script src="files/js/marked.js"></script>
		<script src="files/js/highlight.js"></script>
		<script>
			// 获取 get 参数的函数
			function QueryGET(TheName){      
				var urlt = window.location.href.split("?");
				if(!urlt[1]){}else{
					var clearurl = urlt[1].split("#");
					var gets = clearurl[0].split("&");
					for(var i=0;i<gets.length;i++){
						var get = gets[i].split("=");
						if(get[0] == TheName){
							var TheValue = get[1];
							break;
						}
					}
				}
				return TheValue;
			}
			function line_code(num){
				canvas = document.getElementById('line_num_canvas');
				if (canvas.getContext) {
					ctx = canvas.getContext('2d');
				}
				canvas.width = 70;
				canvas.height = 28;
				ctx.font = "16px Arial"; 
				// 设置对齐方式
				ctx.textAlign = "right";
				// 设置填充颜色
				ctx.fillStyle = "#888888"; 
				// 设置字体内容,以及在画布上的位置
				ctx.fillText(num, 65, 21);
				// 返回图像
				var image = new Image();
				return canvas.toDataURL("image/png");
			}
			$(document).ready(function(){
				// 运行代码高亮库
				hljs.initHighlightingOnLoad();
				// 设置 Markdown 转换时代码高亮函数
				marked.setOptions({
					highlight: function (code,lang) {
						return hljs.highlightAuto(code).value;
					}
				});
				var renderer = new marked.Renderer();
				renderer.image = function(href, title, text){
					return '<div class="img-box"><img src="'+href+'" alt="'+text+'" /></div>';
				};
				renderer.link = function(href, title, text){
					var reg = new RegExp("^[\\w\\-\\:]+$");
					if(reg.test(href)){
						return '<a href="latex.html?name='+href+'">'+text+'</a>';
					}else{
						return '<a href="'+href+'" target="_blank">'+text+'</a>';
					}
				};
				// 分析地址,获取源文件地址
				var dirurl="data";
				name = QueryGET("name");
				if(!name || name == undefined || name == "undefined"){
					dirurl += "/index";
				}else{
					subnames = name.split(":"); 
					for(i in subnames){
						dirurl += "/" +subnames[i];
					};
				}
				fileurl = dirurl + ".md";
				// 请求 Markdown 文件
				$.ajax({
					url:fileurl,
					async:true,
					dataType:"text",
					error:function(){
						$("#content").html('<h3>该页面还不存在哦~</h3>');
					},
					success:function(markdownString){
						// 将转换好的内容写入页面
						$("#content").html(function(){
							return marked(markdownString,{ renderer: renderer });
						});
						// 代码高亮加行号
						$('pre code').each(function(){
							var thecode = $(this).html().split('\n');
							var code = "";
							for(k in thecode){
								if(!thecode[k] && k == (thecode.length-1)){}else{
									m=k+1;
									code +='<div class="code-line"><div class="line-num" style="background:url('+line_code(Number(k)+1)+') top right no-repeat;"></div>'+thecode[k]+'</div>';
								}
							}
							$(this).html(code);
						});

						// 设置页面标题
						pagetitle=$("#content").find(":header:first").text();
						if(pagetitle != ""){
							$("title").text(pagetitle + " - Wiki in box");
						}
					}
				});
			});
		</script>
		<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
		<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
		<!--[if lt IE 9]>
			<script src="http://cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>
			<script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
		<![endif]-->
	</head>
	<body>
		<div id="header">
			<a href="latex.html"><h1>Whzecomjm's Wiki</h1></a>
		</div> <!-- #header End -->
		<div id="main" class="container">
			<div class="row">
				<div class="col-md-8 col-md-offset-2">
					<div id="content">
						Loading……
					</div>
				</div>
			</div>
		</div><!-- #content End -->
		<div id="footer">
			Power by <a href="https://github.com/dmscode/Wiki-in-box">Wiki in box</a>
		</div> <!-- #footer End -->
		<div style="display:none">
			<canvas id="line_num_canvas"></canvas>
		</div>
		<!-- Include all compiled plugins (below), or include individual files as needed -->
		<script src="files/js/bootstrap.min.js"></script>
	</body>
<script type="text/x-mathjax-config">
      MathJax.Hub.Config({
        extensions: ["tex2jax.js"],
        jax: ["input/TeX", "output/HTML-CSS"],
        tex2jax: {
          inlineMath: [ ['$','$'], ["\\(","\\)"] ],
          displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
          processEscapes: true
        },
        "HTML-CSS": { availableFonts: ["TeX"] ,scale: 90}
      });
</script>
<script 
type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
</script>
</html>