学术论文写作总结

学术论文写作总结

概述

写一篇论文大致要经过下面几个步骤:

  1. 基本idea: 有基本的idea,技术路线。基本的内容。
  2. 搭建论文的最基本的框架列出大标题。写出基本的内容。
  3. 画出架构图,给出例子作为图。给出实验数据的图。
  4. 写出主要内容,并基于图介绍。
  5. 改进图表,更加紧凑,更加逻辑清晰。
  6. 改进叙事逻辑:叙事思路上逻辑需要清晰,更易懂。
  7. 不断完善和改进论文细节。

语言上,关注这两个问题:

  1. 是否容易看懂?
  2. 是否有更准确的说法?是否别人根据我的说法就可以复现?
  3. 必要的铺垫和呼应 vs. 无意义的重复。向前引用,而非重新描述。

资料和工具

  • How to Write a Good Scientific Paper 作者:Chris. A. Mack.
  • How to Write a Great Research Paper Simon Peyton Jones
  • git-latexdiff-web:上传两个overleaf压缩包,运行git-latexdiff,返回一个可以看出有哪些修改的pdf。可以在其他人帮改paper后得到反馈。

英语写作

不要尝试自己写了,容易有语法错误。只需要提升英语阅读能力,知道一段文字比另外一段好。使用大模型翻译,比如:Poe翻译机器人:直接输入中文,内置提示词会让ChatGPT将内容直接翻译为英文。

  • 先写出中文、或者垃圾英文,然后让大模型按照这个思路翻译润色。
  • 修改时:直接用中文修改,然后让大模型翻译润色这个中英混杂片段。
  • 问大模型这个怎么说比较好,让他按要求改成想要的说法。
  • 润色:Act as a language expert, Paraphrase the text using more academic and scientific language. Polish the writing to meet the academic style, improve the spelling, grammar, clarity, concision and overall readability. When necessary, rewrite the whole sentence. Furthermore, list all modification and explain the reasons to do so in markdown table.
  • 找语法错误:Proofread the following text for spelling and grammatical errors and rewrite it with corrections.

找idea

  • Generate 10 academic research questions about
  • Suggest novel applications
  • Identify gaps in the literature
  • Identify potential areas for future research. Find a research topic for a PhD in this area, Write a detailed proposal on the following research topic.

论文结构

Good Logic: - 总体结构上,都是形成了模式的。就像填模板一样,不需要要有格式上的创新。 - 宏观是逻辑是一条线下来,微观上段落都是总分的结构。 - 多找其他人看一看自己写的好不好。

写Abstract、Introduction可以留到最后。 Abstract需要考虑让没有背景的人也能看懂。Introduction也不需要写得太细节,即使能很好地概况你的内容。写清楚是正文approach的事情。最最早的时候,可以把内容都当做introduction写。然后,将内容整理分开为Backround,Challenge,Method三部分,然后Challenge后续可能扩写为Motivating Example部分。 最开始写的时候跳过Abstract,

常见的论文结构 - Introduction - Background - Methodology - Evaluation - Related Work

根据需要调整: - 通常都会有一个Motivating Example。直接在例子上解释整个流程。如果方便写的话一定要写,例子是最容易懂的。 - Background和Related work可以合并放到前面。 - 如果没有Motivating Example导致内容不多,也可以Method前面有单独的Challenge一章,为Challenge编号,后续在Method引用。

Abstract

为下面的内容写一份论文摘要,不要超过250词,分别按顺序讲述:背景、工作重要性、挑战、解决方案、实验结果。

  • 不该写什么:
    • 未来工作: 绝对不要出现在摘要里。
    • 空洞的吹嘘: 避免“本文提出了一种开创性的方法”这类无实质内容的自我评价,用事实(结果)说话。
    • 图表、公式、引用: 摘要应自成一体,无需引用其他部分或文献。

Introduction

