当前位置: 首页 > news >正文

LaTeX 绘图单位避坑指南:为什么你的 Draw.io / Matplotlib 导入后字体总是不对?

💡 导读
在学术论文排版中,你是否遇到过这些诡异现象:Draw.io 里设定的 10pt 字体,插入 LaTeX 后变小了?Matplotlib 导出的图表,缩放后线条粗细与正文不协调?
这一切的罪魁祸首,是TeX pt、PostScript bp 与像素 px 之间的单位混淆。本文用 3 个实验证明差异根源,并给出“所见即所得”的终极修正方案

一、核心结论:三种 “pt” 的真面目

软件/环境显示的单位实际物理含义与英寸的换算
LaTeXptTeX point (真正的 pt)1 inch =72.27pt
PDF / Word / MatplotlibptBig point (bp)1 inch =72bp
Draw.ioptPixel (px)1 inch =100px (默认DPI)
📏 统一换算基准: 1 inch = 25.4 mm = 72.27 pt (TeX pt) = 72 bp (PostScript / PDF / Word / Matplotlib) = 100 px (Draw.io pt, 默认 DPI=100)

⚠️关键陷阱:当你在 WPS/PDF 阅读器中看到 “7200 pt” 时,它实际上是7200 bp。而 LaTeX 读取同一个 PDF 时,会将其视为 7200 TeX pt,导致物理尺寸被放大了72.27/72≈1.0037572.27/72 \approx 1.0037572.27/721.00375倍。

二、三个实验验证单位差异

实验 1:LaTeX pt ≠ WPS pt

  1. 在 LaTeX 中插入图片:\includegraphics[width=1.0\textwidth]{fig.pdf}
  2. 编译前输出宽度:\typeout{TEXTWIDTH = \the\textwidth}→ 得到469.75502pt(TeX pt)
  3. 用 WPS 打开生成的 PDF,点击图片查看属性 → 显示468.0pt(实为 bp)
  4. 计算比值:469.755/468.0≈72.27/72469.755 / 468.0 \approx 72.27 / 72469.755/468.072.27/72

实验 2:Draw.io 内部 pt = px

  1. 在 Draw.io 创建 10000×10000 pt 画布,导出 PDF(缩放 100%)
  2. 切换单位验证:
    • pt 模式:10000 × 10000
    • inch 模式:100.000 × 100.000→ 证明100 pt = 1 inch
    • mm 模式:2540.0 × 2540.0→ 与 100 inch = 2540 mm 完全吻合
  3. 结论:Draw.io 的 “pt” 本质是像素,且默认 DPI = 100。

实验 3:各 PDF 查看器的单位混乱

同一份 10000 Draw.io pt (= 7200 bp) 的 PDF,各软件文档属性显示:

查看器显示尺寸是否正确备注
WPS254.068 cm / 7200 ptpt 实为 bp
Chrome2541 mm正确识别 bp
VSCode2,540.7 mm正确识别 bp
Edge3388 mm将 bp 误作 CSS px (96 DPI)

🔍Edge 异常解析:Edge 将 7200 bp 当作 CSS px 处理:7200×9672=9600 px7200 \times \frac{96}{72} = 9600 \text{ px}7200×7296=9600px,再转毫米:9600×25.496≈3388 mm9600 \times \frac{25.4}{96} \approx 3388 \text{ mm}9600×9625.43388mm

三、Draw.io → LaTeX 完美导入方案

方案 A:人工预修正(适合固定尺寸插入)

适用场景:不使用[width=...]参数,希望原始尺寸直接匹配 TeX pt

  • 操作:Draw.io 中所有尺寸、字体、线宽 ×1.384(100/72.27100/72.27100/72.27)
  • 原理链
    N×10072.27 px→导出PDFN×7272.27 bp→LaTeX读取N TeX ptN \times \tfrac{100}{72.27} \text{ px} \xrightarrow{\text{导出PDF}} N \times \tfrac{72}{72.27} \text{ bp} \xrightarrow{\text{LaTeX读取}} N \text{ TeX pt}N×72.27100px导出PDFN×72.2772bpLaTeX读取NTeX pt
  • 注:若目标是 WPS/Word,乘数改为100/72≈1.389100/72 \approx 1.389100/721.389

⭐ 方案 B:宽度对齐法(强烈推荐,所见即所得)

