每日一化学

  • 测试
  • 难点
  • 1.如何提供可下载的word文件
  • 2.word文件排版
  • 3.如何生成化学方程式
  • 首页
  • 文章归档
  • 初中化学
  • 付费资料目录
  • 九化资料下载
  • 关于我
  • 管理员
扫码关注 每日一化学

利用豆包生成,并下载word文件

  • 没有句号
  • 2025-12-26
  • 0

测试

你想利用AI生成下面这份文件吗?

自动化完成并提供word文件可以下载

你只需要写提示词即可,或者简单的复制粘贴即可

202512251

AI工具豆包 word版本:2016及以上

先测试一下这份提示词,觉得有用再继续往后看

1.复制下面的内容,打开豆包,粘贴下面的提示词

生成人教版九年级化学初中化学化学方程式
要求:以表格的形式 包含文字描述 现象 化学方程式三列
以html的形式呈现预览 并提供word文档下载按钮  html页面不需要渲染 只提供一个下载按钮即可,确保下载按钮可用

## 文本处理

清除word所有格式,以原始格式展示即可 字号:小四;字体:宋体 英文用Times New Roman
化学方程式中条件部分字号:五号

## 实现方案

前端生成Word文档核心提示词
技术核心:Blob对象创建文件、Object URL下载、HTML转Word格式、CSS样式内联
关键实现:URL.createObjectURL()、download属性、Data URL备选、错误处理
安全考虑:避免浏览器报毒、多重下载保障、内存泄漏防护
格式要求:Word兼容HTML、样式保持、响应式设计
应用场景:在线文档生成、报告导出、内容下载
注意事项:样式内联、及时释放URL、兼容性测试

## 化学方程式的处理:
请按照以下LaTeX格式生成化学方程式:

格式模板:$\mathrm{反应物\frac{\underline{\ {条件}\ }}{\ }生成物}$

具体要求:
1. 整个方程式必须用 $\mathrm{...}$ 包装
2. 反应条件必须使用 \frac{\underline{\ {条件}\ }}{\ } 格式
3. 条件文字前后必须有空格:\ {条件内容}\ 
4. 气体用 \uparrow 表示,沉淀用 \downarrow 表示
5. 如果没有条件 条件用6个空格表示
6. 条件为加热时,用 \Delta 表示
7. 条件必须要用{}包裹起来
8. 系数和下标使用标准LaTeX语法

示例参考:
- $\mathrm{2H_{2}O\frac{\underline{\ {通电}\ }}{\ }2H_{2} \uparrow + O_{2} \uparrow}$
- $\mathrm{C + O_{2}\frac{\underline{\ {点燃}\ }}{\ }CO_{2}}$
- $\mathrm{2Mg + O_{2}\frac{\underline{\ {点燃}\ }}{\ }2MgO}$
- $\mathrm{4Al + 3O_{2}\frac{\underline{\ \ \ \ \ \ }}{\ }2Al_{2}O_{3}}$

特别需求:在生成的word文件中 化学方程式必须以latex公式代码的形式呈现

2.点击代码框右上角的预览,点击下载word文档,会得到一份word文件

3.打开word文件,这时候化学方程式是代码形式,接下来将化学方程式渲染,按Alt+F11​,复制以下代码,粘贴并运行(按F5可直接运行)

这个配置完成以后,不需要重复配置,可以一直使用,通过宏运行

Sub 公式转化并自动调整字体()
    Dim regEx As Object
    Dim matches As Object
    Dim match As Object
    Dim rng As Range
    Dim formulaText As String
    Dim isDisplayMode As Boolean

    ' 创建正则表达式对象
    Set regEx = CreateObject("VBScript.RegExp")
    With regEx
        .Global = True
        ' 匹配 $$独立公式$$ 和 $行内公式$
        .Pattern = "\$\$([^$]+)\$\$|\$([^$]+)\$"
    End With

    ' 关闭屏幕更新以提高性能
    Application.ScreenUpdating = False

    ' 在整个文档内容中执行正则匹配
    Set matches = regEx.Execute(ActiveDocument.Content.Text)

    ' 从后往前处理,避免替换导致的位置偏移
    Dim i As Long
    For i = matches.Count - 1 To 0 Step -1
        Set match = matches(i)

        ' 判断是独立公式还是行内公式
        If Not match.SubMatches(0) = "" Then
            ' $$独立公式$$
            formulaText = Trim(match.SubMatches(0))
            isDisplayMode = True
        Else
            ' $行内公式$
            formulaText = Trim(match.SubMatches(1))
            isDisplayMode = False
        End If

        ' 查找匹配的公式范围
        Set rng = ActiveDocument.Content
        With rng.Find
            .Text = match.Value  ' 查找完整的匹配文本(包括$或$$)
            .Forward = True
            .Wrap = wdFindStop
            If .Execute Then
                ' 移除$符号,只保留公式内容
                rng.Text = formulaText

                ' 将文本转换为Word公式
                rng.OMaths.Add rng
                rng.OMaths.BuildUp

                ' 将公式转换为普通文本
                rng.OMaths(1).ConvertToNormalText
            End If
        End With
    Next i

    ' 将整个文档的字体设置为 Times New Roman
    ActiveDocument.Content.Font.Name = "Times New Roman"

    ' 恢复屏幕更新
    Application.ScreenUpdating = True

    MsgBox "公式已转换为普通文本,并且整个文档的字体已设置为 Times New Roman!共处理 " & matches.Count & " 个公式。"
