🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

Origin 论文排版 xinchun2018/dsh-origin-thesis

DeepSeek Harness
xinchun201833 天前有提交已提供中文文档扫描:含敏感能力

把 Origin 图批量重排成论文规范并导出 600 dpi 图

30.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add xinchun2018/dsh-origin-thesis
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · other
装得上吗
静态安装检查有提示项,装前建议看一眼 README
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 33 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-origin-thesis(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=18 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/10 21:27:58

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 1 处,展示前 1 条)
  • 读取本地文件
    index.js:21
    readFileSync(new URL('./package.json', import.meta.url), 'utf8'),
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 批量重排Origin图
  • 统一字体与网格布局
  • 600dpi导出

在 DeepSeek Harness 里把 OriginLab Origin 图按固定论文/期刊社样式排版:逐图层网格布局、统一字体、按渲染实测摆放轴标题、消解重叠、加面板标签、600 dpi 导出并修正 dpi 元数据。

README

由 DeepSeek 最新模型翻译生成
dsh-origin-thesis 在 DeepSeek Harness 里把 OriginLab Origin 图按固定排版规范格式化。 一条命令就能把整个 .opju 项目变成可直接发表的图:逐图层网格布局、统一字体和字号、按渲染结果测量轴标题位置、解决重叠、加面板标签,再以 600 dpi 导出并修正 dpi 元数据。 这套东西最初是为博士论文工作流写的,几十张 Origin 图必须长得一模一样;后来重做成 DSH bundle,格式化就能从聊天里跑,不用再开命令行。 you: 把这份项目按论文格式重排,保留我手摆的图例 → thesis_format_project(project="...\project.opju", profile="thesis", keep_legend_pos=true) → 13 figures reformatted, <name>_thesis.opju + <name>_thesis_figures/.png Requirements | OS | 仅限 Windows。 Origin 的自动化接口是 Windows COM,没有 macOS/Linux 的路子。 | | Origin | 本地安装并已授权的 Origin / OriginPro 2018 或更新版本。
展开完整文档(README 剩余 1 节)
dsh-origin-thesis

在 DeepSeek Harness 里把 OriginLab Origin 图按固定排版规范格式化。 一条命令就能把整个 .opju 项目变成可直接发表的图:逐图层网格布局、统一字体和字号、按渲染结果测量轴标题位置、解决重叠、加面板标签,再以 600 dpi 导出并修正 dpi 元数据。

这套东西最初是为博士论文工作流写的,几十张 Origin 图必须长得一模一样;后来重做成 DSH bundle,格式化就能从聊天里跑,不用再开命令行。

you: 把这份项目按论文格式重排,保留我手摆的图例 → thesis_format_project(project="...\project.opju",
profile="thesis", keep_legend_pos=true)
→ 13 figures reformatted, <name>_thesis.opju + <name>_thesis_figures/.png

Requirements

| OS | 仅限 Windows。 Origin 的自动化接口是 Windows COM,没有 macOS/Linux 的路子。 |
| Origin | 本地安装并已授权的 Origin / OriginPro 2018 或更新版本。已在 OriginPro 2026b 和 Origin 2021 上测试。本插件不附带 Origin —— 你得自己有 Origin 授权。 |
| Python | 一个装好 originpro、numpy 和 Pillow 的解释器。⚠️ originpro 目前发布的 wheel 只支持到 Python 3.9,所以通常要用 3.9 环境(比如名为 origin 的 conda 环境)。 |
| DSH | DeepSeek Harness,且能用 @deepseek-ai/dsh-mcp-client 插件(任何能挂载 MCP 客户端的 DSH 配置档都行)。 |

:: create the interpreter this plugin will drive Origin with
conda create -n origin python=3.9 -y
conda activate origin
pip install originpro numpy Pillow

插件本身不需要 mcp 包:thesis_mcp_server.py 直接实现了 MCP stdio JSON-RPC 循环,所以在 Python 3.9 或 3.10 上都能跑。

为什么要有个 .cmd 启动器

cordis.patch.yml 里写的是 start-thesis-mcp.cmd,不是 python.exe。这是有意为之,也正是它让包的位置无关。