One clear sharp idea,不要混合多个问题,有多个idea就写多个paper。Make certain that the reader is in no doubt what the idea is.

  • 使命: 解释你研究的问题,然后说明你的贡献,不要太复杂。直接举例子也很好。The list of contributions drives the entire paper:
  • Introduction解释问题的时候,直接make claim,或者挑明Challenge,然后引用后面的章节。
  • 讲一个好故事,让读者相信你研究的问题既重要又有趣,并且目前还没有完美的解决方案,从而为你的方法登场做好铺垫。
  • 该写什么:
    1. 背景与重要性: 宽泛地介绍研究领域及其重要性。
    2. 问题聚焦: 将范围缩小到你所研究的具体问题。
    3. 现状与不足: 综述现有工作(高度概括),并明确指出其存在的关键缺口未解决的问题。这是引言的灵魂!
    4. 你的贡献: 明确提出本文为解决上述缺口所做的事情。最好用条目列表列出你的主要贡献,清晰明了。
    5. 论文结构: 最后一段概述本文后续章节的组织结构。
  • 不该写什么:
    • 过于详细的背景: 引言是“导游图”,不是“教科书”。细节留给Background/Related Work章节。
    • 冗长的文献综述: 对现有工作的详细分析应放在“相关工作”章节,引言中只需点出最关键、最相关的不足。
    • 方法细节: 不要在这里描述算法的具体步骤。只说高层的核心思想。
    • 实验结果的详细数据: 可以提一句“实验证明了我们方法的有效性”,但不要给出具体数字。

推荐不要让related work阻挡别人读paper,不需要看related也应当能看懂你的paper。

  • 使命: 提及相关的工作。从当前工作的视角提及现有工作的不足。从专业的视角对当前领域提出一些insight。
  • 该写什么:
    • 背景: 提供理解你方法所必需的理论基础(如公式、定义)。
    • 相关工作: 对现有工作进行分类、梳理和总结。例如,将方法分为A、B、C三类,分别阐述其思想、优势和局限性。
    • 与本文的关联: 在讨论每一类工作时,都要巧妙地将其与你的工作联系起来(例如,“我们的方法借鉴了A类的思想,但解决了其……的问题”)。
  • 不该写什么:
    • 简单的罗列: 避免“A做了X,B做了Y,C做了Z”这种流水账。要有批判性思考和有机的组织。
    • 攻击性语言: 批评要客观、公正,用“可能无法处理”、“对……场景敏感”等句式,而不是“他们的方法很糟糕”。
    • 忽略重要文献: 必须引用并讨论最相关、最重要的文献,否则会被认为调研不充分。

4. 方法

Conveying the intuition is primary, not secondary。

  • 使命: 易懂、语言准确、完整地描述你做了什么,让同行能够复现你的工作。
  • 该写什么:
    • 总体框架: 先用一张“框图”和高层文字描述整个方法的流程和组成部分。
    • 前提假设: 明确说明你的方法基于哪些假设。
    • 符号定义: 清晰定义将使用的数学符号。
    • 细节分解: 分小节详细描述每个组件的设计、算法流程、公式推导。每一部分都应回答“是什么”和“为什么”,但“为什么”要简洁地关联到引言中提出的挑战。
    • 伪代码: 如果适用,提供清晰的伪代码并配以解释。
  • 不该写什么:
    • 重复引言中的动机: 不要大段复述“为什么做这个研究”,要用“为了解诀第1节提到的X问题,我们设计了Y模块”这种方式快速衔接。
    • 讨论结果: 方法部分只讲“怎么做”,结果好坏留给实验部分。
    • 描述实现细节: 避免“我们使用了PyTorch框架,在一台RTX 4090显卡上运行”这类信息,这些应放在实验部分的“实现细节”小节。

5. 实验

  • 使命: 通过严谨的、可重复的实验设计,令人信服地证明你的方法优于其他方案,并深入分析其优缺点。
  • 该写什么:
    1. 实验设置: 数据集介绍、评估指标、基线方法、实现细节(超参数等)。确保可复现性。
    2. 主实验: 与基线方法的定量比较(表格、曲线),并辅以定性比较(图片示例)。
    3. 消融实验: 证明你方法中各个组件的必要性。这是体现你工作价值的关键!
    4. 分析与讨论: 分析结果背后的原因,展示方法的失败案例,讨论其局限性。
  • 不该写什么:
    • 只展示好的结果: 诚实是科学的第一准则,讨论局限性能增加可信度。
    • 不合理的比较: 比较的基线方法必须具有代表性和可比性,并在相同的实验设置下进行。
    • 空洞的结论: 不要说“从表1可以看出我们的方法更好”,而要说“我们的方法在指标Y上平均提升了Z%,这主要归功于我们设计的X模块对……问题的有效解决”。

