如何利用package.json一键转换md生成word文档

马上就要本科毕业了,考研出分等线的同时正在疯狂赶毕业论文,于是乎为了节约时间,写了这么一篇博文来记录下这个特殊的经历
需求简介
现有md格式
的论文底稿一份,用bibtex
作为文献数据库,使用pandoc
命令引用文献格式并输出word文档
主要步骤原先分为几部分:
- 打开
终端terminal
- 复制以前保存的命令
- 修改
csl文件
和输入输出文件名 - 执行命令行
- 到文件夹里找到输出的word文件并打开
步骤较为繁琐,在使用vscode
作为论文编辑器的时候想起以前项目可以直接用自带的npm命令脚本启动npm start
,遂想利用一下这个功能来一键执行以上5步命令

使用简介
建立package.json文件
vscode可以自动识别该文件,从而在界面上显示可以执行的脚本
在论文项目根目录下新建一个package.json
文件,输入以下内容
{"scripts": {
"命令名称": "命令"
}
}
就可以在ui界面点击直接执行相关命令了
放入pandoc命令
那么我们此处写入
{"scripts": {
"md2docx": "pandoc --filter pandoc-citeproc --bibliography=./论文文献/ref.bib --csl=chinese-gb7714-2005-numeric.csl wenxianzongshu.md -o p3.docx"
}
}
那么在终端输入npm run md2docx
或者直接在vscode界面 npm脚本里面点击执行这条命令就可以直接执行了
这条命令的意思是用pandoc转换md文档为word文档,同时使用gb7714文献引用格式来引用ref.bib当中的文献内容
用word打开刚刚生成的word文件
macOS当中用word打开word文档的命令行语句是open /Applications/Microsoft\ Word.app 文件名.docx
但在此处我们无法使用,因为Microsoft Word
当中有个空格,而在shell里面空格都会当作输入参数来对待,并且在npm命令里面无法使用\
斜杠来转义空格,因此想到了曲线救国方法
在文件目录新建一个shell文件
,命名为opendocx.sh
,输入
#!/bin/zsh
# author:Andy
# 打开md转换完成的word
echo "正在打开文档 $1"
open /Applications/Microsoft\ Word.app $1
echo "成功打开 $1"
exit
注意此处的$1
代表的是传递过来的第一个参数变量,也就是打开的word文件名,那么此时就可以在npm脚本里面直接执行这个shell来实现打开word文档功能
{"scripts": {
"md2docx": "pandoc --filter pandoc-citeproc --bibliography=./论文文献/ref.bib --csl=chinese-gb7714-2005-numeric.csl wenxianzongshu.md -o p3.docx",
"opendocx":"sh opendocx.sh ./p3.docx",
}
}
执行opendocx
打开word文档
如何两者一起执行
那么就用&&符号来执行两个命令吧,下面执行onekey-md2docx
命令便可一键执行两个命令
这也是最后完整的执行脚本
{"scripts": {
"md2docx": "pandoc --filter pandoc-citeproc --bibliography=./论文文献/ref.bib --csl=chinese-gb7714-2005-numeric.csl wenxianzongshu.md -o p3.docx",
"opendocx":"sh opendocx.sh ./p3.docx",
"onekey-md2docx":"pandoc --filter pandoc-citeproc --bibliography=./论文文献/ref.bib --csl=chinese-gb7714-2005-numeric.csl wenxianzongshu.md -o p3.docx&&sh opendocx.sh ./p3.docx"
}
}