인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
생산성 및 협업 · SKILL.md

wps-thesis

wps-thesis

毕业论文排版。按高校标准生成论文文档,包含封面、中英文摘要、 目录、正文章节、参考文献(GB/T 7714)、致谢等完整结构。 用于帮助学生排版毕业论文。当用户提到论文、毕业论文、论文排版时触发。 Academic thesis formatter.

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill 문서

GitHub

name: wps-thesis description: | 毕业论文排版。按高校标准生成论文文档,包含封面、中英文摘要、 目录、正文章节、参考文献(GB/T 7714)、致谢等完整结构。 用于帮助学生排版毕业论文。当用户提到论文、毕业论文、论文排版时触发。 Academic thesis formatter. license: MIT user-invocable: true argument-hint: '[论文标题/内容] [学校名称(可选)]' allowed-tools: 'Read, Grep, Glob, Bash, Write, Edit' metadata: author: BWKYD title: 毕业论文排版 description_zh: 按高校标准排版毕业论文,包含封面、摘要、目录、参考文献等 tags: - 论文 - 毕业论文 - 学术 - python-docx - WPS version: 1.0.2 license: MIT

论文排版工具

按高校标准自动排版毕业论文 / 学术论文(.docx)。

每个大学生的论文排版噩梦,到此为止。

When to Use

  • 毕业论文排版(本科/硕士/博士)
  • 学术论文/期刊论文格式化
  • 论文模板生成
  • 已有论文内容需要重新排版

When NOT to Use

  • 一般工作报告 → 使用 wps-report-writer
  • 公文排版 → 使用 wps-gongwen
  • 只需要校对内容 → 使用 wps-proofread

论文通用格式标准

页面设置

纸张:A4 (210mm × 297mm)
上边距:30mm
下边距:25mm
左边距:30mm(装订侧加宽)
右边距:20mm
页眉:15mm,含学校名/论文标题
页脚:页码居中,小五号

字体字号规范

元素字体字号说明
论文题目黑体小二号(18pt)居中,加粗
章标题(第X章)黑体三号(16pt)居中,加粗
节标题(X.X)黑体四号(14pt)左对齐,加粗
小节标题(X.X.X)黑体小四号(12pt)左对齐,加粗
正文宋体小四号(12pt)首行缩进2字符
摘要标题黑体三号(16pt)居中
摘要内容宋体小四号(12pt)
关键词黑体+宋体小四号(12pt)"关键词:"黑体,内容宋体
参考文献宋体五号(10.5pt)
页眉宋体小五号(9pt)
页码Times New Roman小五号(9pt)

行距

正文:1.5倍行距
摘要:1.5倍行距
参考文献:单倍行距
图表标题:单倍行距

工作流程

Step 1: 确认论文信息

必填信息:

  • 论文题目(中文 + 英文)
  • 作者姓名
  • 学校/院系
  • 专业
  • 指导教师
  • 日期
  • 学位类型:本科/硕士/博士

可选信息:

  • 学号
  • 分类号
  • 密级
  • UDC

Step 2: 论文结构

标准毕业论文结构:

[封面]
[独创性声明]
[中文摘要 + 关键词]
[英文摘要 + Keywords]
[目录]
──────────────────
第一章  绪论
  1.1 研究背景
  1.2 研究现状
  1.3 研究内容与方法
  1.4 论文结构
第二章  相关理论与技术
  2.1 ...
第三章  系统设计 / 方法论
  3.1 ...
第四章  实验与分析
  4.1 ...
第五章  总结与展望
  5.1 主要工作总结
  5.2 不足与展望
──────────────────
[参考文献]
[致谢]
[附录](可选)
[个人简历/发表论文](硕博)

Step 3: 生成 .docx 文件

pip install python-docx 2>/dev/null || pip3 install python-docx 2>/dev/null

核心生成逻辑:

from docx import Document
from docx.shared import Pt, Mm, Cm, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.section import WD_ORIENT
from docx.oxml.ns import qn, nsdecls
from docx.oxml import parse_xml, OxmlElement
import os