6. 结论与未来工作

  • 使命: 总结全文,再次强调核心贡献,并指出未来的研究方向。
  • 该写什么:
    • 总结: 用不同于摘要的话言,再次概括研究问题、方法和主要发现。
    • 重申贡献: 再次强调你的核心贡献,但要基于实验结果的支撑。
    • 未来工作: 基于当前研究的局限性,提出具体、可行的未来研究方向。
  • 不该写什么:
    • 引入新内容: 结论中不应出现前文未提及的新概念、新结果或新引用。
    • 过度夸大: 结论应稳健,避免不切实际的断言。
    • 简单的重复: 不要只是把摘要复制粘贴过来。

Evaluation / Assessment

  • 几个Assessment的角度:
    • 解释数据
    • 展示了方法的什么限制?
    • 得出什么推论?对未来发展方向的指导?
  • 总分的结构,先总结,然后分析推理数据,然后提出推论。
  • 最后可以用加粗或者框总结并强调最后的结论。
  • 描述的时候必须要定量,给出数据。不能说多了很多这种。
  • 要写的非常直接,不要觉得图上隐含。
  • 用一般现在时。过去时会让人觉得现在不成立。

Rebuttal & Revision

最直接的想法当然是,针对review提出的问题,直接列表一个个回答便是。但是,review经常会,完全不记得问题的上下文。因此这种方式容易导致review想不起来之前的问题。因此要注意重新介绍一下相关的上下文。

  1. reviewer可能忘了自己之前说什么,最好不要有太多引用文章或者rebuttal的地方,而是复述一下。
  2. rebuttal的时候最好不要对其他没有提到意见的地方有太大修改。因为理论上应该在投paper之前,paper应当被打磨完毕。

心态

没有不能克服的困难。写paper看似很难,实际上是由一些没那么难的事情组合而成。

  • Good paper = Good Research + Good Writing。一般过于忽视了好的写作的重要性。好的写作和好的Research同等重要。不需要注重词语,不建议写很长句子。
    • Good Research:
      • Good Idea: 提出问题/解决问题?
    • Good Writing
      • English: 大模型帮助很大,但是依然要注重提升英语水平。不要用太多复杂的词。
        • 同时准备雅思/托福等英语考试。
      • Good Logic:
        • 总体结构上,都是形成了模式的。就像填模板一样,不需要要有格式上的创新。
        • 宏观是逻辑是一条线下来,微观上段落都是总分的结构。
        • 多找其他人看一看自己写的好不好。
      • Reader Oriented:
      • Correct and Succinct:
      • Clear with Good Logic: 把自己的逻辑先列出来,然后再理清楚。
      • Reproducible: 重视实验结果的可复现性。写作上指写出来的东西是可复现的,要把关键的点写出来。

重要注意事项

方法上

  • 是否尽早开始写paper。
    • 没有很好的idea也可以写,可以更好地帮助自己找到idea。
    • 写paper可以理清思路,明确自己不懂的地方。
    • 是否没有将自己的东西发给其他人看:将现有的内容发给其他人看,促进交流合作,尽早发现潜在的问题。
  • 找到自己的Key Idea
    • One clear, sharp idea. Idea是否clear, sharp。有很多idea就写很多paper,而不是混在一起。

写作上:

  • 使用主动语态,使用一致的词。

文字细节

