在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"
else
echo "$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 文件占用内存。
谢谢!