详细记录使用Octopress
的搭建和使用过程中遇到的问题。
安装octorpess
首先,安装git
ruby
,注册 github 账号。
然后,在终端(Terminal)下执行如下命令:
1
2
3
4
5
| git clone git://github.com/imathis/octopress.git octopress
cd octopress
gem install bundler
bundle install
rake install // 安装默认主题
|
本地安装完毕后,通过rake preview
预览安装效果。执行完rake preview
后,在浏览器
中输入http://localhost:4000
即可查看搭建效果。
部署octopress
登录注册的 github 账号,选择New Repository
,进入新建库页面后,
在Repository name
一栏填[your_username].github.io
,[your_username]
是 github 上的用户名,此处的格式一定要正确,否则部署会失败。
之后点击Create repository
按钮提交。
如果创建仓库成功,会有一个 SSH 地址,形如git@github.com:[your_name]/[your_name].github.io.git
,后面会用到该地址。
终端下执行如下命令:
1
2
| cd octopress
rake setup_github_pages
|
执行完上面两条命令后,需要把刚刚生成的 SSH 地址粘贴到此处。
继续执行:
1
2
| rake generate
rake deploy
|
其中rake generate
用来生成页面,rake deploy
用来部署页面。上述完成后,
即可使用http://[your_username].github.io
来访问页面。
最后要记得把源文件全部发布到source
分支下面。通过下面命令完成:
1
2
3
| git add .
git commit -m "commit message"
git push origin source
|
发布新帖
发布新帖的两种方法:
方法一是在命令行下执行如下命令:
1
2
| cd octopress
rake new_post["Post Title"]
|
其中的Post Title
就是你想要的文章标题,然后会有一个名为yyyy-mm-dd-Post_Title.markdown
的文件在octopress/source_posts
目录下生成,其中yyy-mm-dd
是当时的日期。之后打开文件,即可编辑博客。
方法二是直接在octopress/source_posts
文件下,生成一个格式相同的文件即可。
生成的文件格式头如下
1
2
3
4
5
6
7
| ---
layout: post
title: "使用Octopress 搭建个人博客"
date: 2015-05-01 19:47:37 -0700
comments: true
categories: 总结积累
---
|
基本配置
_config.yml
用于基本配置,包括域名、网站标题、作者等等信息。
_config.yml
1
2
3
4
5
6
| url: http://yhoursite.com
title: My Octopress Blog
subtitle: A blogging framework for hackeers.
author: Your Name
simple_search: https://www.google.com/search
description:
|
汉化Categories
, 在_config.yml
文件中,添加下面一行代码:
1
| category_tile_prefix: “分类:”
|
汉化Read On->
按钮:当文章只是显示摘要,点击Read on->
后才可查看全文时,可以通过在文章中插入如下内容:
在文章中找到如下一行,把其中的Read on
改为继续阅读
。
主题修改
网站底部:一般来讲网站底部会有一些网站的描述信息,比如版权声明、网站
主题,网站使用的系统等等,要修改这部分内容,直接打开source/_includes/custom/foot.html
修改相应部分即可。
添加图片
在写 blog 的过程中,经常需要用到插入图片。示例如下:
-
把图片 meinv.png
copy 到 source/images
下。
-
在需要的位置添加代码.
1
| <img src="/images/meinvp.png">
|
更多技巧,请参见 Octopress 官网提供的技术支持。
添加视频
在写 blog 的过程中,经常需要在博客里添加视频。在此记录添加 YouKu 视频的方法。
首先添加 ruby 插件,添加文件octopress/plugins/youku.rb
,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| class Youku < Liquid::Tag
def initialize(tagName, markup, tokens)
super
@params = markup.split(" ")
if @params.count >= 1
@id = @params[0]
if @params.count >= 3
@width = @params[1]
@height = @params[2]
else
@width = 560
@height = 420
end
else
raise "No Youku ID provided in the \"youku\" tag"
end
end
def render(context)
# "<iframe height=498 width=510 src="http://player.youku.com/embed/XNTEzNzcwNDI0" frameborder=0 allowfullscreen></iframe>"
"<iframe style=\"margin:0 auto; display: block\" height=\"#{@height}\" width=\"#{@width}\" src=\"http://player.youku.com/embed/#{@id}?color=white&theme=light\"></iframe>"
end
Liquid::Template.register_tag "youku", self
end
|
添加完上述文件后,就可添加 youku 视频文件了,方法是在需要添加视频的位置添加如下 Tag:
youku id width height
其中的youku 是关键字;id 是打开的youku视频的id,可以从网址里找到;width/height 是视频的宽高。
示例如下:
添加文章目录
文章一旦长了之后,想要找某个点就需要目录来索引。添加文章目录方法:
首先,使用 kramdown 作为 Octopress 作为 Markdown 解析器。
① 在Gemfile
中添加如下代码.
② 端执行如下命令。
③ 修改_config.yml
文件中相关内容如下。
1
2
3
4
5
6
| markdown: kramdown
kramdown:
user_coderay: true
coderay:
coderay_line_numbers: table
coderay_css: class
|
其次,在想要插入目录的地方,插入如下代码即可。
1
2
| * list element with functor item
{:toc}
|
再次,在目录前自动添加本页目录
,修改sass/custom/_style.scss
,代码如下.
1
2
3
4
| #markdown-toc:before{
content: "本页目录";
font-weitht: bold;
}
|
最后,为防止显示摘要时出现目录,在sass/custom/_style.scss
添加代码。
1
2
3
| .blog-index #markdown-toc{
display: none;
}
|
参考博文:Octopress 精益修改 和 Table Of Contents in Octopress
添加表格
语法说明:
|
-
:
之间的多余空格会被忽略,不影响布局。
- 默认标题栏居中对齐,内容居左对齐。
-:
表示内容和标题栏居右对齐,:-
表示内容和标题栏居左对齐,:-:
表示内容和标题栏居中对齐。
- 内容和
|
之间的多余空格会被忽略,每行第一个|
和最后一个|
可以省略,-
的数量至少一个。
1
2
3
4
| | 左对齐标题 | 右对齐标题 | 居中对齐标题 |
| :-------- | ---------: | :----------: |
| 短文本 | 中等文本 | 稍微长一点的文本 |
| 稍微长一点的文本 | 短文本 | 中等文本 |
|
左对齐标题 |
右对齐标题 |
居中对齐标题 |
短文本 |
中等文本 |
稍微长一点的文本 |
稍微长一点的文本 |
短文本 |
中等文本 |
多台机器上同时使用
在新的机器上创建 ssh key 并添加到 github 中。
创建ssh-key
。
1
| $ ssh-keygen -t rsa -b 4096 -C "libinglimit@gmail.com"
|
把生成的key
添加到ssh-agent
中。
1
| $ ssh-add ~/.ssh/id_rsa
|
把添加的key
放到github
中。
本地重建Octopress仓库。clonesource
分支/master
分支:
1
2
3
| $ git clone -b source git@github.com:lazybing/lazybing.github.io octopress
$ cd octopress
$ git clone git@github.com:lazybing/lazybing.github.io _deploy
|
参见 github 官方帮助文档。
配置环境。
执行以下命令配置环境:
1
2
3
4
| $ gem install bundler
$ rbenv rehash # If you use rbenv, rehash to be able to run the bundle command
$ bundle install
$ rake setup_github_pages
|
使用技巧
及时提交本地修改
1
2
| $ rake generate
$ rake deploy
|
第一条命令会使用本地的修改生成最新的blog
网站,并且生成的blog
会存放到Octopress
根目录下的public/
目录下;
第二条命令主要做了两件事:
*用generate
命令生成在public/
目录下的内容覆盖_deploy/
目录下内容;
*将_deploy/
目录下的修改add
、 commit
到git
,并push
到git
的master
分支。
除此之外,还需要把source
分支中做到的修改提交到git
仓库中,执行以下命令:
1
2
3
| $ git add .
$ git commit -am "Some comment here."
$ git push origin source # update the remote source branch
|
修改前先更新到最新的版本。
1
2
3
4
| $ cd octopress
$ git pull origin source # update the local source branch
$ cd ./_deploy
$ git pull origin master # update the local master branch
|
为防止出现non-fast-forward
错误,操作顺序示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
| $ git clone -b source git@github.com:lazybing/lazybing.github.io octopress
$ cd octopress/
$ git clone git@github.com:lazybing/lazybing.github.io _deploy
$ git pull origin source
$ cd ./_deploy/
$ git pull origin master
$ cd ..
$ git status
$ git branch -a
$ git add .
$ git commit -m "commit comment"
$ git push origin source
$ rake generate;rake deploy
|
参考博文:让Octopress博客在多台Mac上同时使用
octopress中添加Latex支持
- 首先要安装 kramdown,安装命令:gem install kramdown
- 在
source/_includes/custom/footer.html
添加如下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| <!-- MathJax -->
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
processEscapes: true
}
});
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
}
});
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Queue(function() {
var all = MathJax.Hub.getAllJax(), i;
for(i=0; i < all.length; i += 1) {
all[i].SourceElement().parentNode.className += ' has-jax';
}
});
</script>
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
|
这样就引入了 MathJax 的 js 包。
3. 在_config.yml
文件中,用markdown: kramdown
替换markdown: rdiscount
。
完成上述步骤后,即可使用 Latex 公式了。参考文献