标点符号

  • ref和cite前要用波浪线替代空格
  • 不能用缩写:不能用Can't, I'm, It's等。
  • 逗号表示列举:两个物体不需要用逗号,直接用and或or连接。三个及以上需要使用两个引号,即在and/or前要加逗号。想象自己读句子的时候在and前也会停顿。
  • 冒号:必须在完整的句子后使用冒号。比如The tasks contain: \n - xxx\n - xxx这种是错误的,需要加上对应的宾语:The tasks contain three steps: ...
    • 即使在句子内也是: You can bring the following things: a book, a pen, and a laptop. 必须是完整的句子
  • 连字符Hyphen: 名词前的复合形容词。或者某些数字("twenty-one")
  • 引号
    • 引用:引用别人的话
    • 特殊含义:提及行话,或者特殊意义的词
    • 如果涉及到书,paper标题,起到类似书名号的作用。
  • footnote写在标点符号后面
  • 引用Paper的时候的两种方法In [1], the authors xxx,以及基于姓氏+et al.的引用

数字的使用

总体思想:不能有歧义,全文要一致。

  • 带单位,或者有运算时,用阿拉伯数字。数字和单位之间使用空格,且使用不分割的空格。
    • word里使用Ctrl+Shift+Space
    • latex里使用~
  • 具体的数字不要加近似词限定:Approximately 17 samples ...
  • 1到9的数字(不带单位),序数词通常写单词,而不是阿拉伯数字。0都可以。
  • 大于9的数字写阿拉伯数字,序数词同理:50th xxx, 21st century
  • 拉丁或者希腊符号,往往用斜体。latex里加了数学模式自然会斜体。单位不斜体。
  • 当数字较大时,每三个数字使用分隔符
    • US风格,增加逗号
    • 欧洲风格:使用不分割空格
  • 使用近似词的时候,单位需要写全称:tens of kilometers
  • 近似描述较大的词的时候,使用million,billion,trillion。
  • 句首不能有阿拉伯数字,此时改成数字的单词写法,或者换说法。
  • 使用近似的数字时,也需要上述格式。“Approximately 70~000 people”
  • 常见图标的引用描述:
    • Figure 7 / Fig. 7
  • 数字连接在一起的时候,交替使用避免歧义。twenty 20-mm xxx
  • 表示范围的时候
    • 使用dash破折线,而不是hyphen减号。此时两边都加单位防止歧义。
    • 但是如果有负数的话,就不要用dash,而是to 或through
    • from和between和to使用,不要和dash混合使用。
  • hyphen复合词:
    • 复合成为形容词:
      • 数字加单位复合
    • 21到99的数字用单词表示时(例如在句首)。
    • 单词分数的时候:two-thirds
    • Fold相关:大于9: 20-fold 小于等于9: threefold

大小对比

  • 避免有歧义的比例:不要用几倍小几倍大(one-fourth smaller, 10 times smaller),而是用two times as much/many as
  • 正确描述大小关系
    • 测量出来的值:less than, more than, amount of
    • 数出来的值:fewer than, greater than, number of
    • 维度:smaller than, larger than

图表

  • 保证图表单独能被直接看懂
  • 坐标轴是否正确标注了单位
  • 表格内保证数据精度完全一致,比如全文都保留两位小数。
  • 表格内文字首字母大写是否一致,比如都只首字母大写。
  • 加粗是否使用规范。
  • 推荐右对齐,使得小数点末尾对齐。百分号可以提到表头。
  • 底部如果字太长可以斜过来
  • 位置:图表放到顶部或底部,从而防止两图之间文字太少。图表不能跨页。如果实在太长,用continue table的方式说明。图表和文字之间至少有两行间距。
  • 如果用bar graph/折线图描述平均值,可以带上error bar。
  • 折线图如果点标出来了可以根据情况选择趋势线而不是直接连接。
  • 如果散点图有趋势,可以画一个趋势线。
  • violin plot是box plot的升级版,进一步展示数据分布趋势。

描述图表

  • 如果只是描述某个图展示了什么,没有什么意义。描述图表的时候建议直接描述直接吸引读者注意力,然后用括号引用到表。
    • Germination rates were significantly higher after 24h in running water than in controls (Figure 4)

配色选择网站:colorbrewer2.org 勾选print friendly选项可以保证灰度时也可读。

引用

  • 不要后面去补引用,而是一边写就一边增加引用。
  • Google Scholar的引用,即使bibtex也可能不全。而是使用ACM/IEEE网站,或者DBLP的bibtex。
  • 引用Section的时候用\S替代以节约空间,例如\S~\ref{sssec:xxx}

Latex相关问题

