不建议用LaTeX的宏包来实现这种自动化。
IMHO...应该vibecoding一个简易的APP来记录更靠谱
srds...基于tabularray以及functional库是可以实现的,就是逻辑可能要做很多判断...
先简化例子
\documentclass[a4paper,landscape]{article}
\usepackage[fontset=fandol]{ctex}
\usepackage{xcharter-otf}
\usepackage[hmargin=1.2cm,vmargin=1.8cm]{geometry}
\usepackage{tabularray}
\usepackage{ninecolors}
\usepackage{xcolor}
\newcommand{\zz}[1]{\ifnum#1<10 0#1\else#1\fi}
\pagecolor{cyan!10}
\begin{document}
\title{\Large 血糖监测记录本}
\author{姓名:\underline{\hspace{4cm}} \quad 正常空腹:4.4~7.0 mmol/L}
\date{}
\maketitle
{\centering
\begin{longtblr}[caption={血糖记录本}]
{
colspec = {*{9}{c}Q[8cm,c]},
vlines,hlines,rowhead = 1,
column{3} = {bg=pink!15},
column{4-5} = {bg=green!15},
column{6-7} = {bg=orange!15},
column{8-9} = {bg=blue!15}
}
日期 & 星期 & 空腹 & 早餐后1h & 早餐后2h & 午餐后1h & 午餐后2h & 晚餐后1h & 晚餐后2h & 备注 \\
% 6月第4周 22-28(带实测数据)
2026-\zz{6}-\zz{22}& 周一 &5.6 & & & 5.6 & 6.7 & & 7.8 & \\
2026-\zz{6}-\zz{23}& 周二 & & & & & & & & \\
2026-\zz{6}-\zz{24}& 周三 &2.33 & & & & & & & \\
2026-\zz{6}-\zz{25}& 周四 &9.0 & & & & & & & \\
2026-\zz{6}-\zz{26}& 周五 &6.7(8:56) & & &7.3(13:41) & & &6.2(21:17) & 午餐后快步走40分钟 \\
2026-\zz{6}-\zz{27}& 周六 &6.7(8:55) & & &6.8(14:09) & &7.0(20:44) & & 早餐、午餐后快步走40分钟;晚餐后混氧运动 \\
2026-\zz{6}-\zz{28}& 周日 &6.0(9:12) & & & & & & &早餐后混氧运动 \\
\SetCell[c=10]{l}{} & & & & & & & & & \\
\end{longtblr}
}
\end{document}基于简化问题的“自动化”代码
\documentclass[a4paper,landscape]{article}
\usepackage[fontset=fandol]{ctex}
\usepackage{xcharter-otf}
\usepackage[hmargin=1.2cm,vmargin=1.8cm]{geometry}
\usepackage{tabularray}
\UseTblrLibrary{functional}
\usepackage{ninecolors}
\usepackage{xcolor}
\newcommand{\zz}[1]{\ifnum#1<10 0#1\else#1\fi}
\pagecolor{cyan!10}
\IgnoreSpacesOn
\prgNewFunction \SugarReadingValue { m } {
\regexExtractOnceTF { \A \s* ([0-9]+ (?: \. [0-9]+)?) } {#1} \lTmpaSeq {
\prgReturn { \seqVarItem \lTmpaSeq {2} }
} {
\prgReturn {}
}
}
\prgNewFunction \SugarValuesFromCells { m m m M } {
\clistClear #4
\intStepOneInline {#1} {#2} {
\clistMapVariable {#3} \lTmpbTl {
\tlSet \lTmpaTl { \SugarReadingValue { \cellGetText {##1} {\tlUse \lTmpbTl} } }
\tlVarIfEmptyF \lTmpaTl {
\clistPutRight #4 { \tlUse \lTmpaTl }
}
}
}
}
\prgNewFunction \SugarValuesMax { M } {
\clistVarIfEmptyTF #1 {
\prgReturn {}
} {
\clistGet #1 \lTmpaTl
\clistVarMapInline #1 {
\fpCompareT {##1} > { \lTmpaTl } {
\tlSet \lTmpaTl {##1}
}
}
\prgReturn { \tlUse \lTmpaTl }
}
}
\prgNewFunction \SugarValuesMin { M } {
\clistVarIfEmptyTF #1 {
\prgReturn {}
} {
\clistGet #1 \lTmpaTl
\clistVarMapInline #1 {
\fpCompareT {##1} < { \lTmpaTl } {
\tlSet \lTmpaTl {##1}
}
}
\prgReturn { \tlUse \lTmpaTl }
}
}
\prgNewFunction \SugarValuesMean { M } {
\clistVarIfEmptyTF #1 {
\prgReturn {}
} {
\fpZero \lTmpaFp
\clistVarMapInline #1 {
\fpAdd \lTmpaFp {##1}
}
\prgReturn { \fpEval { round((\fpUse \lTmpaFp) / \clistVarCount #1, 2) } }
}
}
\prgNewFunction \FillSugarWeekStats { } {
\SugarValuesFromCells {2} {8} {3} \lTmpaClist
\SugarValuesFromCells {2} {8} {4,6,8} \lTmpbClist
\SugarValuesFromCells {2} {8} {5,7,9} \lTmpcClist
\cellSetText {9} {1} {
\textbf{
空腹:最高 \SugarValuesMax \lTmpaClist,最低 \SugarValuesMin \lTmpaClist,均值 \SugarValuesMean \lTmpaClist;
餐后1h:最高 \SugarValuesMax \lTmpbClist,最低 \SugarValuesMin \lTmpbClist,均值 \SugarValuesMean \lTmpbClist;
餐后2h:最高 \SugarValuesMax \lTmpcClist,最低 \SugarValuesMin \lTmpcClist,均值 \SugarValuesMean \lTmpcClist
}
}
}
\IgnoreSpacesOff
\begin{document}
\title{\Large 血糖监测记录本}
\author{姓名:\underline{\hspace{4cm}} \quad 正常空腹:4.4~7.0 mmol/L}
\date{}
\maketitle
{\centering
\begin{longtblr}[caption={血糖记录本}]
{
colspec = {*{9}{c}Q[8cm,c]},
vlines,hlines,rowhead = 1,
column{3} = {bg=pink!15},
column{4-5} = {bg=green!15},
column{6-7} = {bg=orange!15},
column{8-9} = {bg=blue!15},
process = \FillSugarWeekStats
}
日期 & 星期 & 空腹 & 早餐后1h & 早餐后2h & 午餐后1h & 午餐后2h & 晚餐后1h & 晚餐后2h & 备注 \\
% 6月第4周 22-28(带实测数据)
2026-\zz{6}-\zz{22}& 周一 &5.6 & & & 5.6 & 6.7 & & 7.8 & \\
2026-\zz{6}-\zz{23}& 周二 & & & & & & & & \\
2026-\zz{6}-\zz{24}& 周三 &2.33 & & & & & & & \\
2026-\zz{6}-\zz{25}& 周四 &9.0 & & & & & & & \\
2026-\zz{6}-\zz{26}& 周五 &6.7(8:56) & & &7.3(13:41) & & &6.2(21:17) & 午餐后快步走40分钟 \\
2026-\zz{6}-\zz{27}& 周六 &6.7(8:55) & & &6.8(14:09) & &7.0(20:44) & & 早餐、午餐后快步走40分钟;晚餐后混氧运动 \\
2026-\zz{6}-\zz{28}& 周日 &6.0(9:12) & & & & & & &早餐后混氧运动 \\
\SetCell[c=10]{l}{} & & & & & & & & & \\
\end{longtblr}
}
\end{document}
To-Do(我是不想做...)
- 处理日期结构
- 处理分周、分月的计算统计逻辑
- 处理每周新增一行进行记录的表格排布逻辑
- 表末输出不同层级的总结
这里每一步都需要做海量的逻辑处理... 意义也不大...



















问 生成一个血糖记录本,统计数据随表格中数据编译后更新