DSH 求值补丁文件里的 !!js 表达式时,用的沙箱里 没有 __dirname、__filename 和 require —— 只有 process 可靠可用。这是实测,不是猜的:

mcp-origin-thesis (@deepseek-ai/dsh-mcp-client): ReferenceError: __dirname is not defined

所以补丁没法在 JavaScript 里算出自己的包目录,任何 !!js require('node:path').join(__dirname, …) 这种写法在启动时就会失败。相比之下,Windows 批处理文件通过内置的 %~dp0 展开就能拿到自己所在目录,完全不用 JavaScript。因此启动器:

1. 用 %~dp0 找到与自己同级的 thesis_mcp_server.py;
2. 挑一个解释器 —— 优先 DSH_THESIS_PYTHON,否则在常见位置找名为 origin 的 conda 环境,再否则用 PATH 上的 python;
3. 转发所有参数(-u -X utf8 加上 DSH 传入的任何内容),然后运行服务器。

补丁只需要写出启动器的名字,所以包放在哪里都行 —— 默认的 ~/dsh-vendor/dsh-origin-thesis 只是个约定。如果你装到别处,相应改一下 cordis.patch.yml 里的两个 args/cwd 值即可。

安装

1. 获取文件

git clone https://github.com/xinchun2018/dsh-origin-thesis.git "%USERPROFILE%\dsh-vendor\dsh-origin-thesis"

运行时需要的一切 —— 服务器、样式配置档、还有绘图脚本 —— 都在这一个目录里。

2. 接入 DSH 配置档

克隆到 DSH 期望的位置(或者把配置档指向你实际放置的位置),然后像接入任何树外包一样把它链接进配置档:

cd "%USERPROFILE%\.dsh\profiles\web"
pnpm add link:%USERPROFILE%\dsh-vendor\dsh-origin-thesis

并确认该包已列在配置档的 package.json 里:

"dsh": {
"profile": {
"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app",
"dsh-origin-thesis"]
}
}

包自带的 cordis.patch.yml 随后会注册加载器条目(mcp-origin-thesis → @deepseek-ai/dsh-mcp-client,stdio),并自动解析服务器路径和解释器 —— 没有绝对路径需要改。

3. 重启 DSH

工具会以 mcp__origin_thesis__ 的形式出现。用下面这条检查接线:

thesis_batch_dir_info()

它会报告用了哪个解释器、originpro 能否导入、以及当前生效的是哪一份绘图脚本。

配置

一切都在启动时解析,没有任何东西硬编码到某台机器。

| 环境变量 | 默认值 | 含义 |
| DSH_THESIS_PYTHON | 自动检测 | 驱动 Origin 的解释器。检测顺序:该变量 → ~/miniconda3/envs/origin/python.exe → ~/anaconda3/envs/origin/python.exe → C:/ProgramData/miniconda3/envs/origin/python.exe → PATH 上的 python。 |
| DSH_THESIS_BATCH_DIR | 包目录 | 改用你自己的 origin-batch-style 检出,而不是本包内置的脚本。 |
| DSH_THESIS_STYLES | 包目录下的 styles.json | 使用你自己的样式配置档文件。 |

样式配置档

styles.json 是图表外观的唯一事实来源。改格式只需编辑 JSON —— 不用动 Python。 内置三套配置档:

| 配置档 | 用途 | 页面 | 刻度 / 轴标题 / 图例 | 线条 |
| thesis | 论文插图,按图层数重新排版 | 1 层 9.8594×7.3999 cm(4:3);2 层 16×7.4;3–4 层 16×13.2;6 层 16×10.4;8 层 16×8.6 | 9 / 10.5 粗体 / 9 pt | 1.0 pt |
| composite | 手工拼装的多面板图版 | 宽 17.5 cm,高度按原始宽高比(或重新分格) | 6.5 / 7.5 / 6.5 pt | 0.75 pt |
| manuscript | 期刊单图(保留作者手工摆放的图例) | 同 thesis | 同 thesis | 同 thesis |