小技巧: - 有加粗字的段落可以都不缩进 \noindent \textbf{xxx}: xxx

段内编号

1
2
3
4
5
6
7
8
9
\newcommand{\one}{({\em i}\/)\xspace}
\newcommand{\two}{({\em ii}\/)\xspace}
\newcommand{\three}{({\em iii}\/)\xspace}
\newcommand{\four}{({\em iv}\/)\xspace}
\newcommand{\five}{({\em v}\/)\xspace}
\newcommand{\six}{({\em vi}\/)\xspace}
\newcommand{\seven}{({\em vii}\/)\xspace}
\newcommand{\eight}{({\em viii}\/)\xspace}
\newcommand{\nine}{({\em ix}\/)\xspace}
  • 标号也可以用带圆圈的数字
    • 另外一种方法:基于 \ding{172} 表示带圆圈的1。要几就递增一下。\usepackage{pifont} 里面有黑底和白底的圆圈数字。

Revision时给文字增加高亮

  • 文字高亮:使用蓝色:\textcolor{blue}{}
  • 图片增加蓝色边框,使用textcolor+frame:\textcolor{blue}{\frame{\includegraphics[width=xxx]{xxx.pdf}}}

ACM模板移除Copyright

这篇文章介绍了。其中pagestyle是和header和footer有关的设置,我加上好像没什么变化。

1
2
3
4
5
% 加在use的package后面
\setcopyright{none}
\settopmatter{printacmref=false} % Removes citation information below abstract
\renewcommand\footnotetextcopyrightpermission[1]{} % removes footnote with conference information in first column
% \pagestyle{plain}% removes running headers

hyperref与链接颜色:

不加上hyperref包之前,各种链接都无法点击,包括\url{https://...}和表格和图的Fig.~\ref{xxx}。直接引入hyperref后会使得链接外面有个浅蓝色边框。使用\usepackage[hidelinks]{hyperref}可以消除边框。

1
2
3
4
5
6
7
8
9
10
11
12
\usepackage{hyperref}
\AtEndPreamble{
\usepackage{hyperref}
\hypersetup{
colorlinks = true,
linkcolor = brown,
anchorcolor = brown,
citecolor = brown,
filecolor = brown,
urlcolor = brown
}
}

使用autoref可以免去写Figure. 1前面的Figure.部分。

IEEE 表Caption是大写

IEEE模板确实要求表的标题是Small Caps格式的。但是,当你引用了\usepackage{subcaption}之后会变成正常格式。如果要提交到期刊,这是一个容易犯的错误。但是确实有很多paper的table的格式因为这个而不对。有一个方法这里也提到)可以绕过这个问题而正常使用subcaption包。

  • 在Caption中使用footnote这里说需要先使用\protect\footnotemark生成脚标标记,然后在表后增加一个\footnotetext{xxxx}。此外,建议此时同时使用\caption[short description]{long description}的格式。有的论文会在结尾生成一个list of figures/tables目录,此时short description会被用到。

图表

基础样式的表格:基于 https://www.tablesgenerator.com/ 生成,选择Booktabs table style,仅选择三个横线(表顶部底部和表头)和内部竖线。

  • 图表说明是否需要句号?
  • 引用图表时使用不换行空格:Fig.~\ref{fig:xxx}。波浪线代表不换行空格。

节约空间

调paper空间要注意Latex的块结构。如果有个块是一个整体,比如一些RQ的Answer块,正好卡在了页面边缘,那么除非你能删改出整个块的空间,不然空间布局是不会变的。

  • 可以让列表没有左边距\begin{itemize} [leftmargin=*]
  • 如果有一些段落最后就一两个单词,可以看看怎么缩上去,节约空间。
  • 如果某段结尾只有一个单词,可以段落结尾加一个\looseness=-1,从而增加单词之间的间距填充满这个多出来的整行。
1
2
3
4
5
6
\addtolength{\floatsep}{-2mm}
\addtolength{\dblfloatsep}{-4mm}
\addtolength{\textfloatsep}{-4mm} % single column figure margin
\addtolength{\dbltextfloatsep}{-3mm} % double column figure margin
\addtolength{\abovecaptionskip}{-2mm}
\addtolength{\belowcaptionskip}{-2mm}

