简历模板第一段概述要写「发表论文 N 篇、授权专利 M 项、成果转化 K 项……」。 这些数字原本手写,每次增删一条论文就得回头改概述,容易漏改。
用户原话:
第一段是概述,就是描述一个人的总体情况,这些总体情况中的数据,能否从文件中获取? 例如,发表了多少论文,这个数字,其实是某一节的数字统计出来的,如果不能自动, 就每次都需要用户手动编写,计算论文数量,然后再更新到前面的概述中,比较麻烦, 有什么办法可以解决吗?
问「论文列全部还是只列代表作」,答:
列哪些用户说了算,但是只要他列出来,就应该给他统计上去
即列几条算几条,不做手动声明的总数覆盖。分类统计:需要。
给条目加类别标记,正文自动累加,概述取数。
\cvmark{类别}
\cvtagcount{类别}
\textbf{SCI}
\cvnum{类别}
\cvnum*{A,B}
\cvtagcount 是为论文设计的:显示与计数合成一步,不会出现「改了显示忘了计数」。
\cvtagcount
放弃 LaTeX 的 aux,改用独立数据文件 \jobname.cvnum。
\jobname.cvnum
实测发现:中文键经 aux 往返后 \ifcsname 全部匹配不上——xeCJK 把汉字设为 活动字符,键的 token 形态与写入时不一致。ASCII 键正常、中文键失效, \typeout 确认 \cvSetNum 被调用、但 \ifcsname 查不到。
\ifcsname
\typeout
\cvSetNum
改用独立文件后中文键完全正常(实测:SCI/EI/授权/转化 全部正确读回)。
双轨存储避免跨遍累加:累加用 cvacc@<类别>(每遍从 0 起), 显示用 cvnum@<类别>(读自上一遍数据文件)。若混用, 因概述在正文之前,上一遍的值会被本遍累加叠加,数字翻倍(实测 2 → 4)。
cvacc@<类别>
cvnum@<类别>
\newcounter 的存在性检查要查 \c@X 而非 \X:\newcounter{X} 定义的是 \c@X。查错名字会让判断永远为假,每次调用都重新 \newcounter 把计数器清零, 报 Command \c@cvacc@... already defined。
\newcounter
\c@X
\X
\newcounter{X}
Command \c@cvacc@... already defined
\cvtag
\experience
\cvmark
\foreach
! Misplaced \omit
longtable
\emptySeparator
Misplaced \omit
\the\csname...\endcsname
\relax
You can't use \relax after \the
\newcount
\cvnum*{SCI,EI,核心}
commit eb3b539,已推到 main。
eb3b539
main
简历/awesome-source-cv.cls
\cvnum
简历/section_01_headline.tex
简历/section_04~09
简历/README.md
.gitignore
*.cvnum
简历/简历.pdf
……发表相关论文 9 篇(SCI 4 篇、EI 4 篇、中文核心 1 篇), 获授权发明专利 9 项(第一发明人 6 项),完成专利成果转化 3 项, 登记软件著作权 5 项,主持各级科研项目 2 项、作为负责人承担 3 项, 项目总经费 1200 余万元,主持教研项目 4 项。
加粗的数字全部是数出来的,与 .cvnum 文件一一对应:
.cvnum
\cvSetNum{SCI}{4} \cvSetNum{专利}{9} \cvSetNum{EI}{4} \cvSetNum{第一发明人}{6} \cvSetNum{核心}{1} \cvSetNum{软著}{5} \cvSetNum{科研项目}{5} \cvSetNum{主持}{2} \cvSetNum{负责}{3} \cvSetNum{转化}{3} \cvSetNum{教研}{4}
×
sha256=bc13e7b4…
自动统计只数你列出来的条目。示例原来写「论文 40 余篇」但正文只列 9 篇代表作, 改成自动后变「9 篇」。这不是 bug,是两种口径:
README 里已把这点写成独立小节,避免以后误用。
项目总经费仍是手填 1200 余万元。\experience 的参数里没有经费字段, 无法从条目求和。若要自动,需给 \experience 加第 8 个参数(预算金额), 改动面较大,按你的口径「列出来才统计」也不适用(经费不是逐条列的)。
1200 余万元
需求已完成并推送(commit eb3b539),服务器端 PDF 已从 API 下载逐字节验证一致, 自动统计数字与实际印出内容全部对得上,关闭本工单。
若后续要加别的统计口径(比如「一区论文」「发明专利授权」等新类别), 或要给 \experience 加经费字段做经费自动求和,请在本单继续评论。
No dependencies set.
The note is not visible to the blocked user.
诉求
简历模板第一段概述要写「发表论文 N 篇、授权专利 M 项、成果转化 K 项……」。
这些数字原本手写,每次增删一条论文就得回头改概述,容易漏改。
用户原话:
口径确认(用户明确)
问「论文列全部还是只列代表作」,答:
即列几条算几条,不做手动声明的总数覆盖。分类统计:需要。
实现
给条目加类别标记,正文自动累加,概述取数。
\cvmark{类别}\cvtagcount{类别}\textbf{SCI})\cvnum{类别}\cvnum*{A,B}\cvtagcount是为论文设计的:显示与计数合成一步,不会出现「改了显示忘了计数」。关键技术决策
放弃 LaTeX 的 aux,改用独立数据文件
\jobname.cvnum。实测发现:中文键经 aux 往返后
\ifcsname全部匹配不上——xeCJK 把汉字设为活动字符,键的 token 形态与写入时不一致。ASCII 键正常、中文键失效,
\typeout确认\cvSetNum被调用、但\ifcsname查不到。改用独立文件后中文键完全正常(实测:SCI/EI/授权/转化 全部正确读回)。
双轨存储避免跨遍累加:累加用
cvacc@<类别>(每遍从 0 起),显示用
cvnum@<类别>(读自上一遍数据文件)。若混用,因概述在正文之前,上一遍的值会被本遍累加叠加,数字翻倍(实测 2 → 4)。
\newcounter的存在性检查要查\c@X而非\X:\newcounter{X}定义的是\c@X。查错名字会让判断永远为假,每次调用都重新\newcounter把计数器清零,报
Command \c@cvacc@... already defined。踩坑记录
\cvtag与 cls 原有命令重名 —— 原本是渲染技术关键词标签的命令(
\experience的第 7 参数用它)。改用\cvmark,不动原有命令。\cvmark不能放\experience的关键词参数里 —— 关键词被\foreach按逗号拆成单个标签,标记会被当标签名处理,不生效且报
! Misplaced \omit。必须放进描述参数(minipage 内)。\cvmark不能放longtable单元格之外 —— 放在\emptySeparator前同样报
Misplaced \omit。\the\csname...\endcsname要用\relax收尾 —— 否则报You can't use \relax after \the。改用 TeX 原生\newcount后自然消失。验收标准
SCI 2→1)。
主持 / 负责 / 转化 / 教研,共 11 类。
\cvnum*{SCI,EI,核心}正确(4+4+1=9)。已完成并推送
commit
eb3b539,已推到main。改动清单
简历/awesome-source-cv.cls\cvmark/\cvtagcount/\cvnum/\cvSetNum)简历/section_01_headline.tex\cvnum取数简历/section_04~09简历/README.md.gitignore*.cvnum生成文件简历/简历.pdf实际印出来的概述(远端 PDF 实测)
加粗的数字全部是数出来的,与
.cvnum文件一一对应:验证
×残留sha256=bc13e7b4…与本地逐字节相同三种口径说明(重要)
自动统计只数你列出来的条目。示例原来写「论文 40 余篇」但正文只列 9 篇代表作,
改成自动后变「9 篇」。这不是 bug,是两种口径:
README 里已把这点写成独立小节,避免以后误用。
已知未做
项目总经费仍是手填
1200 余万元。\experience的参数里没有经费字段,无法从条目求和。若要自动,需给
\experience加第 8 个参数(预算金额),改动面较大,按你的口径「列出来才统计」也不适用(经费不是逐条列的)。
需求已完成并推送(commit
eb3b539),服务器端 PDF 已从 API 下载逐字节验证一致,自动统计数字与实际印出内容全部对得上,关闭本工单。
若后续要加别的统计口径(比如「一区论文」「发明专利授权」等新类别),
或要给
\experience加经费字段做经费自动求和,请在本单继续评论。