写作指导

本文最后更新于:9 天前

这是blog.swu-acm.cn的发文指引,仅供西南大学ACM实验室内部成员使用

Summary

这是托管于GitHub Page的一个静态博客站点,使用Hexo驱动,Fluid主题美化,在撰写文章之前,需要进行以下准备工作:

  1. 在本机安装node环境和相关依赖
  2. fork本站点并在本地部署

然后在发文时需要进行以下步骤:

  1. 检查仓库版本
  2. 撰写文章并commit
  3. 发起pull request
  4. 等待合并

Preparation

在本机安装node环境

建议使用nvmnode环境进行管理,ACM实验室的镜像站镜像了一份nvm仓库。

nvm : Node Version Manager,是控制node版本的一个工具包

  1. (仅支持Linux/Unix/macOS[1])执行下面的安装语句[2]

    Curl

    1
    curl -o- https://gitea.swu-acm.cn/mirrors/nvm/raw/branch/master/install.sh | bash

    Wget

    1
    wget -q0- https://gitea.swu-acm.cn/mirrors/nvm/raw/branch/master/install.sh | bash

    执行完成后,nvm就被安装在~/.nvm文件夹内了,需要将其添加到环境变量中,在~/.bashrc~/.zshrc~/.profile中任意一个文件添加如下内容[3]

    1
    2
    export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
  2. 使用nvm安装node

    1
    nvm install $version

    $version是你要安装的node版本

  3. 使用nvm激活node环境

    1
    nvm use $version

    $version是你要使用的node版本

现在就大功告成啦

在本地部署Hexo站点

  1. 首先从original-swu-blog[4]仓库中fork到你个人的仓库,下面你个人的仓库地址将使用$repo来表示:

    添加original-swu-blog仓库为upstream

    $repo目录下执行下面的命令:

    1
    git remote add upstream https://gitea.swu-acm.cn/SWU-ACM-Lab/original-swu-blog

    这样你将可以同步original-swu-blog仓库的更改。

  2. 然后安装必须的依赖:

    $repo目录下执行下面的命令:

    hexo-cli

    1
    npm install hexo-cli --save

    Fluid主题

    1
    npm install hexo-theme-fluid --save

    其余依赖

    1
    yarn
  3. 然后跑起来:

    $repo目录下执行下面的命令:

    1
    hexo server

    本地站点会在localhost:4000进行服务,可以在浏览器访问看一下效果。

Writting

为了保证理解正确,建议阅读文章GitHub从fork到pull request之基础流程

检查远程仓库版本

$repo目录下执行下面的命令:

1
2
git fetch --dry-run # 检查原仓库是否有变化
git pull # 将原仓库的更改与本地同步

撰写文章

  1. 生成文章

    $repo目录下执行下面的命令:

    1
    hexo new post $postname

    注意 $postname将作为文章的URL,请不要使用中文和其他特殊字符!

    $postname是你文章的标题,执行完后会在$repo/source/_posts目录下生成一个$postname.md的文件。

  2. 使用你喜欢的编辑器撰写一篇markdown文章

    使用一个你喜欢的markdown编辑器打开上一步生成的$repo/source/_posts/$postname.md,按照正常的文章编辑即可,需要注意的只有以下几点:

    1. 文章属性字段

      在文章一开头有形如这样的一段代码:

      1
      2
      3
      4
      ---
      title: $postname
      date: $createtime
      ---

      你可以在其中加入如下字段:

      title: 文章的标题,建议更改

      author: 文章的作者

      date: 文章的修改日期(会自动更改)

      tags: 文章的标签,可以多个

      banner_img: 文章的背景图片,仅支持外链

      category: 文章的分类

      示例如下:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      ---
      title: 数据结构算法
      date: 2021-08-04 09:27:54
      author: Vector
      tags:
      [
      C++,
      Datastructures,
      Algorithm,
      STL
      ]
      category: Courses
      ---
    2. 文章摘要

      在上面那一段文章属性结束后,可以自己定义文章摘要,如下所示:

      1
      2
      3
      $abstract

      <!--more-->

      <!--more-->标签以前的都是摘要,如果没有写摘要的话系统就会自动节选文章的前一百个字作为文章的摘要。

    3. 公式与图形

      我们适配了mermaid作为图表驱动引擎,可以在文章中使用mermaid:

      1
      2
      3
      4
      5
      graph LR;
      A-->B;
      A-->C;
      B-->D;
      C-->D;

      效果:

      graph LR;
      A-->B;
      A-->C; 
      B-->D;
      C-->D;
      

      我们还适配了mathjax作为公式驱动引擎,可以在文章中使用公式:

      1
      2
      3
      4
      5
      6
      $$
      \begin{aligned}
      \left| \bigcup_{i=1}^{n} S_i \right| &= \sum_{i} | S_i | - \sum_{i<j} | S_i \cap S_j | + \sum_{i<j<k} |S_i \cap S_j \cap S_k | - \cdots \\
      & \quad + (-1)^{m-1} \sum_{a_i<a_{i+1} } \left| \bigcap_{i=1}^{m} S_{a_i} \right| + \cdots + (-1)^{n-1} \left| S_1 \cap \cdots \cap S_n \right|
      \end{aligned}
      $$

      效果:

发起pull request

original-swu-blog页面提交pull request,按实际情况填写字段即可。

等待合并

如果审核通过的话,你的文章就会在博客站内发布了。

Errors

你可以通过如下方式提交你的问题:

  1. 在下方评论区留下你的问题
  2. 【推荐】在original-swu-blog提交Issue

Tips

  1. Windows请直接到nvm-windows仓库下载安装包。
  2. 由于版本可能发生更迭,建议前往mirrors/nvm查看最新的安装语句。
  3. 如果你使用的是bash,请在bashrc中添加,如果你使用的是zsh,请在zshrc中添加,其他shell请按照实际情况添加。
  4. 只有ACM实验室的注册成员且被分配了权限,才能访问该仓库。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!