表太宽或太窄

不推荐使用resize,用的话也是用\resizebox{\columnwidth}{!}{....}出处

引用

  • 作者名字的引用,可以 1 仅姓氏, 2 名字首字母加姓氏 比如F. Wang 3 全名。
  • 单个作者直接称呼姓氏?两个作者直接用and连接
  • 三个及以上作者的,使用第一个人的姓氏+et al. 比如: Wang et al. suggested ... [1].
    • 如果多个作者有重复的姓氏,则考虑名字首字母加姓氏:F. Wang et al. suggested ...
    • 或者直接避开
      • In [1], the authors
      • the authors in [1]

as shown by Brown [4], [5]; as mentioned earlier [2], [4]–[7], [9]; Smith [4] and Brown and Jones [5]; Wood et al. [7]

NOTE: Use et al. when three or more names are given for a reference cited in the text.

or as nouns:

as demonstrated in [3]; according to [4] and [6]–[9].

(摘自IEEE Reference Guide)

但最好不要将引用数字作为句子的成分,而是改为提作者名字,或代词指代。

缩写

  • 对于容量,可以直接用全大写的MB,虽然MiB更精确,但是实际上都行。

matplotlib

安装字体

1
2
3
4
5
6
import matplotlib
# 防止type 3字体的出现
matplotlib.rcParams['pdf.fonttype'] = 42
matplotlib.rcParams['ps.fonttype'] = 42
# 设置默认字体
matplotlib.rcParams["font.family"] = "Times New Roman"

其他

先写中文是有帮助的。能够清楚地知道自己往往遇到的是逻辑问题,而不是英语表达能力的问题。速度就是质量,真正好的文章是改出来的,如果不能以很快的速度进行这个过程,那么就很可能不能在自己可接受的时间范围内写出“还看得过去”的paper内容,自己也会非常折磨。可以在文档中自己分两栏,比如用个两列的列表,左边放中文,右边放英文。每次同时修改两边内容。

在分离了语言这个困难后,其次是讲求逻辑,有明确的逻辑关系。优先看自己是不是完全写清楚了,其次是考虑篇幅等其他问题。往往会发现越写越多,然后超出内容,然后开始精简,这也是写paper的必经之路。后面再删,删的时候优先选择必要的逻辑,次要的注释掉。

最后,需要注意,语言是一种艺术。必须要让自己的语言能够以最简单的方式被看懂。首先,任何逻辑上复杂的弯都最好理顺,①进一步增加自己paper的受众,让更多人能看懂,②很有可能reviewer在看你paper的时候很累,思维也并不是很清晰。其次,为了段落结构的清晰,可以通过调整句子,让自己每个段落想表达什么都明确出来。比如,介绍自己paper主要思想时,我们往往并不会写:“The main idea of our paper is that xxxx.”,但是我们却可以刻意改成这样,从而极度明确地让人知道这个段落的主要内容。从另外一方面想,把段落组织起来,利用开头句作为索引,也是方便知识查找和索引的一种方式。语言也是一种艺术,你很难知道这些句子在别人脑子里能否和得到你形成一样的想法。就像艺术要追求美一样,我们要追求逻辑上的清晰,简洁易懂。

2025年7月19日

如何优化paper: 1. 行文的结构逻辑上理清楚,然后能简化都简化。如果没有站在读者角度考虑简化,那么肯定是要改的。 2. 把对工具的修改放到discussion里面? 3. 介绍表除了带上具体数字,要带上具体行号 4. 多加交叉应用。指向别的段落 5. 评价其他工作的时候要客观而具体。不要说他们做得不好,可以说具体的方面,struggle with。

2024年1月24日

  • 表格的\extracolsep填满整个页,会导致边框有gap,rotate之后不对齐到中间。
  • 引用网页时,使用@misc{}项目,如果写url = {{xxx}}则在后面不会显示链接。写howpublished = {\url{xxx}}才会显示。这里有个相关的问题。可能@onlineurl搭配,而@mischowpublished搭配使用。

2023年12月9日

注意小节开头的句子和之前的连贯性。

  • research做不可数名词。Some research shows that xxx