manuscript 就是 inherits: thesis 加一处覆盖(move_legend: false),所以改 thesis 也会影响它。运行时用 thesis_style_set 改值(先 dry-run,再 dry_run=false;会自动写出 .bak)。

工具

离线(不需要 Origin,即时可用):

| 工具 | 用途 |
| thesis_styles_list | 列出配置档及其关键值 |
| thesis_style_show | 显示完整配置档(已解析继承关系) |
| thesis_style_set | 编辑 styles.json(默认 dry-run) |
| thesis_batch_dir_info | 报告解析到的解释器 / 脚本 / 样式(排查问题用) |

排版与导出:

| 工具 | 用途 |
| thesis_format_project | 按图层数排版项目里的每一张图;保存 _thesis.opju + _thesis_figures/.png |
| thesis_format_composite | 排版手工拼装的多面板图版;regrid=true 会重新分配行距并裁掉多余页面 |
| thesis_batch | 指向多个项目 / 一个目录;返回逐项目报告 |
| thesis_export_project | 只导出,不重排样式(支持多种格式、统一宽度、裁边) |
| thesis_verify_project | 只读检查字体 / 字号 / 缺陷 |

原子操作,用于自由组合:

| 工具 | 用途 |
| thesis_format_graph | 排版指定的单张图——项目其余部分不动 |
| thesis_apply_style_only | 只应用样式 / 布局:不保存,不导出 |
| thesis_export_open | 从已经打开的会话导出(不重新打开文件) |

有了这三个,你就能把排版和细粒度编辑穿插起来。插件与其他 Origin 工具共用同一个 Origin 会话,所以下面这套流程可行:

① thesis_apply_style_only(project=..., graph="Graph20", keep_open=true) # ~21 s
② origin_edit_plot / origin_edit_axis / origin_edit_legend ... # ms
③ thesis_export_open(graph="Graph20", out_path="D:\fig\Graph20.png") # ~0.3 s

串联时用 keep_open=true:op.exit() 会关掉项目,下一步就找不到那张图了。

原始文件绝不会被改动——排版在 %TEMP% 里的副本上进行。

为什么导出的图物理尺寸是对的

不管你要多少像素,Origin 都会往图像头里写 300 dpi,于是 600 dpi 的图插进 Word 后,会被放到两倍于预期的大小。本插件在导出后修补文件头(PNG 的 pHYs、TIFF 的 282/283 标签、JPEG 的 JFIF、BMP 的 PelsPerMeter),不重新编码,因此声明的物理尺寸等于页面尺寸在 Origin 里设定。超大的输出也会缩放到你指定的页面宽度(8.9 cm、600 dpi 时为 2102 px)。

排版是怎么工作的(以及它刻意保留了什么)

繁重的工作都在随附的脚本里,未做改动:

- 按结构布局 —— 图层先分类(main / inset / linked_inset / overlay / linked_ext),再按网格、堆叠或页面缩放排布。一列纵向堆叠的谱图(XPS 峰拟合、MS 对比)算作一个面板。
- 轴标题靠测量,不靠猜 —— fit_axis_titles 先写标题、渲染、用 Pillow 测量墨迹,推导出该图表的锚点偏移,再迭代几轮修正。固定偏移行不通:两个边框和字号都相同的图表,标题渲染出来相差 0.28 cm。
- 重叠只在纵向解决 —— clamp_texts 先把标注拉回边框内,再由 separate_texts 把它们纵向推开。横向挪动会让标签偏离它指向的峰。
- 嵌入图层只会缩小 —— 毫米级嵌入图里的刻度标签字号保持原样;放大会把 7.2 和 7.0 粘成 7.27.0。
- 绝不改写:图例字符串(它有自己的 | 分隔语法和逐项转义 —— 把整个字符串包起来会让第 1 项变粗并多出一个 ))、\g() Symbol 字体区域(去掉内层 \f: 包装会把 C 变成 Chi)、数据值、轴范围、曲线颜色,以及插入的图片内容。

