在Latex中优雅的插入svg图片(Ubuntu22.04)

文章目录

  • 一、前言
  • 二、准备工作
  • 三、脚本编程
  • 四、结论


一、前言

LaTeX \LaTeX LATEX 中,插入图片常用的为 figure 环境加 \includegraphics 命令:

\begin{figure}[!htbp]\centering\includegraphics[width=\textwidth]{图片名.jpg/jpeg/png/pdf}\caption{标题}\label{标签}
\end{figure}

然而如果我们的图片为 SVG 图,直接进行插入是会报错的:

在这里插入图片描述
主要报错信息如下:

! Unable to read an entire line---bufsize=200000. Please increase buf_size in texmf.cnf.

百度是能找到很多 svg 图转其他格式图片的方法的,用 Python 也能做,这里主要介绍结合 bash 脚本进行批量处理。


二、准备工作

首先使用 apt-get 安装 inkscape 工具:

sudo apt-get install inkscape -y

其主要思路就是使用 inkscape 工具将目录下的 svg 图片逐一转换为 pdf 文件,这样便能通过上述 \includegraphics 命令插入:

inkscape --export-filename=图片名.pdf 图片名.svg

三、脚本编程

对于一整个文件夹的 svg 图片,我们希望能通过脚本实现自动将其全部转换为 pdf 文件以方便我们插入,在 svg 图片目录下打开终端,新建文件 convert_svg_to_pdf.sh

vim convert_svg_to_pdf.sh

具体 bash 语句如下:

#!/bin/bash# 遍历当前目录下的所有.svg文件
for file in *.svg; do# 检查文件是否存在if [ -f "$file" ]; then# 移除文件扩展名,准备输出文件名base_name=$(basename "$file" .svg)# 使用Inkscape命令转换文件inkscape --export-filename="${base_name}.pdf" "$file"elseecho "$file does not exist."fi
done

按下 esc 键,输入 :wq,保存并退出,通过如下命令运行此脚本:

bash convert_svg_to_pdf.sh

可以看到目录下的 svg 图片都生成了对应的 pdf 文件,如此便可通过如下命令插入 LaTeX \LaTeX LATEX 中:

\begin{figure}[!htbp]\centering\includegraphics[width=\textwidth]{图片名.pdf}\caption{标题}\label{标签}
\end{figure}

四、结论

相比于将 svg 图片通过网页转为其他格式图片,此方法能批量处理文件夹下的大量 svg 图片,方便快捷,就是会生成新的 pdf 文件占用内存。


谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/548912.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode热题100】104. 二叉树的最大深度(二叉树)

一.题目要求 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 二.题目难度 简单 三.输入样例 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3 示例 2&am…

【文本挖掘与文本分析】上机实验二

实验目的和要求 了解ROSTContentMining5.8可视化标签云的基本操作;采集某部小说进行分词与词频分析基于某背景图制作词云 或采集二十大报告进行分词与词频分析;基于某背景图制作二十大报告的词云; 数据来源 《射雕英雄传》或《鬼吹灯之精绝…

Java后端面试:框架篇高频面试(Spring、SpringMVC、SpringBoot、MyBatis)

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:Java后端面试:MySQL面试篇(底层事务、SQL调优) 📚订阅专栏:Java后端面…

数字化转型导师坚鹏:人工智能在金融机构数字化转型中的应用

人工智能在金融机构数字化转型中的应用 课程背景: 金融机构数字化转型离不开人工智能,在金融机构数字化转型中,人工智能起到至关重要的作用,很多机构存在以下问题: 不清楚人工智能产业对我们有什么影响?…

C++_day4:成员函数版本和全局函数版本实现算术运算符的重载

1、成员函数版本和全局函数版本实现算术运算符的重载 程序代码&#xff1a; #include <iostream>using namespace std;//封装一个 名叫Number 的类 class Number {//全局函数做友元&#xff0c;让一些函数访问一个类的私有数据成员friend const Number operator-(const…

JavaWeb后端——分层解耦 IOC DI

分层/三层架构概述 三层架构&#xff1a;Controller、Service、Dao 解耦/IOC&DI概述 分层解耦 容器称为&#xff1a;IOC容器/Spring容器 IOC 容器中创建&#xff0c;管理的对象&#xff0c;称为&#xff1a;bean 对象 IOC&DI入门 实现 IOC&DI 需要的注解&#…

产品经理:前端实现网页防篡改,你会怎么做?

公众号&#xff1a;程序员白特&#xff0c;欢迎一起交流学习~ 如果产品经理要求系统中某个页面的输入框做防止篡改处理&#xff0c;你会怎么做呢&#xff1f; 需求梳理 首先&#xff0c;什么是防篡改&#xff1f; 简单来说&#xff0c;就是用户输入input框值&#xff0c;我们…

TrueNAS怎么设置中文,最新2024版本安装详细说明

首先我们做好安装前的准备工作 1&#xff0c;ISO镜像安装包 2&#xff0c;虚拟机&#xff08;建议使用ESXI虚拟机环境&#xff09; 如果是物理机安装&#xff0c;建议先给底层安装虚拟机系统esxi&#xff0c;再在上面安装方便以后的管理&#xff0c;如果你想物理机直接安装&a…

【SpringCloud】使用Seata实现分布式事务

目录 一、Seata 框架的需求背景二、Seata 事务模式与架构2.1 Seata 组成2.2 Seata 事务模式 三、Seata 实战演示3.1 部署 Seata Server3.1.1 下载 Seata Server3.1.2 更改 Seata Server 配置3.1.3 创建 Seata Server 所需的数据库、数据库表3.1.4 启动 Seata Server 3.2 Seata …

二叉搜索树题目:将有序链表转换为二叉搜索树

文章目录 题目标题和出处难度题目描述要求示例数据范围 前言解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;将有序链表转换为二叉搜索树 出处&#xff1a;109. 将有序链表转换为二叉搜索树 难度 5 级 题目描述 要求 …

士兵排列问题

解法一&#xff1a; deque实现队头入队和队尾入队即可得到编号排列&#xff0c;每个士兵有二个属性&#xff1a;编号、能力值。 #include<iostream> #include<algorithm> #include<deque> #include<vector> using namespace std; #define endl \n st…

苍穹外卖-day04:项目实战-套餐管理(新增套餐,分页查询套餐,删除套餐,修改套餐,起售停售套餐)业务类似于菜品模块

苍穹外卖-day04 课程内容 新增套餐套餐分页查询删除套餐修改套餐起售停售套餐 要求&#xff1a; 根据产品原型进行需求分析&#xff0c;分析出业务规则设计接口梳理表之间的关系&#xff08;分类表、菜品表、套餐表、口味表、套餐菜品关系表&#xff09;根据接口设计进行代…