def create_thesis(info, content=None, output_path=None):
    """
    info = {
        'title_cn': '基于深度学习的图像识别系统研究',
        'title_en': 'Research on Image Recognition System Based on Deep Learning',
        'author': '张三',
        'school': 'XX大学',
        'department': '计算机科学与技术学院',
        'major': '计算机科学与技术',
        'advisor': '李四 教授',
        'degree': '硕士',  # 本科/硕士/博士
        'student_id': '2023XXXX',
        'date': '2026年6月',
    }
    """
    doc = Document()

    # 页面设置
    section = doc.sections[0]
    section.page_width = Mm(210)
    section.page_height = Mm(297)
    section.top_margin = Mm(30)
    section.bottom_margin = Mm(25)
    section.left_margin = Mm(30)
    section.right_margin = Mm(20)

    def set_font(run, name='宋体', size=12, bold=False, color=None):
        run.font.size = Pt(size)
        run.font.name = name
        run._element.rPr.rFonts.set(qn('w:eastAsia'), name)
        run.bold = bold
        if color:
            run.font.color.rgb = color

    def add_heading_cn(text, font_name='黑体', size=16, bold=True,
                       align=WD_ALIGN_PARAGRAPH.CENTER):
        p = doc.add_paragraph()
        p.alignment = align
        p.paragraph_format.space_before = Pt(24)
        p.paragraph_format.space_after = Pt(18)
        p.paragraph_format.line_spacing = Pt(28)
        run = p.add_run(text)
        set_font(run, font_name, size, bold)
        return p

    def add_body(text, indent=True):
        p = doc.add_paragraph()
        p.paragraph_format.line_spacing = Pt(22)
        if indent:
            p.paragraph_format.first_line_indent = Pt(24)
        run = p.add_run(text)
        set_font(run, '宋体', 12)
        return p

    # === 封面 ===
    for _ in range(3):
        doc.add_paragraph()

    # 学校名
    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = p.add_run(info['school'])
    set_font(run, '华文中宋', 26, True)

    # 学位类型
    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    p.paragraph_format.space_before = Pt(10)
    degree_text = {'本科': '本科毕业论文', '硕士': '硕士学位论文',
                   '博士': '博士学位论文'}.get(info['degree'], '学位论文')
    run = p.add_run(degree_text)
    set_font(run, '华文中宋', 22)

    doc.add_paragraph()

    # 论文题目
    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    p.paragraph_format.space_before = Pt(30)
    run = p.add_run(info['title_cn'])
    set_font(run, '黑体', 18, True)

    doc.add_paragraph()

    # 信息表
    fields = [
        ('作    者', info['author']),
        ('学    号', info.get('student_id', '')),
        ('院    系', info.get('department', '')),
        ('专    业', info['major']),
        ('指导教师', info['advisor']),
        ('完成日期', info['date']),
    ]
    for label, value in fields:
        if value:
            p = doc.add_paragraph()
            p.alignment = WD_ALIGN_PARAGRAPH.CENTER
            run1 = p.add_run(f'{label}:')
            set_font(run1, '宋体', 14)
            run2 = p.add_run(value)
            set_font(run2, '宋体', 14)

    doc.add_page_break()

    # === 中文摘要 ===
    add_heading_cn('摘  要', '黑体', 16)
    add_body('(在此输入中文摘要内容,一般300-500字)')
    doc.add_paragraph()
    p = doc.add_paragraph()
    run = p.add_run('关键词:')
    set_font(run, '黑体', 12, True)
    run2 = p.add_run('关键词1;关键词2;关键词3')
    set_font(run2, '宋体', 12)
    doc.add_page_break()

    # === 英文摘要 ===
    add_heading_cn('Abstract', 'Times New Roman', 16)
    add_body('(Type your English abstract here, typically 200-300 words)')
    doc.add_paragraph()
    p = doc.add_paragraph()
    run = p.add_run('Keywords: ')
    run.font.size = Pt(12)
    run.font.name = 'Times New Roman'
    run.bold = True
    run2 = p.add_run('keyword1; keyword2; keyword3')
    run2.font.size = Pt(12)
    run2.font.name = 'Times New Roman'
    doc.add_page_break()

    # === 目录占位 ===
    add_heading_cn('目  录', '黑体', 16)
    add_body('(请在WPS中插入 → 引用 → 目录 → 自动目录)', False)
    doc.add_page_break()

    # === 正文章节框架 ===
    chapters = [
        ('第一章  绪论', ['1.1 研究背景', '1.2 国内外研究现状',
         '1.3 研究内容与方法', '1.4 论文结构安排']),
        ('第二章  相关理论与技术', ['2.1 (根据论文主题填写)']),
        ('第三章  (核心内容章节)', ['3.1 (根据论文主题填写)']),
        ('第四章  实验与结果分析', ['4.1 实验环境', '4.2 实验设计',
         '4.3 结果与分析']),
        ('第五章  总结与展望', ['5.1 主要工作总结', '5.2 不足与展望']),
    ]

    for chapter_title, sections in chapters:
        add_heading_cn(chapter_title, '黑体', 16)
        for sec in sections:
            p = doc.add_paragraph()
            p.paragraph_format.space_before = Pt(12)
            run = p.add_run(sec)
            set_font(run, '黑体', 14, True)
            add_body('(在此输入内容)')
        doc.add_page_break()

    # === 参考文献 ===
    add_heading_cn('参考文献', '黑体', 16)
    refs = [
        '[1] 作者. 论文题目[J]. 期刊名, 年, 卷(期): 起止页.',
        '[2] 作者. 书名[M]. 出版地: 出版社, 年.',
        '[3] Author. Title[J]. Journal, Year, Vol(No): Pages.',
    ]
    for ref in refs:
        p = doc.add_paragraph()
        run = p.add_run(ref)
        set_font(run, '宋体', 10.5)
    doc.add_page_break()

    # === 致谢 ===
    add_heading_cn('致  谢', '黑体', 16)
    add_body('(在此输入致谢内容)')

    # 保存
    if not output_path:
        output_path = f"{info['title_cn'][:20]}_论文.docx"
    doc.save(output_path)
    return os.path.abspath(output_path)

Step 4: 交付

  1. 生成 .docx 论文框架
  2. 提示用户填充各章节内容
  3. 提醒在WPS中插入自动目录
  4. 建议使用WPS的样式功能维护标题层级

参考文献格式(GB/T 7714-2015)

[期刊]  作者. 题名[J]. 刊名, 出版年, 卷(期): 起止页码.
[图书]  作者. 书名[M]. 版次. 出版地: 出版者, 出版年: 页码.
[学位论文] 作者. 题名[D]. 保存地: 保存单位, 年份.
[会议论文] 作者. 题名[C]//会议录. 出版地: 出版者, 年: 页码.
[网络文献] 作者. 题名[EB/OL]. (发布日期)[引用日期]. URL.
[专利]  申请者. 专利名[P]. 专利国: 专利号, 公告日期.
[标准]  标准号. 标准名称[S]. 出版地: 出版者, 年份.

示例

# 生成论文模板
/wps-thesis 基于深度学习的图像识别系统研究,硕士论文,浙江大学计算机学院

# 只要框架
/wps-thesis 帮我生成一份本科毕业论文的排版模板,题目是"中小企业数字化转型研究"

# 排版已有内容
/wps-thesis 帮我把 draft.md 的论文内容排版成标准格式的docx
저장한 Skills