美文网首页126学习工作
如何用Markdown写论文?

如何用Markdown写论文?

作者: 王树义 | 来源:发表于2017-12-04 14:06 被阅读4115次

    本文用简明的样例,介绍如何使用Markdown和自动化工具帮你处理数学公式、参考文献引用、图片交叉索引等学术论文写作中常见的棘手问题。快来试试吧。

    image

    苦恼

    自从我学会了如何在数字文档上用红笔写写画画,跟学生合写文章和指导毕业论文的工作就变得轻松多了。

    image

    有的部分,学生会很快改完反馈给我。但是我发现每次对引言和文献综述部分做出调整要求,学生们的反馈都非常慢。

    有的时候,学生甚至会求饶,“老师,参考文献顺序能不能不动?或者全文都确定下来再统一做?每次调整一个,就需要很长时间!”

    我一时惊愕,为什么需要那么久?

    后来才明白,他们居然是在word中一条条手动插入尾注,来引用参考文献的。尾注的内容有的直接搬过来,有的手动输入,结果参考文献列表的格式“丰富多彩”——有的信息不全,有的格式根本就不符合GB/T 7714-2015的规范。

    在我的帮助下,许多学生学会了使用NoteExpress, Endnote, Zotero和Mendeley等工具,用自动化方式管理和引用参考文献。

    但即便是这样,效率依然不够高。尤其是跟别人协作的时候,参考文献引用的修改就成了噩梦。

    你可能需要每次都把Mendeley或者Zotero的文献库同步给对方,否则自动生成的引用标记就容易乱掉。

    写作学术论文时,你还不得不时常面对图表交叉引用、数学公式和脚注等问题。如果方法不当,会把宝贵的时间和注意力耗散掉,劳而无功。

    Word编辑器用来写学术论文,可能真的并不是最优方案。

    但是没办法,国内学术界,尤其是人文社科领域,目前投稿模板还主要是Word的。

    好消息是,即便是形成Word文稿,效率也是可挖掘的。

    我平时写作学术论文的时候,用的依然是让人喜欢的标记语言——Markdown。对,你没听错,它不光可以帮你写公众号、做幻灯,也可以写论文哦。

    通过本文,我把自己用Markdown写作学术论文的流程分享给你。希望看过之后,能帮助你提升效率,带来更多愉悦的写作体验。

    方案

    我的方案,是采用Markdown来写作内容。然后用文档格式处理界的瑞士军刀Pandoc,把内容转换成Word格式。

    Pandoc实在是黑科技。我曾经用它给你演示了如何把思维导图秒变成幻灯。还记得其中这张图吗?

    image

    图中每一个节点,都是Pandoc支持的一种文档格式。Markdown, Docx, PDF, LaTeX, ePub, HTML …… 基本上涵盖了我们常见的发布格式需求。

    一次写作,多种格式发布。听起来是不是很兴奋呢?

    要使用这一方案,我们需要安装一些必要的工具。这就开始吧。

    环境

    我们需要安装以下几样东西:

    • Python 运行环境;
    • Pandoc;
    • Atom编辑器;
    • 样例文件夹。

    下面我们一一介绍安装方法和注意事项。

    Python环境

    我们的演示中,需要用到pip等Python环境工具。最简便的方法是安装Anaconda套装,这样就不必对各种组件一一手动调整安装了。

    请到这个网址 下载最新版的Anaconda。下拉页面,找到下载位置。根据你目前使用的系统,网站会自动推荐给你适合的版本下载。我使用的是macOS,下载文件格式为pkg。

    image

    下载页面区左侧是Python 3.6版,右侧是2.7版。请选择2.7版本。

    双击下载后的pkg文件,根据中文提示一步步安装即可。

    image

    Pandoc

    请到这个网址下载Pandoc。

    image

    根据你的操作系统,下载对应的版本。我在macOS下,需要下载其中的pkg扩展名安装包,双击安装。

    为了处理图形的交叉引用,我们需要添加一个pandoc插件。

    在终端(macOS, Linux)或者命令行(Windows)下,执行:

    pip install pandoc-fignos
    

    正常安装后,pandoc就算准备好了。

    Atom编辑器

    请到这个地址下载Atom编辑器。网站会根据你的操作系统,自动找到对应的版本供你下载。

    image

    因为我用的是macOS,所以这里网站提供的是苹果版本Atom。

    下载之后,安装运行。然后你需要安装1个插件,帮你预览Markdown,叫做markdown-preview-enhanced

    安装方法如下:

    使用Cmd + ,呼叫配置菜单。注意我这里说的是苹果系统macOS上的操作。如果你用的是Windows,请把所有出现的Cmd按键替换为Ctrl按键,或者查阅帮助文档。

    image

    选择左侧边栏的最后一项+号,用于安装新的插件。

    image

    在搜索框中输入该插件的名字:markdown-preview-enhanced,点击搜索结果中该插件的Install按钮。

    很快,插件安装好了。

    image

    这样,我们就可以实时查看Markdown的预览效果了。

    样例文件夹

    我专门为这篇教程,准备了一个github项目。

    请从这个位置,下载压缩包,之后解压。

    image

    把其中的demo.md文件拖动到Atom编辑器中,就可以正式开始我们的探索之旅了。

    基础版本

    Atom编辑器里,demo.md文件显示如下。

    image

    左侧是Markdown源代码,对应的预览效果在右侧显示。

    这里我们只包含了最简单的文本和图片。图片在我们刚刚下载文件夹的/assets子目录中。

    到终端下,采用cd命令进入咱们的演示文件夹(我的在~/Downloads/demo-scholar-markdown-docx-master),执行:

    pandoc demo.md -o demo.docx
    

    可以看到,当前文件夹下,生成了demo.docx文件。

    打开Word文件,内容是这样的:

    image

    基础版本的格式转换,就是这么简单。下面我们就要添加一些内容,让文稿变得愈加有学术色彩。

    数学公式

    我们尝试插入数学公式。

    在Markdown下,可以直接使用LaTeX数学公式。你只需要负责键入符号,Pandoc负责将其转换成漂亮的公式显示在Word中。

    如果你对LaTeX数学公式的输入不是很熟悉,不要紧,这里有个小抄(cheatsheet),你可以参考。

    我们打开demo-math.md,可以看到这次除了刚刚的内容,还增加了一个新的部分,叫做“数学公式”。

    内含一个经典物理学公式,还有相应的变量解释。

    image

    在右侧预览区里面,我们看到了公式预览的效果。

    回到终端下执行:

    pandoc demo-math.md -o demo-math.docx
    

    这次生成的docx文件如下图所示:

    image

    转换后的word文件里,不论是独立公式,还是行内数学符号,都显示正常。

    脚注

    写学术论文的时候,经常需要加入脚注。例如在首页需要添加作者和基金支持信息之类。咱们也尝试在本部分加入对应内容。

    打开demo-footnote.md,对比一下添加了哪些信息。

    image

    脚注用[^1]来表示。内容用同样的符号,后接冒号,然后填写具体信息。

    这次的预览中,我们看到了脚注的标注,但是脚注内容哪儿去了?

    别担心,拖拽右侧的预览窗口,我们就能看到脚注了。

    image

    但是转换成word后,这脚注还在第一页吗?

    我们到终端下,执行pandoc命令:

    pandoc demo-footnote.md -o demo-footnote.docx
    
    image

    脚注如同我们需要的那样,显示在了首页底部。本部分测试成功。

    文献引用

    下面我们进入关键阶段——文献引用了。

    我们打开百度学术,找几篇跟大数据特性相关的文献。

    image

    键入检索主题词“大数据+3V+5V”,搜索后的结果如下:

    image

    点开第一篇,我们看看内容。

    image

    页面下方有全文链接,我们选择知网。

    image

    点击PDF下载,查看全文。其中包含以下内容,跟咱们这篇文稿的主题相关。

    image

    我们决定引用这篇参考文献。

    回到百度学术的页面,点击引用按钮。

    image

    在弹出页面中,点击下方蓝色的“BibTex”。

    image

    如上图所示,该文献的Bibtex信息就是这样的一段文本。我们将其拷贝下来,存储到.bib文件里。

    依此类推,我们再下载其他两份文献的Bibtex信息。

    你可以打开演示目录内的myref.bib文件查看,内容如下图所示:

    image

    下面我们就要引用这些文献了。

    打开demo-citation.md。

    image

    引用的时候,我们使用Bibtex中每条文献信息大括号内的第一个字段,前面加上@符号,用方括号扩起来。需要引用多条文献的时候,在方括号内,对不同文献标记用分号区隔。

    我们很容易就发现,参考文献的预览信息是不正确的。

    下面我们看看Pandoc能否帮助我们将其转换成为正确的Word内容。

    注意这次需要使用的参数比较多。因为我们不光需要指定参考文献的格式,还得告诉Pandoc,参考文献数据存储在了哪里(myref.bib)。

    pandoc --filter pandoc-citeproc --bibliography=myref.bib --csl=chinese-gb7714-2005-numeric.csl demo-citation.md -o demo-citation.docx
    

    打开转换后的word,看看效果。

    image

    Pandoc正确地帮我们把文献的引用标记信息转换成为了上角标,根据出现的顺序自动编排序号。对于多个文献的引用情况,也做了对应的处理。

    参考文献列表呢?

    我们翻动页面到文末。

    image

    参考文献列表已经根据GB/T 7714-2015的规范自动生成。

    将来无论是对文献引用作增删、移动、修改,都可以通过执行上面的一条命令自动更新。非常方便。

    图片引用

    写作长篇学术论文(例如毕业论文)时,图片可能会有很多。引用起来如果手动编号,将来插入新的图片,就得手动重排许多后续内容,很麻烦。

    下面我们尝试在Markdown里插入图片标题,并且在文中作交叉引用。

    请打开demo-figref.md,内容如下:

    image

    注意这里图片使用时,加入了一些新的信息。前面的方括号里面,加上了图标题;后面的大括号,使用#fig:id的方式,加入了图的标记。

    引用的时候,采用{@fig:id}的方式,分别引用每个图形。

    注意右侧的预览区,图标记都是原封不动显示的。

    为了能够让图片引用的时候使用“图”,而不是“Figure”,我们在文件首部插入4行内容:

    ---
    fignos-cleveref: On
    fignos-plus-name: 图
    …
    

    预览中,这部分也出现在了文章首部,很难看。

    image

    我们执行以下的pandoc命令,注意此次加入了图片引用处理要求。

    pandoc --filter pandoc-fignos --filter pandoc-citeproc --bibliography=myref.bib --csl=chinese-gb7714-2005-numeric.csl demo-figref.md -o demo-figref.docx
    

    这次生成的Word里面,图片自动加上了编号。

    image

    第二张图,序号也符合我们的预期。

    image

    注意,目前这个图片自动编号的功能对于中文支持还有些问题。例如标题中依然显示为“Figure”,而非我们想要的“图”。不过我们只需要调整替换图标题即可,所有的引用都是正常的。

    如果你的学术论文里面有数十或上百张图片,你会立即体会到这种引用方式的好处。

    小结

    本文我们用一个最小化的样例,介绍了如何在学术论文写作时,利用Markdown和Pandoc处理以下格式信息:

    • 数学公式;
    • 脚注;
    • 文献引用;
    • 图片引用。

    此时再来看我们生成的Word文稿,已经变成了这个样子:

    image

    是不是很有成就感呢?

    举一反三,你也�可以把这些技巧和方法应用于其他学术文稿的写作中,它们包括而不限于开题报告、结项报告,甚至是科研项目申请书。

    希望这些展示,能对你写作学术文稿效率的提升,起到促进作用。

    讨论

    你平时经常写学术论文吗?用的是什么工具?效率如何?除了本文介绍的方法外,有没有更好的工具和流程推荐给大家?欢迎留言,分享你的思考和经验,我们一起交流讨论。

    如果你对我的文章感兴趣,欢迎点赞,并且关注我的专栏,以便收到后续作品更新通知。

    如果本文可能对你身边的亲友有帮助,也欢迎你把本文通过微博或朋友圈分享给他们。让他们一起参与到我们的讨论中来。

    相关文章

      网友评论

      • 3c1b60061a7c:王老师,您好,看了您的文章,深受启发;在此有些小的疑问,还望解答一下。谢谢
        请问:1.如何解决标题自动编号,以及图和表的题注按照章节自动编号的问题?2.用最简单的代码导出的docx文件格式并不符合毕业论文要求,以前试过用--reference-docx=参数传递来更改样式,但并非完美解决方案,王老师可否讲解下用css或者TeX模板来更改样式的方法,以及如何修改这些文件得到符合要求的样式模板,期待您的答复,再次感谢
      • 画长空_yin:不同的期刊的参考文献格式不一致,怎么解决呢
      • b8d51d79bcfe:老师,图片引用的这个示例跑不起来

        ```
        pandoc --filter pandoc-fignos --filter pandoc-citeproc --bibliography=myref.bib --csl=chinese-gb7714-2005-numeric.csl demo-figref.md -o demo-figref.docx
        ```

        错误为:

        ```
        Error running filter pandoc-fignos:
        Could not find executable pandoc-fignos
        ```

        我是完全按照步骤操作的。是pandoc的版本问题吗?不知道它以后有没有可能有个操作界面,或者老师知道有操作界面版的吗?
      • dc863b3b7df6:很实用,但发现了一个问题,使用pandoc --filter pandoc-citeproc --bibliography=ref.bib --csl=chinese-gb7714-2005-numeric.csl --latex-engine=xelatex --template=pm-template.latex 论文.md -o 论文.pdf 命令,表格无法生成,这个要怎么解决呢?谢谢
      • johnvonlzf:若是参考文献不是上标形式的,而是在行内的形式,不知有什么方式实现?用了一下发现一个问题,生成的文献中若作者的名称为英文,则生成Word后全部显示为大写字符。
        870ff6ba1a68:@王树义 请问王老师,不同引用格式的cls文件可以去哪里下载?
        b8d51d79bcfe:老师,可以举个例子么?发表期刊的引用要求似乎并不同呀。加入需要引注和参考文献同在怎么办?或者引注标记后面(也就是上标)有页码怎么办?只能手工了对吗?
        王树义:@processer 换其他style文件,可以实现不同引用风格
      • MoRIATY_B:跟着老师一步一步操作下来,对毕业论文修改帮助太多:+1:
        王树义:@我还在这里 尝试Zotero,可以直接把网页摘取,并且导出成为bibtex格式。如果对Zotero感兴趣,我在《如何对PDF文献做可视化分析?》一文中曾经推荐过阳志平老师的Zotero系列教程,请按图索骥深入学习。
        MoRIATY_B:王老师,请问若是网站引用怎么添加到bib文件中呢
      • 颜家大少:王老师真的很厉害👍,连个工具都能描述得如此详细!
        王树义:@颜家大少 谢谢鼓励!
      • XiaoChang_87c7:身为程序员的我 真心喜欢
      • 斐南:好棒呢,之后我也要学习这些编辑工具
      • 半夏微凉歌弦音:我不写学术论文,因为没机会,我只是普通百姓,那也好好学习你的这篇文章,很实用,谢谢分享!🌹
        王树义:@半夏微凉歌弦音 谢谢鼓励!
      • 沐子鱼和火:每次看王老师的文都有新收获!
        王树义:@沐子鱼和火 谢谢鼓励!
      • 7226a6c5f9c6:简洁实用,赞
        王树义:@强袭宙斯 谢谢鼓励!

      本文标题:如何用Markdown写论文?

      本文链接:https://www.haomeiwen.com/subject/mofxixtx.html