README-origin-batch-style.md 是原工程师的日志 —— 几百行实测出来的失败模式(LabTalk 静默忽略写入、链接图层帧过期、expgraph 未文档化的参数陷阱)。改脚本之前先读它。

限制

- Windows + 已授权的 Origin 安装是硬性要求;没有 Origin,这些工具就没有可驱动的对象。
- 一张图约 20–30 秒。 每次调用都会启动 Origin COM 会话,跑一遍渲染-测量-修正循环。这一步快不了;回报是它之后的一切(origin_edit_、thesis_export_open)都在亚秒级。
- Origin 是独占资源。 排版用的是单实例 COM 服务器,所以批量运行期间不要在 Origin 里手动改图。
- 解释器要求 Python ≤ 3.9,直到 OriginLab 发布更新的 wheel。
- PER_GRAPH_TWEAKS 默认是空的。逐图例外天然因项目而异(哪个标签撞上了哪条曲线、文本框要挪几毫米),所以这张表有文档但不预填。按 format_thesis_figures.py 里它旁边的格式自己加条目 —— 外层键是项目文件名主干,因为 Graph8 在不同项目里含义不同。项目匹配时会自动应用,no_tweaks=true 则跳过。

与上游 origin-batch-style 工具包的关系

三个随仓库分发的脚本来自同一作者的私有绘图工具包(origin-batch-style/,从命令行驱动),该工具包一直在实际使用中。本仓库发布的是它们的精选变体:

| | 上游(私有) | 本仓库 |
| 逐图异常表(PER_GRAPH_TWEAKS) | 针对具体稿件填充 | 留空,改为记录方案 |
| 注释 / 文档字符串 | 写出真实样本、图表和项目文件名 | 做了泛化处理(技术要点原样保留) |
| 用法示例 | 机器相关的解释器路径 | python |
| 其余全部内容 —— 布局逻辑、锚点校准、重叠消解、导出与 dpi 校正 | 相同 | 相同 |

如果你维护自己的副本,它不会自动收到这里做的修复,反过来也一样。有两种办法把两者干净地分开:

- 把私有工具包当作你自己图表的唯一事实来源,让 DSH_THESIS_BATCH_DIR 指向它。这样本仓库的副本只是全新安装时的兜底 —— 不存在同步问题,因为你根本不会用到它。
- 或者跟踪本仓库,在它之上重新套用你的逐图调整,再用 sync_to_vendor.ps1 把结果推送到 DSH 运行时目录。

切出这个变体时用的回归测试:重新排版一个 13 图项目(0 错误、0 校验问题),再以只读方式打开保存的产物做校验(clean: true)。

仓库结构

thesis_mcp_server.py MCP server (stdlib only; no mcp package needed)
start-thesis-mcp.cmd launcher: self-locates via %~dp0, picks the interpreter
styles.json style profiles — the file you edit to change the look cordis.patch.yml DSH loader entry (names the launcher; no toolchain paths) index.js bundle entry artifact (no-op apply) format_thesis_figures.py ┐ format_composite.py ├── vendored plotting scripts (replaceable via export_figures.py ┘ DSH_THESIS_BATCH_DIR) README-thesis.md internal reference: every tool, parameter and pitfall README-origin-batch-style.md the original scripts' engineering log sync_to_vendor.ps1 copy this repo to the DSH runtime directory THIRD-PARTY-NOTICES.md Origin / originpro / dependency licensing and runtime needs CONTRIBUTING.md how to run the smoke test, what needs discussion first tests/smoke.py installation self-check (14 assertions, no DSH needed)

许可

MIT —— 见 LICENSE。Origin 本身是商业软件,需单独授权;originpro / OriginExt 由 OriginLab 以 BSD 协议授权,由你自行安装,本仓库不再分发。完整细节,包括随仓库分发的脚本的可选运行时依赖,见 THIRD-PARTY-NOTICES.md。
预览分享卡片长什么样 ↓xinchun2018/dsh-origin-thesis
分享 · DeepSeek Harness Hub
xinchun2018/dsh-origin-thesis

把 Origin 图批量重排成论文规范并导出 600 dpi 图

这是你的仓库?认领条目

回到顶部