我正在一个 .csv 文档中整理一份学生名单和考试成绩。借助 datatool,这些内容在表格环境中打印出来。表格列出了分数和平均分数。只要每一行都有分数,一切就都正常。当缺少一个分数时,我的问题就开始了。
我正在寻找一种方法来检查所有标记是否都在给定的行中。如果一个标记不在该行中,则数据工具应在计算平均值时忽略它。
例如:我的 example.csv 看起来类似于此:
name;vorname;note1;note2;note3
name1;vorname1;12;1;13
name2;vorname2;11;1;13
name3;vorname3;12;;1 --> missing mark
name4;vorname4;4;1;13
name5;vorname5;;1;13 --> missing mark
name6;vorname6;12;;13 --> missing mark
我希望 LaTeX 文档读取数据并计算平均值。这对于第 1、2 和 4 行来说效果很好。在其他行中,我只想添加给定的标记,然后除以它们的数量。例如在第三行中:12+1/2。
如果我使用 \DTLmeanforall,行将被除以三。如果不是所有标记都存在,有办法改变这种情况吗?
感谢您的帮助。
这是我的乳胶文档:
\documentclass[10pt]{scrartcl}
\usepackage{datatool}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\DTLsetseparator{;}
\DTLloaddb{list}{example.csv}
\DTLsort{nachname}{list}
\begin{tabular}{clp{.1\textwidth}p{.1\textwidth}p{.1\textwidth}p{.2\textwidth}p{.1\textwidth}p{.2\textwidth}}
Nr. & \bfseries Nachname & \bfseries Vorname & Mark1 & Mark2 & Mean first Semester & Mark 3 & Mean Second Semester
\DTLforeach{list}{\nachname=nachname,\vorname=vorname,\mi=note1,\mii=note2,\miii=note3}{%
\DTLiffirstrow{\\ \hline}
{\\ \DTLifoddrow{\rowcolor{white}}{\rowcolor[gray]{.9}}}%
\theDTLrowi & \nachname & \vorname & \mi & \mii &
&\DTLmeanforall{\semi}{\mi,\mii} \DTLround{\semi}{\semi}{0} Punkte: \semi
& \hando &
\DTLmeanforall{\semii}{\semi,\miii} \DTLround{\semii}{\semii}{0}
}
\end{tabular}}