在我的最后一个问题中,阅读学生班级名单,我问如何读取学生名单并创建班级名单。一切正常,因为@egreg 的回答很棒。我现在正在尝试创建一个学期出勤表,导入学生姓名,其中有一些keys
可以是用户输入的,例如University Name
,Course Name
等。
我想要实现的另一个关键目标是,假设您有一门课程仅在周一和周三或周二和周四或周一、周三和周四(取决于您教授课程的日子)开设,我希望能够在列标题上打印日期和日期,例如从 2019 年 8 月 19 日至 2019 年 12 月 6 日的学期(如下所示)。当然,对于这个新学期来说,它将从 2020 年 1 月 6 日到 2020 年 5 月 8 日。
我一直以来的做法是查看日历,只对我教授课程的两三天进行排序,手动确定每一天的日期,然后将其输入文件并打印。请注意,表格无法容纳在一页中,因此需要重新开始/继续下一页,并保留前 3 列。
我注意到我的 MWE 中存在一些问题,下图中的单词没有通常应该有的空格。
更新:~
在单词之间添加空格可以解决此问题。
这是我的 MWE:
\documentclass[10pt]{article}
\usepackage[margin=1cm,landscape]{geometry} % make room
\usepackage{xparse,array,graphicx}
\newsavebox\TBox
\newif\ifrotate\rotatefalse
\newcolumntype{C}{%
>{\begin{lrbox}{\TBox}\arraybackslash}
c
<{\end{lrbox}\ifrotate\rotatebox{90}{\usebox\TBox}\else\usebox\TBox\fi}}
\newcommand{\rotateon}{\global\rotatetrue}% rotate switch ON
\newcommand{\rotateoff}{\global\rotatefalse}% rotate switch OFF
\ExplSyntaxOn
\NewDocumentCommand{\studentlist}{m}
{% #1 = file name
\azetina_studentlist:n { #1 }
}
\ior_new:N \g_azetina_studentlist_stream
\seq_new:N \l_azetina_studentlist_seq
\seq_new:N \l__azetina_studentlist_temp_seq
\tl_new:N \l__azetina_studentlist_header_tl
\cs_new_protected:Nn \azetina_studentlist:n
{
\seq_clear:N \l_azetina_studentlist_seq
\ior_open:Nn \g_azetina_studentlist_stream { #1 }
\int_zero:N \l_tmpa_int
% populate the sequence
\ior_map_inline:Nn \g_azetina_studentlist_stream
{
\int_incr:N \l_tmpa_int
\seq_put_right:Nx \l_azetina_studentlist_seq
{
\int_to_arabic:n { \l_tmpa_int } & \exp_not:n { ##1 } & & & &
}
}
% build the header
\tl_set:Nn \l__azetina_studentlist_header_tl
{
\# & \textbf{Student~Name} & \textbf{Ab/T} & & &
}
% make the table
\par\noindent
\begin{tabular}{|r|l|c|*{3}{C|}}
\cline{4-6}%
\multicolumn{3}{l|}{%
%\makecell[l]{%
\parbox[b]{16em}{%
University Name\\ %
Course Name (Course Code)\\ %
Lecturer Name\\ %
\null\\
\today\\
\null%
%}
}%
}&
\rotateon %
\parbox{10em}{Monday\par August 19, 2019} &%
\parbox{10em}{Wednesday\par August 21, 2019}&%
\parbox{10em}{Monday\par August 26, 2019}\\ % These dates are manually entered. Can they be calculated and printed in columns?
\hline%
\rotateoff %
\tl_use:N \l__azetina_studentlist_header_tl \\ \hline
\seq_map_function:NN \l_azetina_studentlist_seq \__azetina_studentlist_row:n
\end{tabular}
}
\cs_new_protected:Nn \__azetina_studentlist_row:n
{
#1 \\ \hline
}
\ExplSyntaxOff
\begin{document}
\studentlist{MATH1004CL}
\end{document}
因此,如何在教授课程时打印各列并使其可以传播到多页?
我正在寻找一些用户输入,例如:
\semester{8/19/2019}{12/06/2019}
\schoolweek{M}{W} % where M = Monday and W = Wednesday are the days printed from the two dates set above in \semester