ltc-guji.cls → ltc-guji-digital 转换工作流
SkillDev tools将 ltc-guji.cls 文件转换为 ltc-guji-digital 格式
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the ltc-guji.cls → ltc-guji-digital 转换工作流 skill
What this skill tells your AI
The instructions your AI receives, as published by open-guji/luatex-cn in .claude/skills/convert-to-digital/SKILL.md and read by ahel’s review.
将使用 ltc-guji(语义模式)编写的古籍排版文件转换为 ltc-guji-digital(布局模式)格式。
前置知识
先阅读 memory 中的 guji_digital.md 了解 ltc-guji-digital 的命令体系。
参考完整示例:
- 原始 ltc-guji.cls 文件:
示例/史记五帝本纪/史记.tex - 转换后 digital 文件:
test/digital_test/史记五帝-layout.tex
转换步骤
1. 文件头替换
% ltc-guji.cls:
\documentclass[四库全书彩色]{ltc-guji}
% ltc-guji-digital:
\documentclass[SiKuQuanShu-colored]{ltc-guji-digital}
模板名称映射:四库全书彩色 → SiKuQuanShu-colored
2. 内容环境替换
% ltc-guji.cls:
\begin{正文} ... \end{正文}
% ltc-guji-digital:
\begin{数字化内容} ... \end{数字化内容}
3. 列表结构 → 缩进
ltc-guji.cls 的 \列表 嵌套转换为 \缩进[N]:
- 第一层列表项 →
\缩进[1] - 第二层列表项 →
\缩进[2] - 以此类推
% ltc-guji.cls:
\begin{列表}
\item 史記卷一
\item
\begin{列表}
\item \填充文本框[12]{漢太史令}司馬遷\空格 撰
\end{列表}
\item 五帝本紀第一
\end{列表}
% ltc-guji-digital:
\缩进[1] 史記卷一
\缩进[2] \填充文本框[12]{漢太史令}司馬遷\空格 撰
\缩进[1] 五帝本紀第一
4. 夹注转换(核心难点)
这是转换中最复杂的部分。ltc-guji.cls 的 \夹注{全部注释文字} 需要手动分栏为 \双列{\右小列{...}\左小列{...}}。
4.1 确定每列字数
默认每列 21 字。当正文和夹注共享一列时:
- 每小列可用字数 = 21 - N正文字数
- 例如:
黄帝者(3字)→ 每小列 18 字,一行 36 字
4.2 分栏算法
用 Python 脚本辅助计算:
def split_annotation(text, chars_per_subcol=21):
"""将注释文字按每小列 chars_per_subcol 字分栏"""
pos = 0
lines = []
while pos < len(text):
right = text[pos:pos+chars_per_subcol]
left = text[pos+chars_per_subcol:pos+2*chars_per_subcol]
lines.append((right, left))
pos += 2 * chars_per_subcol
return lines
4.3 正文+夹注混合行
当正文字符和夹注在同一行:
% 正文"黄帝者"(3字) + 夹注,每小列 21-3=18 字:
黄帝者\双列{\右小列{集解徐廣曰號有熊索隠按有土徳之瑞土色}\左小列{黄故稱黄帝猶神農火徳王而稱炎帝然也此}}
4.4 多段正文拼接
当上一段夹注尾部字数不足一整行,可以和下一段正文+夹注拼在同一列:
% 上段夹注尾(11+11) + 正文"生而神靈弱而能言"(8字) + 下段夹注头(3+3) = 21+21
\双列{\右小列{為名又以為號是本姓公}\左小列{孫長居姬水因改姓姬}}生而神靈弱而能言\双列{\右小列{索隠弱}\左小列{謂幼弱}}
计算规则:同一行所有元素(上段夹注尾 + 正文 + 下段夹注头)的总字符 = 21+21 = 42
5. 段落处理
% ltc-guji.cls:
\begin{段落}[indent=3]
\夹注{...长文本...}
\end{段落}
% ltc-guji-digital:
\缩进[3]\双列{\右小列{...}\左小列{...}}
\缩进[3]\双列{\右小列{...}\左小列{...}}
... (逐行,每行 21+21 字)
注意:\缩进[N] 只影响当前列,所以段落中的每一行都需要加 \缩进[3]。
6. 印章命令
% ltc-guji.cls(可以有详细位置参数):
\印章[page=1, opacity=0.7, color=black, xshift=5.3cm, yshift=6.7cm, width=12.9cm]{文渊阁宝印.png}
% ltc-guji-digital(简化,位置由模板决定;末尾加 % 防止空列):
\印章[page=1,opacity=0.7,color=black]{文渊阁宝印.png}%
关键:印章命令后必须加 %,否则换行符会产生空列。
7. 换页
ltc-guji.cls 中的内容自然流动不需要手动换页。ltc-guji-digital 中如果需要在特定位置换页:
\换页
单独占一行,前后不要有其他内容。
关键注意事项
- 不要在
数字化内容中使用%注释 — 会吃掉换行符导致两行合并 - 不要使用 ltc-guji.cls 专有命令 —
\夹注、\段落、\列表、\正文在 digital 中不存在 - 空行 = 空列 — 源码中的空行会在输出中产生一个空白列
- 每行一列 — 这是 digital 模式的核心:源码的物理行 = 输出的竖排列
- 验证方法 — 转换后编译,与原文件的 PDF 逐页对比,应该像素级一致
验证
# 编译转换后的文件
cd test/digital_test && lualatex 史记五帝-layout.tex
# 与原文件对比页数和外观
cd 示例/史记五帝本纪 && lualatex 史记.tex
# 两个 PDF 应该页数相同、内容一致
Signals
- GitHub stars
- 105
- Forks
- 10
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
convert-to-digital- Source
- github.com/open-guji/luatex-cn