适用场景:使用[width=x\textwidth]缩放,要求字体/线宽数值完美还原

  • 前提:Draw.io 画布宽度数值NNN= LaTeX 目标宽度数值(TeX pt)

    📌示例\textwidth= 400 pt,使用[width=0.5\textwidth]→ 目标数值 = 200 → Draw.io 画布宽度设为200

  • 操作:Draw.io 按真实需求设定 → 导出 PDF →\includegraphics[width=0.5\textwidth]{fig.pdf}
  • 原理
    1. 导出 PDF 宽度 =N×72100N \times \frac{72}{100}N×10072bp =N×7272.27N \times \frac{72}{72.27}N×72.2772TeX pt
    2. LaTeX 目标宽度 =NNNTeX pt
    3. 缩放因子 =NN×72/72.27=72.2772\frac{N}{N \times 72/72.27} = \frac{72.27}{72}N×72/72.27N=7272.27
    4. 最终显示 = 设定值×7272.27×72.2772\times \frac{72}{72.27} \times \frac{72.27}{72}×72.2772×7272.27=设定值
  • 优势:全局等比缩放,字体、线宽自动转换为 TeX pt,零手动换算

四、Matplotlib → LaTeX 完美导入方案

⚠️单位警告:Matplotlib 与 Draw.io 不同!

  • figsize单位:标准英寸 (inch)
  • fontsize/linewidth单位:bp (1/72 inch)

⭐ 宽度对齐法(所见即所得)

  • 前提figsize宽度(英寸) ×72= LaTeX 目标宽度数值(TeX pt)

    📌示例:目标宽度 200 TeX pt →figsize宽度 =200/72≈2.778200 / 72 \approx \mathbf{2.778}200/722.778英寸

  • 操作
    fig,ax=plt.subplots(figsize=(2.778,2.0))# 宽度精确对齐ax.plot(...,linewidth=1.5)# 设定值即最终 TeX pt 值ax.set_title("Title",fontsize=12)# 12 bp → 缩放后 = 12 TeX ptfig.savefig("fig.pdf",bbox_inches='tight')
http://www.gsyq.cn/news/1497499.html

相关文章:

  • 2026年效果最好的GEO服务商五强权威盘点:从技术到服务的全景对比 · 第 191 期
  • 酒泉市2026年本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 干豆腐啊
  • 芜湖市2026年本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 三大殿
  • 海狮企鹅萌宠表演亮点与短板揭秘!动物技能出色,场馆环境待提
  • 从零开始 - 在GitHub创建项目并上传代码
  • 阿萨德test
  • 辽源市2026年本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 干豆腐啊
  • 第1章 认识鸿蒙元服务(零基础入门)
  • 计算机小程序毕设实战-基于springboot+微信小程序的演唱会售票系统小程序【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 微信搜一搜正在成为小程序最大的免费流量入口
  • ROS2 入门教程第一篇:配置 ROS2 环境
  • 2026年上海路面养护洒水车出租公司电话排名:高效降尘/绿化浇灌/工地清洁,专业租赁公司实力解析 - 企业推荐官【官方】
  • 2026年AI优化机构十强榜单揭晓:玖叁鹿GEO登顶行业榜首,浙誉翎峰科技、浙江玖叁鹿科技紧随其后 - 玖叁鹿
  • 鸿蒙新特性——TimePicker 与 TextClock 组件深度解析
  • 国内正规考研培训机构排行:核心服务维度实测对比 - 奔跑123
  • 2026武汉商城小程序开发制作公司哪家好? - 奔跑123
  • 2026年国内正规考研培训机构实力排行一览 - 奔跑123
  • 专业的水洗设备哪家好
  • Eclipse 透视图(Perspective)
  • 肇庆市2026年本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 三大殿
  • 网络测试仪RENIX实战:从RAW流发送到Wireshark分析,一条龙排错指南
  • metadef元数据定义框架深度解读:自定义算子开发与昇腾NPU扩展完全指南
  • 关于占卜到一定境界的问题
  • selenium+python做web端自动化测试框架与实例详解
  • 信息学奥赛选手必看:如何用C++ STL的sort函数优雅解决‘成绩排名’类问题(含自定义比较函数详解)
  • 2026国内正规考研培训机构综合实力排行盘点 - 奔跑123
  • 避开CODESYS多轴编程的坑:从MC_Power参数到Cam表设置的完整避坑指南
  • 别再只用Samba了!手把手教你用Jellyfin+Portainer打造家庭海报墙媒体库(从刮削到转码)
  • 自贡市2026年本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 三大殿
  • 个人碎碎念