使用论文公式神器Mathpix spin,并将LaTeX公式拷贝到Word中

本文介绍Mathpixspin,一款能将公式截图快速转换为LaTex格式的工具,适用于markdown、Latex和Word等环境。文章详细讲解了下载、使用方法及如何在Word中展示公式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文推荐一款论文公式神器——Mathpix spin,它的功能是将你看到的公式截图翻译为LaTex格式,进而粘贴到如markdown等编辑器中,转化为公式。再也不用担心输入公式啦。
1、Mathpix spin下载方式:

您可以直接去Mathpix Snip的官网下载,官网地址:https://mathpix.com/
在这里插入图片描述
如图所示,选择适合自己的版本下载安装包再安装即可,启动该程序后隐藏图标显示如下:
在这里插入图片描述
2、Mathpix spin使用方式:

1)按快捷键“Alt+Ctrl+M”,即可对想要的公式屏幕截图。(备注:Mathpix需联网,自动翻译成LaTeX文本)
2)鼠标左键点击下方第二、三行LaTeX文本的copy,无需再“Ctrl+C”,就可以直接复制到其他环境,如Latex、markdown、word。(注意:第二行一个$表示公式为行内公式,行内公式自然是不会换行的了;第三行两个$则表示行间公式)
在这里插入图片描述
注意:若是复制到markdown可以直接显示为公式,如果复制到word中需要进行下边3中所述的操作。

3、LaTeX拷贝到Word中

Mathpix spin只是将公式截图翻译成LaTeX代码形式,要在word中显示成公式有两种方法:

方法1、借助Markdown的在线编辑器

编辑器链接:https://stackedit.io/editor

  • 打开链接,左边输入相应的LaTeX公式,右边自动出现对应的公式。操作图如下:

在这里插入图片描述

  • 右键点击右边公式选择Show Math As,MathML Code,全选复制呈现出的MathML
    Code并将其粘贴到word中,粘贴选项选择 “只保留文本”。操作图如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
方法2:借助与公式编辑器,一键转化为公式。

因为MathType费用问题,选择使用国内的一款软件AxMath,破解版下载地址: https://pan.baidu.com/s/1ej8clyZkLM2YYUO8hb9TRA 提取码: c7y5

  • 下载后,打开压缩包,双击AxMath2.5.exe安装,完成后退出程序,然后将Crack文件夹里的AxMath.exe复制到软件安装目录下即可完成破解。

