用python批量插入图片到latex中

背景

        最近在用latex做笔记,有时笔记中需要插入较多图片,以手工的方式逐个插入图片费时费力,所以想到用python管理脚本,实现图片的自动插入。

方案

        我使用的解决方案是,为每一个图片生成一个独立的tex文件,放置该图片的引用信息,然后以“/include{img_tex_path.tex}”的方式,把图片插入到latex文件中的对应位置。

        用python为每一个图片生成独立tex文件的脚本如下:

import os 
import glob 

def write_fig_2_tex(fig_path,fig_width=12,fig_caption=""):
    # 图片信息整理
    fig_path = "/".join(os.path.split(fig_path)[:]) # 图片路径标准化
    fig_name = os.path.split(fig_path)[-1].split(".")[0] # 图片name
    fig_label = "fig:"+fig_name # 图片label

    # 创建并打开tex文件
    tex_path = fig_path.split(".")[0]+".tex"
    tex_file = open(tex_path,"w",encoding="utf-8")

    # # 写入图片引用信息--方式1
    # tex_file.write(
    #     "\\begin{{figure}}[htbp]\n"
    #     "\t\centering\n"
    #     "\t\includegraphics[width={}cm]".format(fig_width)+"{"+fig_path+"}\n"
    #     "\t\caption{"+fig_caption+"}\n"
    #     "\t\label{"+fig_label+"}\n"
    #     "\end{figure}\n"
    #     "\clearpage\n"
    # )

    # 写入图片引用信息--方式2
    tex_file.write(
        f"\\begin{{figure}}[htbp]\n"
        f"\t\centering\n"
        f"\t\includegraphics[width={fig_width}cm]{{{fig_path}}}\n"
        f"\t\caption{{{fig_caption}}}\n"
        f"\t\label{{{fig_label}}}\n"
        f"\end{{figure}}\n"
        f"\clearpage\n"
    )
    
    # 关闭tex文件
    tex_file.close()

if __name__ =="__main__":
	fig_dir = "data/chap05/figs/"
	fig_paths = glob.glob(fig_dir+"*.png")

	for fig_path in fig_paths:
		write_fig_2_tex(fig_path,fig_width=12,fig_caption=" ")

        如果想把一个文件夹下的所有图片的latex插入信息放进同一个tex文件中,可参考以下代码:

import os 
import glob 

img_dir = "data/chap01/sections/figs/"
tex_path = img_dir+"/figs.tex"

tex_file = open(tex_path,"w",encoding="utf-8")
#tex_file = open(tex_path,"w+",encoding="utf-8")

for i in range(1,60):
    img_path = img_dir+"/{}.png".format(i)
    if os.path.exists(img_path):
	
		# 图片信息整理
		fig_path = "/".join(os.path.split(img_path)[:]) # 图片路径标准化
		fig_name = os.path.split(fig_path)[-1].split(".")[0] # 图片name
		fig_label = "fig:"+fig_name # 图片label
		fig_width = 12
		fig_caption = f"sub-fig-{i}"
		
		tex_file.write(
			f"\\begin{{figure}}[htbp]\n"
			f"\t\centering\n"
			f"\t\includegraphics[width={fig_width}cm]{{{fig_path}}}\n"
			f"\t\caption{{{fig_caption}}}\n"
			f"\t\label{{{fig_label}}}\n"
			f"\end{{figure}}\n"
			f"\clearpage\n"
		)
tex_file.close()

扩展

        类似地,可以用python批量/自动处理其他latex文件或命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值