End Sub

难点

1.如何提供可下载的word文件

这里主要利用html、css、js语法去生成可下载的word文件

以html的形式呈现预览 并提供word文档下载按钮,确保下载按钮可用

## 文本处理

自己提格式要求:见word文件排版

## 实现方案

前端生成Word文档核心提示词
技术核心:Blob对象创建文件、Object URL下载、HTML转Word格式、CSS样式内联
关键实现:URL.createObjectURL()、download属性、Data URL备选、错误处理
安全考虑:避免浏览器报毒、多重下载保障、内存泄漏防护
格式要求:Word兼容HTML、样式保持、响应式设计
应用场景:在线文档生成、报告导出、内容下载
注意事项:样式内联、及时释放URL、兼容性测试

2.word文件排版

AI自己生成的word文件会带有各种花里胡哨的排版

如果喜欢花里胡哨的排版,可以不做限制

如果不喜欢,可以修改以下提示词自定义

## 文本处理

清除word所有格式,以原始格式展示即可

字体:中文:宋体;英文:Times New Roman

一级标题:
字号:小二

二级标题:
字号:四号

正文:
字号:小四

其他:

3.如何生成化学方程式

主要利用Word2016以后支持latex公式,我们先用AI生成公式代码,然后用word自带的VBA语法一件渲染成化学方程式

(1)生成latex公式提示词

# 化学方程式

请按照以下LaTeX格式生成化学方程式:

格式模板:$\mathrm{反应物\frac{\underline{\ {条件}\ }}{\ }生成物}$

具体要求:
1. 整个方程式必须用 $\mathrm{...}$ 包装
2. 反应条件必须使用 \frac{\underline{\ {条件}\ }}{\ } 格式
3. 条件文字前后必须有空格:\ {条件内容}\ 
4. 气体用 \uparrow 表示,沉淀用 \downarrow 表示
5. 如果没有条件 条件用6个空格表示
6. 条件为加热时,用 \Delta 表示
7. 条件必须要用{}包裹起来
8. 系数和下标使用标准LaTeX语法

示例参考:
- $\mathrm{2H_{2}O\frac{\underline{\ {通电}\ }}{\ }2H_{2} \uparrow + O_{2} \uparrow}$
- $\mathrm{C + O_{2}\frac{\underline{\ {点燃}\ }}{\ }CO_{2}}$
- $\mathrm{2Mg + O_{2}\frac{\underline{\ {点燃}\ }}{\ }2MgO}$
- $\mathrm{4Al + 3O_{2}\frac{\underline{\ \ \ \ \ \ }}{\ }2Al_{2}O_{3}}$

特别需求:在生成的word文件中 化学方程式必须以latex公式代码的形式呈现

(2)利用VBA一件渲染化学方程式