在这里插入图片描述

  • 打开word,粘贴并选中LaTex代码,选择 AxMath 中的公式转换 ->
    将LaTex代码转换为AxMath公式
    ,即可呈现你想要的公式。操作图如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<think>我们正在使用MM32SPIN0280微控制器,需要将printf重定向到UART输出。根据引用[1]中的示例,我们可以通过重写fputc函数来实现。同时,引用[2]提到,任何数据都可以通过字节流发送,因此printf输出的字符串可以逐个字符通过UART发送。 步骤: 1. 配置MM32SPIN0280的UART外设(这里假设使用UART1,具体根据硬件连接选择)。 2. 实现fputc函数,将字符通过UART发送。 3. 在工程设置中启用微库(MicroLIB)以支持printf重定向(如果使用Keil MDK)。 具体实现: 第一步:配置UART 首先,我们需要初始化UART。以MM32SPIN0280的UART1为例,配置波特率、数据位、停止位等。 ```c #include "mm32_device.h" #include "mm32_gpio.h" #include "mm32_uart.h" void UART1_Init(void) { // 使能UART1和GPIOA时钟 RCC->APB2ENR |= RCC_APB2ENR_UART1EN; RCC->AHBENR |= RCC_AHBENR_GPIOAEN; // 配置PA9为UART1_TX,复用推挽输出 GPIO_Init_TypeDef gpioInit; gpioInit.Pins = GPIO_PIN_9; gpioInit.PinMode = GPIO_PinMode_AF_PushPull; gpioInit.Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &gpioInit); // 配置PA10为UART1_RX,浮空输入 gpioInit.Pins = GPIO_PIN_10; gpioInit.PinMode = GPIO_PinMode_In_Floating; GPIO_Init(GPIOA, &gpioInit); // 配置UART1 UART_Init_TypeDef uartInit; uartInit.BaudRate = 115200; uartInit.WordLength = UART_WordLength_8b; uartInit.StopBits = UART_StopBits_1; uartInit.Parity = UART_Parity_No; uartInit.Mode = UART_Mode_Tx | UART_Mode_Rx; uartInit.HWFlowControl = UART_HWFlowControl_None; UART_Init(UART1, &uartInit); // 使能UART1 UART_Cmd(UART1, ENABLE); } ``` 第二步:重写fputc函数 根据引用[1]中的示例,我们重写fputc函数,将字符通过UART1发送。 ```c #include <stdio.h> int fputc(int ch, FILE *f) { // 发送字符到UART1 while (!UART_GetFlagStatus(UART1, UART_FLAG_TXE)); // 等待发送缓冲区空 UART_SendData(UART1, (uint8_t)ch); return ch; } ``` 第三步:在Keil中启用MicroLIB(如果使用Keil) - 打开Options for Target对话框(Alt+F7) - 选择Target选项卡,勾选"Use MicroLIB" 第四步:使用printf 在初始化UART后,就可以使用printf了。 ```c int main(void) { UART1_Init(); // 初始化UART1 printf("Hello, MM32SPIN0280!\r\n"); while (1) { // 主循环 } } ``` 注意事项: 1. 如果使用其他开发环境(如IAR),可能需要不同的库支持设置。 2. 如果打印浮点数,需要确保在工程设置中启用了浮点数打印(在Keil中,Target选项卡下勾选"Use MicroLIB"确保在Linker设置中选择了支持浮点数的库)。 3. 如果出现乱码,检查波特率设置是否正确,以及系统时钟配置是否准确。 以上就是在MM32SPIN0280上实现printf重定向到UART的方法。 §§相关问题§§ 1. 如何在MM32SPIN0280上配置UART以接收数据? 2. 如何重定向scanf函数以从UART读取输入? 3. 在MM32SPIN0280上使用printf输出浮点数需要注意什么?</think>### 在 MM32SPIN0280 上实现 printf 重定向到 UART 的完整指南 #### 步骤 1:配置 UART 硬件 ```c #include "mm32_device.h" #include "mm32_gpio.h" #include "mm32_uart.h" void UART1_Init(void) { // 1. 使能时钟 RCC->APB2ENR |= RCC_APB2ENR_UART1EN; // UART1 时钟 RCC->AHBENR |= RCC_AHBENR_GPIOAEN; // GPIOA 时钟 // 2. 配置 GPIO (PA9-TX, PA10-RX) GPIO_Init_TypeDef gpioInit; gpioInit.Pins = GPIO_PIN_9 | GPIO_PIN_10; gpioInit.PinMode = GPIO_PinMode_AF_PushPull; // 复用推挽输出 gpioInit.Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &gpioInit); // 3. UART 参数配置 UART_Init_TypeDef uartInit; uartInit.BaudRate = 115200; uartInit.WordLength = UART_WordLength_8b; uartInit.StopBits = UART_StopBits_1; uartInit.Parity = UART_Parity_No; uartInit.Mode = UART_Mode_Tx | UART_Mode_Rx; uartInit.HWFlowControl = UART_HWFlowControl_None; UART_Init(UART1, &uartInit); UART_Cmd(UART1, ENABLE); // 使能 UART } ``` #### 步骤 2:实现 fputc 重定向 ```c #include <stdio.h> // 重定向 fputc 函数 int fputc(int ch, FILE *f) { // 等待发送缓冲区为空 while(!(UART1->SR & UART_SR_TXE)); // 写入数据寄存器 UART1->DR = (uint8_t)ch; return ch; } ``` #### 步骤 3:工程配置(Keil MDK) 1. **启用 MicroLIB**: - Project → Options for Target → Target 选项卡 - 勾选 "Use MicroLIB" 2. **浮点数支持**(可选): - 在同一个选项卡中勾选 "Use Float with Printf" #### 步骤 4:验证使用 ```c int main(void) { UART1_Init(); // 初始化 UART printf("MM32SPIN0280 UART 重定向测试\n"); printf("系统时钟: %d Hz\n", SystemCoreClock); printf("浮点数测试: π ≈ %.4f\n", 3.14159); while(1) { // 主循环 } } ``` #### 关键注意事项 1. **UART 引脚映射**: - 根据实际硬件连接调整 GPIO 引脚 - 参考数据手册的复用功能映射表 2. **性能优化**: ```c // 使用静态缓冲区减少栈使用 static char printf_buf[128]; setvbuf(stdout, printf_buf, _IOFBF, sizeof(printf_buf)); ``` 3. **中断安全**: ```c // 在中断服务程序中避免直接使用 printf void USART1_IRQHandler(void) { // 接收数据到缓冲区 // 在主循环中处理打印 } ``` 4. **波特率校准**: - 确保系统时钟配置正确 - 使用公式计算波特率:$$ \text{BRR} = \frac{\text{f}_{\text{CLK}}}{\text{BaudRate}} $$ #### 故障排除 | 问题现象 | 解决方案 | |------------------|-----------------------------------| | 无输出 | 检查 MicroLIB 是否启用,TX 引脚连接 | | 乱码 | 验证波特率和时钟配置 | | 浮点数不显示 | 启用 "Use Float with Printf" | | 程序卡死 | 增大栈空间,避免缓冲区溢出 | > **安全提示**:避免在中断服务程序中使用 `printf`,建议使用环形缓冲区+后台处理机制[^1]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值