' 利用VBA代码,将用$$或$包裹的公式直接转化成word公式
Sub ConvertLatexToEquation()
    Dim regEx As Object
    Dim matches As Object
    Dim match As Object
    Dim rng As Range
    Dim formulaText As String
    Dim isDisplayMode As Boolean

    ' 创建正则表达式对象
    Set regEx = CreateObject("VBScript.RegExp")
    With regEx
        .Global = True
        ' 匹配 $$独立公式$$ 和 $行内公式$
        .Pattern = "\$\$([^$]+)\$\$|\$([^$]+)\$"
    End With

    ' 关闭屏幕更新以提高性能
    Application.ScreenUpdating = False

    ' 在整个文档内容中执行正则匹配
    Set matches = regEx.Execute(ActiveDocument.Content.Text)

    ' 从后往前处理,避免替换导致的位置偏移
    Dim i As Long
    For i = matches.Count - 1 To 0 Step -1
        Set match = matches(i)

        ' 判断是独立公式还是行内公式
        If Not match.SubMatches(0) = "" Then
            ' $$独立公式$$
            formulaText = Trim(match.SubMatches(0))
            isDisplayMode = True
        Else
            ' $行内公式$
            formulaText = Trim(match.SubMatches(1))
            isDisplayMode = False
        End If

        Set rng = ActiveDocument.Range
        With rng.Find
            .Text = match.Value  ' 查找完整的匹配文本(包括$或$$)
            .Forward = True
            .Wrap = wdFindStop
            If .Execute Then
                ' 移除$符号,只保留公式内容
                rng.Text = formulaText

                ' 将文本转换为Word公式
                rng.OMaths.Add rng
                rng.OMaths.BuildUp

                ' 如果是独立公式,设置为居中显示
                If isDisplayMode Then
                    rng.ParagraphFormat.Alignment = wdAlignParagraphCenter
                End If
            End If
        End With
    Next i

    ' 恢复屏幕更新
    Application.ScreenUpdating = True

    MsgBox "公式转换完成!共处理 " & matches.Count & " 个公式。"
End Sub

(3)利用VBA渲染普通公式

' 支持普通的公式转换(好用一点)
Sub 公式转换()
    Dim rng As Range
    Dim startPos As Long, endPos As Long
    Dim formulaText As String
    Dim isDisplayMode As Boolean
    Dim found As Boolean
    Dim count As Integer

    Application.ScreenUpdating = False
    Set rng = ActiveDocument.Content
    count = 0

    ' 首先处理独立公式 $$
    Do
        found = False
        Set rng = ActiveDocument.Content

        With rng.Find
            .text = "$$"
            .Forward = True
            .Wrap = wdFindStop
            .Execute
        End With

        If rng.Find.found Then
            startPos = rng.Start
            rng.Collapse wdCollapseEnd

            ' 查找结束的 $$
            With rng.Find
                .text = "$$"
                .Forward = True
                .Wrap = wdFindStop
                .Execute
            End With

            If rng.Find.found Then
                endPos = rng.End

                ' 提取公式文本
                Set rng = ActiveDocument.Range(startPos, endPos)
                formulaText = Mid(rng.text, 3, Len(rng.text) - 4) ' 移除前后的 $$
                formulaText = Trim(formulaText)

                ' 替换为公式
                rng.text = formulaText

                ' 转换为Word公式
                On Error Resume Next
                Set om = rng.OMaths.Add(rng)
                If Err.Number = 0 Then
                    rng.OMaths(1).BuildUp
                    rng.ParagraphFormat.Alignment = wdAlignParagraphCenter
                    count = count + 1
                End If
                On Error GoTo 0

                found = True
            End If
        End If
    Loop While found

    ' 然后处理行内公式 $
    Do
        found = False
        Set rng = ActiveDocument.Content

        With rng.Find
            .text = "$"
            .Forward = True
            .Wrap = wdFindStop
            .Execute
        End With

        If rng.Find.found Then
            startPos = rng.Start
            rng.Collapse wdCollapseEnd

            ' 查找结束的 $
            With rng.Find
                .text = "$"
                .Forward = True
                .Wrap = wdFindStop
                .Execute
            End With

            If rng.Find.found Then
                endPos = rng.End

                ' 提取公式文本
                Set rng = ActiveDocument.Range(startPos, endPos)
                formulaText = Mid(rng.text, 2, Len(rng.text) - 2) ' 移除前后的 $
                formulaText = Trim(formulaText)

                ' 替换为公式
                rng.text = formulaText

                ' 转换为Word公式
                On Error Resume Next
                Set om = rng.OMaths.Add(rng)
                If Err.Number = 0 Then
                    rng.OMaths(1).BuildUp
                    count = count + 1
                End If
                On Error GoTo 0

                found = True
            End If
        End If
    Loop While found

    Application.ScreenUpdating = True
    MsgBox "公式转换完成!共处理 " & count & " 个公式。"
End Sub
© 2026 每日一化学
Theme by Wing
鄂ICP备2022018357号-1 鄂公网安备42900502002636号
  • {{ item.name }}
  • {{ item.name }}