summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/easybook/README.md2
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx13
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin646232 -> 646223 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.tex2
-rw-r--r--macros/latex/contrib/litetable/doc/litetable-cn.pdfbin174081 -> 172819 bytes
-rw-r--r--macros/latex/contrib/litetable/doc/litetable-cn.tex50
-rw-r--r--macros/latex/contrib/litetable/doc/litetable-demo.pdfbin55242 -> 55242 bytes
-rw-r--r--macros/latex/contrib/litetable/doc/litetable-demo.tex53
-rw-r--r--macros/latex/contrib/litetable/doc/litetable-en.pdfbin118263 -> 486754 bytes
-rw-r--r--macros/latex/contrib/litetable/doc/litetable-en.tex46
-rw-r--r--macros/latex/contrib/litetable/doc/litetable-hk.pdfbin189869 -> 189974 bytes
-rw-r--r--macros/latex/contrib/litetable/doc/litetable-hk.tex52
-rw-r--r--macros/latex/contrib/litetable/tex/litetable.cls759
13 files changed, 494 insertions, 483 deletions
diff --git a/macros/latex/contrib/easybook/README.md b/macros/latex/contrib/easybook/README.md
index 6d6f3bee0c..96969e1ae9 100644
--- a/macros/latex/contrib/easybook/README.md
+++ b/macros/latex/contrib/easybook/README.md
@@ -1,5 +1,5 @@
# The `easybook` document class
-Easily typesetting Chinese theses or books (v2024ef)
+Easily typesetting Chinese theses or books (v2024eh)
## Abstract
`easybook` is a pure academic template created based on the `ctexbook` book document class. It also has the functions of `book` and `article` document class. Combined with the general framework design of the theses of many universities in China, providing multiple commands and interfaces allows users to easily customize the theses templates. Its basic macro package `easybase` can also be used with `ctex` and standard document classes.
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index 8f960d5c95..fa28ce89ae 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -14,7 +14,7 @@
% This work has the LPPL maintenance status `maintained'.
%<class|package>\NeedsTeXFormat{LaTeX2e}[2021/11/15]
%<*class>
-\ProvidesExplClass{easybook}{2024/10/08}{2024ef}
+\ProvidesExplClass{easybook}{2024/10/08}{2024eh}
{Easily typesetting Chinese theses or books}
\bool_new:N \l__eb_compile_draft_bool
@@ -302,7 +302,7 @@
%</class>
%<*package>
\RequirePackage{etoolbox}
-\ProvidesExplPackage{easybase}{2024/10/08}{2024ef}
+\ProvidesExplPackage{easybase}{2024/10/08}{2024eh}
{Easily typesetting Chinese theses or books}
\cs_generate_variant:Nn \dim_set:Nn { NV }
@@ -1708,7 +1708,12 @@
\tl_set:cn { ttll@#2 } {#1}
}
\contentsuse{lstlisting}{lol}
-\cs_set:Npn \hytoclink #1 { \Hy@toclinkstart #1\Hy@toclinkend }
+\ctex_at_end_package:nn { hyperref }
+ {
+ \cs_if_exist:NTF \Hy@toclinkstart
+ { \cs_set:Npn \hytoclink #1 { \Hy@toclinkstart #1\Hy@toclinkend } }
+ { \cs_set_eq:NN \hytoclink \use:n }
+ }
\seq_put_left:Nn \c__ctex_headings_seq { chapter }
\seq_put_right:Nn \c__ctex_headings_seq { table }
\seq_put_right:Nn \c__ctex_headings_seq { figure }
@@ -2891,7 +2896,7 @@
}
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2024/10/08}{2024ef}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2024/10/08}{2024eh}
{Customization of tcolorbox for easybook}
\cs_set_protected:Npn \addtotcbstyle #1#2
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index 4d1f0b0974..c7b716c93e 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex
index 1c8fe85a21..19b481d254 100644
--- a/macros/latex/contrib/easybook/easybook.tex
+++ b/macros/latex/contrib/easybook/easybook.tex
@@ -23,7 +23,7 @@
name = easybook,
color-scheme = blue,
title = EASYBOOK使用手册,
- version = v2024ef,
+ version = v2024eh,
date = 2024/10/08,
authors = 瞿毅,
info = 简便地排版中文学位论文或书籍,
diff --git a/macros/latex/contrib/litetable/doc/litetable-cn.pdf b/macros/latex/contrib/litetable/doc/litetable-cn.pdf
index ef997cdccc..a54163ad31 100644
--- a/macros/latex/contrib/litetable/doc/litetable-cn.pdf
+++ b/macros/latex/contrib/litetable/doc/litetable-cn.pdf
Binary files differ
diff --git a/macros/latex/contrib/litetable/doc/litetable-cn.tex b/macros/latex/contrib/litetable/doc/litetable-cn.tex
index 61bea4cb28..a38fb5b6dc 100644
--- a/macros/latex/contrib/litetable/doc/litetable-cn.tex
+++ b/macros/latex/contrib/litetable/doc/litetable-cn.tex
@@ -6,9 +6,9 @@
\hologoFontSetup{general = \sffamily}
\FrameSep = 0pt
\usepackage[fontset = none]{ctex}
-\setCJKmainfont[BoldFont = *-Bold]{LXGW WenKai}
-\setCJKsansfont[BoldFont = *-Bold]{LXGW WenKai}
-\setCJKmonofont[BoldFont = *-Bold]{LXGW WenKai}
+\setCJKmainfont[BoldFont = *-Medium]{LXGW WenKai}
+\setCJKsansfont[BoldFont = *-Medium]{LXGW WenKai}
+\setCJKmonofont[BoldFont = *-Medium]{LXGW WenKai Mono}
\usepackage[os = mac]{menukeys}
\AddToHook{env/function/before}{\vspace{-.3\baselineskip}}
\AddToHook{env/syntax/after}{\vspace{-.2\baselineskip}}
@@ -23,7 +23,7 @@
夏明宇 \texttt{<\href{mailto:xiamyphys@gmail.com}{xiamyphys@gmail.com}>}
\thanks{\href{https://github.com/ljguo1020}{郭李军}开发了读取 \meta{left} -> \meta{right} 型数据结构模块和低版本 \hologo{TeX} Live 兼容模块.}
}
-\date{Version 3.1B, \today}
+\date{Version 3.1C, \today}
\begin{document}
@@ -31,7 +31,7 @@
\section{介绍}
-\cls{litetable} 文档类提供了一个多彩的课程表设计,基于 \cls{article} 文档类,由 \pkg{expl3} 和 \pkg{tikz} 构建. 兼容发行版 \hologo{TeX} Live 2019 及更高版本,在 \hologo{pdfLaTeX} 和 \hologo{XeLaTeX} 编译器下均可正常运行. 本文档为 \cls{litetable} 文档类的中文用户手册,手册同时有\href{./litetable-en.pdf}{英文}和\href{./litetable-hk.pdf}{粤语}版本\footnote{\href{https://qm.qq.com/q/RyssAhG4qy}{QQ Group: 760570712}}.
+\cls{litetable} 文档类提供了一个多彩的课程表设计,基于 \cls{article} 文档类,由 \pkg{expl3} 和 \pkg{tikz} 构建. 兼容发行版 \hologo{TeX} Live 2019 及更高版本,在 \hologo{pdfLaTeX} 和 \hologo{XeLaTeX} 编译器下均可正常运行. 本文档为 \cls{litetable} 文档类的中文用户手册,手册同时有 \href{./litetable-en.pdf}{英文} 和 \href{./litetable-hk.pdf}{粤语} 版本\footnote{\href{https://qm.qq.com/q/RyssAhG4qy}{QQ Group: 760570712}}.
\section{载入 \cls{litetable} 并生成课程表框架}
@@ -39,7 +39,7 @@
\begin{framed}
\begin{verbatim}
- \documentclass{litetable}
+ \documentclass {litetable}
\end{verbatim}
\end{framed}
@@ -47,8 +47,8 @@
\begin{function}{\timelist,\weeklist}
\begin{syntax}
- \cs{timelist}\oarg{rows}\marg{time list} \cs{timelist}\marg{time list}\oarg{rows}
- \cs{weeklist}\oarg{default weeks}\marg{week list} \cs{weeklist}\marg{week list}\oarg{default weeks}
+ \cs{timelist} \oarg{rows} \marg{time list} \cs{timelist} \marg{time list} \oarg{rows}
+ \cs{weeklist} \oarg{default weeks} \marg{week list} \cs{weeklist} \marg{week list} \oarg{default weeks}
\end{syntax}
命令 \cs{timelist} 的可选参数可强制设定课程表的行数,命令 \cs{weeklist} 的可选参数可设定默认的星期数目并会在每个课程盒子的右下角显示. 两个命令的强制参数均接收数组,可分别在课程表的左侧添加时间列表、在课程表的顶部添加对应宽度比例的工作日. 输入数组的用例见Appendix \ref{mwe}.
@@ -58,7 +58,7 @@
\begin{function}{\more}
\begin{syntax}
- \cs{more}\marg{comment}
+ \cs{more} \marg{comment}
\end{syntax}
此命令可在页面的右下角添加备注.
@@ -66,7 +66,7 @@
\begin{function}{\maketable}
\begin{syntax}
- \cs{maketable}\oarg{keyvals}\marg{title}\oarg{keyvals}
+ \cs{maketable} \oarg{keyvals} \marg{title} \oarg{keyvals}
\end{syntax}
此命令可生成一个空白的课程表框架,需在命令 \cs{timelist},\cs{weeklist} 和 \cs{more} 后,并在带有 \cmd{[remember picture, overaly]} 选项的 \env{tikz} 环境中执行. 可选参数接收键 \keys{\cmdmac~color} \keys{\cmdmac~sem},可分别在设置课程表框架的背景色和在页面的右上角添加学期,键 \keys{\cmdmac~color} 的默认值为 \cmd{gray}. 强制参数可设定标题.
@@ -76,7 +76,7 @@
\begin{function}{\course}
\begin{syntax}
- \cs{course}\oarg{keyvals}\marg{start number}\oarg{keyvals}\marg{end number}\oarg{keyvals}
+ \cs{course} \oarg{keyvals} \marg{start number} \oarg{keyvals} \marg{end number} \oarg{keyvals}
\end{syntax}
\cs{course} 命令可在当前工作日添加课程盒子,需在命令 \cs{maketable} 后,并在带有 \cmd{[remember picture, overaly]} 选项的 \env{tikz} 环境中执行.
@@ -92,7 +92,7 @@
\begin{function}{\newday}
\begin{syntax}
- \cs{newday}\oarg{integral value}
+ \cs{newday} \oarg{integral value}
\end{syntax}
此命令可使其后面添加的课程盒子后移 \meta{intergal value} 个工作日. 可选参数的默认值为 \cmd{1},即后移 \cmd{1} 个工作日.
@@ -111,19 +111,19 @@
\begin{document}
- \timelist[13]
- {
- 08:05 -> 08:50, 08:55 -> 09:40, 10:00 -> 10:45, 10:50 -> 11:35,
- 11:40 -> 12:25, 13:30 -> 14:15, 14:20 -> 15:05, 15:15 -> 16:00,
- 16:05 -> 16:50, 18:30 -> 19:15, 19:20 -> 20:05, 20:10 -> 20:55
- }
- \weeklist[Weeks 1 - 16]
- {
- Mon -> 4, Tue -> 5, Wed -> 4, Thu -> 6, Fri -> 5
- }
- \more{Author: Mingyu Xia \& Lijun Guo}
-
- \begin{tikzpicture}[remember picture, overlay]
+ \timelist [ 13 ]
+ {
+ 08:05 -> 08:50, 08:55 -> 09:40, 10:00 -> 10:45, 10:50 -> 11:35,
+ 11:40 -> 12:25, 13:30 -> 14:15, 14:20 -> 15:05, 15:15 -> 16:00,
+ 16:05 -> 16:50, 18:30 -> 19:15, 19:20 -> 20:05, 20:10 -> 20:55
+ }
+ \weeklist [ Weeks 1 - 16 ]
+ {
+ Mon -> 4, Tue -> 5, Wed -> 4, Thu -> 6, Fri -> 5
+ }
+ \more { Author: Mingyu Xia \& Lijun Guo }
+
+ \begin{tikzpicture} [ remember picture, overlay ]
\maketable
\course [ subject = Keep on {\TeX}ing ] {10} {11}
\newday
diff --git a/macros/latex/contrib/litetable/doc/litetable-demo.pdf b/macros/latex/contrib/litetable/doc/litetable-demo.pdf
index 30e84ee31e..e3c19b6f50 100644
--- a/macros/latex/contrib/litetable/doc/litetable-demo.pdf
+++ b/macros/latex/contrib/litetable/doc/litetable-demo.pdf
Binary files differ
diff --git a/macros/latex/contrib/litetable/doc/litetable-demo.tex b/macros/latex/contrib/litetable/doc/litetable-demo.tex
index 32ab4d89e9..c20b1275a8 100644
--- a/macros/latex/contrib/litetable/doc/litetable-demo.tex
+++ b/macros/latex/contrib/litetable/doc/litetable-demo.tex
@@ -7,44 +7,44 @@
\begin{document}
\timelist [ 13 ]
-{
- 08:05 -> 08:50, 08:55 -> 09:40, 10:00 -> 10:45,
- 10:50 -> 11:35, 11:40 -> 12:25, 13:30 -> 14:15,
- 14:20 -> 15:05, 15:15 -> 16:00, 16:05 -> 16:50,
- 18:30 -> 19:15, 19:20 -> 20:05, 20:10 -> 20:55
-}
+ {
+ 08:05 -> 08:50, 08:55 -> 09:40, 10:00 -> 10:45,
+ 10:50 -> 11:35, 11:40 -> 12:25, 13:30 -> 14:15,
+ 14:20 -> 15:05, 15:15 -> 16:00, 16:05 -> 16:50,
+ 18:30 -> 19:15, 19:20 -> 20:05, 20:10 -> 20:55
+ }
\weeklist [ Weeks 1 - 16 ]
-{
- \scshape\texttwemoji{1f312} Mon -> 1,
- \scshape\texttwemoji{1f525} Tue -> 1,
- \scshape\texttwemoji{1f30a} Wed -> 1,
- \scshape\texttwemoji{1f332} Thu -> 1,
- \scshape\texttwemoji{1fa99} Fri -> 1
-}
+ {
+ \scshape\texttwemoji{1f312} Mon -> 1,
+ \scshape\texttwemoji{1f525} Tue -> 1,
+ \scshape\texttwemoji{1f30a} Wed -> 1,
+ \scshape\texttwemoji{1f332} Thu -> 1,
+ \scshape\texttwemoji{1fa99} Fri -> 1
+ }
\more
-{
- School Starts: 06 / 09 / 2024\quad Summer Vacation: 26 / 01 / 2025
-}
+ {
+ School Starts: 06 / 09 / 2024\quad Summer Vacation: 26 / 01 / 2025
+ }
-\begin{tikzpicture}[remember picture, overlay]
+\begin{tikzpicture} [ remember picture, overlay ]
\maketable [ color = MidnightBlue,
sem = SEM 6
] { Skyrmion's Course Schedule }
\course [ color = DarkBlue, subject = interface3,
- teacher = The {\LaTeX} Project
+ teacher = The \LaTeX{} Project
] {4} {5}
\newday
\course [ color = Purple, subject = expl3,
- teacher = The {\LaTeX} Project
+ teacher = The \LaTeX{} Project
] {8} {8}
\course [ color = FireBrick, subject = usrguide,
- teacher = {\LaTeX} Project Team, weeks = Weeks 7 - 14
+ teacher = \LaTeX{} Project Team, weeks = Weeks 7 - 14
] {1} {2}
\newday
- \course [ subject = Keep on {\TeX}ing ] {10} {11}
+ \course [ subject = Keep on \TeX{}ing ] {10} {11}
\newday
- \course [ color = Crimson, subject = Ti\textit kZ,
- teacher = The PGF/Ti\textit kZ Team
+ \course [ color = Crimson, subject = \textup{Ti\textit{k\/}Z},
+ teacher = The PGF/\textup{Ti\textit{k\/}Z} Team
] {3} {5}
\newday
\course [ color = DarkSlateGray, subject = litetable,
@@ -55,12 +55,9 @@
\clearpage
\timelist [ 12 ] { }
-\weeklist [ Weeks 1 - 16 ]
-{
- Mon -> 1, Tue -> 1, Wed -> 1, Thu -> 1, Fri -> 1
-}
+\weeklist [ Weeks 1 - 16 ] { Mon -> 1, Tue -> 1, Wed -> 1, Thu -> 1, Fri -> 1 }
-\begin{tikzpicture}[remember picture, overlay]
+\begin{tikzpicture} [ remember picture, overlay ]
\maketable { Skyrmion's Course Schedule }
%
\end{tikzpicture}
diff --git a/macros/latex/contrib/litetable/doc/litetable-en.pdf b/macros/latex/contrib/litetable/doc/litetable-en.pdf
index f6c9a4cf2a..90bd7e0b32 100644
--- a/macros/latex/contrib/litetable/doc/litetable-en.pdf
+++ b/macros/latex/contrib/litetable/doc/litetable-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/litetable/doc/litetable-en.tex b/macros/latex/contrib/litetable/doc/litetable-en.tex
index 17ab305070..f20c685d63 100644
--- a/macros/latex/contrib/litetable/doc/litetable-en.tex
+++ b/macros/latex/contrib/litetable/doc/litetable-en.tex
@@ -23,7 +23,7 @@
Mingyu Xia \texttt{<\href{mailto:xiamyphys@gmail.com}{xiamyphys@gmail.com}>}
\thanks{\href{https://github.com/ljguo1020}{Lijun Guo} developed modules for reading \meta{left} -> \meta{right} data structure and supporting low version \hologo {TeX} Live.}
}
-\date{Version 3.1B, \today}
+\date{Version 3.1C, \today}
\begin{document}
@@ -39,7 +39,7 @@ Just like loading any class, write
\begin{framed}
\begin{verbatim}
- \documentclass{litetable}
+ \documentclass {litetable}
\end{verbatim}
\end{framed}
@@ -47,18 +47,18 @@ One can load the \pkg{ctex} package and set the font to input the CJK characters
\begin{function}{\timelist,\weeklist}
\begin{syntax}
- \cs{timelist}\oarg{rows}\marg{time list} \cs{timelist}\marg{time list}\oarg{rows}
- \cs{weeklist}\oarg{default weeks}\marg{week list} \cs{weeklist}\marg{week list}\oarg{default weeks}
+ \cs{timelist} \oarg{rows} \marg{time list} \cs{timelist} \marg{time list} \oarg{rows}
+ \cs{weeklist} \oarg{default weeks} \marg{week list} \cs{weeklist} \marg{week list} \oarg{default weeks}
\end{syntax}
- The optional argument of the command \cs{timelist} can force the number of rows on the timetable, and that of the command \cs{weeklist} can set the default number of weeks and print it at every course box's southeast corner. Each mandatory argument of the two commands accepts an array that can add a time list to the left side of the timetable and add workdays with corresponding width ratios at the top of the timetable, respectively. The example for inputting the arrays is shown in Appendix \ref{mwe}
+ The optional argument of the command \cs{timelist} can force the number of rows on the timetable, and that of the command \cs{weeklist} can set the default number of weeks and print it at every course box's southeast corner. Each mandatory argument of the two commands accepts an array that can add a time list to the left side of the timetable and add workdays with corresponding width ratios at the top of the timetable, respectively. The example for inputting the arrays is shown in Appendix \ref{mwe}.
If the number of time arrays received by the command \cs{timelist} is greater than the forced number of rows, then the extra time sets are ignored, and it will return a warning. If one wants to add a series of numbers to the left side of the timetable without time, just leave the mandatory argument blank.
\end{function}
\begin{function}{\more}
\begin{syntax}
- \cs{more}\marg{comment}
+ \cs{more} \marg{comment}
\end{syntax}
This command can add a comment at the southwest corner of the page.
@@ -66,7 +66,7 @@ One can load the \pkg{ctex} package and set the font to input the CJK characters
\begin{function}{\maketable}
\begin{syntax}
- \cs{maketable}\oarg{keyvals}\marg{title}\oarg{keyvals}
+ \cs{maketable} \oarg{keyvals} \marg{title} \oarg{keyvals}
\end{syntax}
This command can create a blank timetable frame, and it should execute after commands \cs{timelist} and \cs{weeklist} in the \env{tikzpicture} environment with the option of \cmd{[remember picture, overaly]}. The optional argument accepts keys, it can set the background color of the timetable, and add the semester at the northeast corner of the page, the default value of the key \keys{\cmdmac~color} is \cmd{gray}. The mandatory argument can set the title.
@@ -76,7 +76,7 @@ One can load the \pkg{ctex} package and set the font to input the CJK characters
\begin{function}{\course}
\begin{syntax}
- \cs{course}\oarg{keyvals}\marg{start number}\oarg{keyvals}\marg{end number}\oarg{keyvals}
+ \cs{course} \oarg{keyvals} \marg{start number} \oarg{keyvals} \marg{end number} \oarg{keyvals}
\end{syntax}
\end{function}
@@ -92,7 +92,7 @@ The optional argument accepts the following keys: \keys{\cmdmac~color} \keys{\cm
\begin{function}{\newday}
\begin{syntax}
- \cs{newday}\oarg{intergal value}
+ \cs{newday} \oarg{intergal value}
\end{syntax}
This command has an optional argument that can move the course boxes right \meta{intergal value} working days. The default value of the optional argument is \cmd{1} to move right \cmd{1} workday.
@@ -111,24 +111,24 @@ The following MWE could generate a timetable of 13 lines but only the top 12 lin
\begin{document}
- \timelist[13]
- {
- 08:05 -> 08:50, 08:55 -> 09:40, 10:00 -> 10:45, 10:50 -> 11:35,
- 11:40 -> 12:25, 13:30 -> 14:15, 14:20 -> 15:05, 15:15 -> 16:00,
- 16:05 -> 16:50, 18:30 -> 19:15, 19:20 -> 20:05, 20:10 -> 20:55
- }
- \weeklist[Weeks 1 - 16]
- {
- Mon -> 4, Tue -> 5, Wed -> 4, Thu -> 6, Fri -> 5
- }
- \more{Author: Mingyu Xia \& Lijun Guo}
-
- \begin{tikzpicture}[remember picture, overlay]
+ \timelist [ 13 ]
+ {
+ 08:05 -> 08:50, 08:55 -> 09:40, 10:00 -> 10:45, 10:50 -> 11:35,
+ 11:40 -> 12:25, 13:30 -> 14:15, 14:20 -> 15:05, 15:15 -> 16:00,
+ 16:05 -> 16:50, 18:30 -> 19:15, 19:20 -> 20:05, 20:10 -> 20:55
+ }
+ \weeklist [ Weeks 1 - 16 ]
+ {
+ Mon -> 4, Tue -> 5, Wed -> 4, Thu -> 6, Fri -> 5
+ }
+ \more { Author: Mingyu Xia \& Lijun Guo }
+
+ \begin{tikzpicture} [ remember picture, overlay ]
\maketable
\course [ subject = Keep on {\TeX}ing ] {10} {11}
\newday
\course [ color = DarkSlateGray, subject = litetable,
- location = Hong Kong, teacher = M.Y. Xia
+ location = Hong Kong, teacher = M.Y. Xia
] {8} {8}
\end{tikzpicture}
diff --git a/macros/latex/contrib/litetable/doc/litetable-hk.pdf b/macros/latex/contrib/litetable/doc/litetable-hk.pdf
index d2f1234e75..4769589015 100644
--- a/macros/latex/contrib/litetable/doc/litetable-hk.pdf
+++ b/macros/latex/contrib/litetable/doc/litetable-hk.pdf
Binary files differ
diff --git a/macros/latex/contrib/litetable/doc/litetable-hk.tex b/macros/latex/contrib/litetable/doc/litetable-hk.tex
index 6f48cc6fd1..d0aef48c79 100644
--- a/macros/latex/contrib/litetable/doc/litetable-hk.tex
+++ b/macros/latex/contrib/litetable/doc/litetable-hk.tex
@@ -6,9 +6,9 @@
\hologoFontSetup{general = \sffamily}
\FrameSep = 0pt
\usepackage[fontset = none]{ctex}
-\setCJKmainfont[BoldFont = *-Bold]{LXGW WenKai}
-\setCJKsansfont[BoldFont = *-Bold]{LXGW WenKai}
-\setCJKmonofont[BoldFont = *-Bold]{LXGW WenKai}
+\setCJKmainfont[BoldFont = *-Medium]{LXGW WenKai}
+\setCJKsansfont[BoldFont = *-Medium]{LXGW WenKai}
+\setCJKmonofont[BoldFont = *-Medium]{LXGW WenKai Mono}
\usepackage[os = mac]{menukeys}
\AddToHook{env/function/before}{\vspace{-.3\baselineskip}}
\AddToHook{env/syntax/after}{\vspace{-.2\baselineskip}}
@@ -23,7 +23,7 @@
夏明宇 \texttt{<\href{mailto:xiamyphys@gmail.com}{xiamyphys@gmail.com}>}
\thanks{\href{https://github.com/ljguo1020}{郭李軍}開發咗讀取 \meta{left} -> \meta{right} 型資料結構糢塊同低版本 \hologo{TeX} Live 相容糢塊.}
}
-\date{Version 3.1B, \today}
+\date{Version 3.1C, \today}
\begin{document}
@@ -31,7 +31,7 @@
\section{介紹}
-\cls{litetable} 文檔類提供咗個多彩嘅課程表設計,基於 \cls{article} 文檔類,由 \pkg{expl3} 和 \pkg{tikz} 構建. 相容發行版 \hologo{TeX} Live 2019 同更高版本,喺 \hologo{pdfLaTeX} 同 \hologo{XeLaTeX} 編譯器下均可正常運行. 本文檔系 \cls{litetable} 文檔類嘅用户手冊放,手冊放同時有\href{./litetable-en.pdf}{英文}同\href{./litetable-cn.pdf}{官話}版本\footnote{\href{https://qm.qq.com/q/RyssAhG4qy}{QQ Group: 760570712}}.
+\cls{litetable} 文檔類提供咗個多彩嘅課程表設計,基於 \cls{article} 文檔類,由 \pkg{expl3} 和 \pkg{tikz} 構建. 相容發行版 \hologo{TeX} Live 2019 同更高版本,喺 \hologo{pdfLaTeX} 同 \hologo{XeLaTeX} 編譯器下均可正常運行. 本文檔系 \cls{litetable} 文檔類嘅用户手冊放,手冊放同時有 \href{./litetable-en.pdf}{英文} 同 \href{./litetable-cn.pdf}{官話} 版本\footnote{\href{https://qm.qq.com/q/RyssAhG4qy}{QQ Group: 760570712}}.
\section{載入 \cls{litetable} 並建置課程表框架}
@@ -39,7 +39,7 @@
\begin{framed}
\begin{verbatim}
- \documentclass{litetable}
+ \documentclass {litetable}
\end{verbatim}
\end{framed}
@@ -47,8 +47,8 @@
\begin{function}{\timelist,\weeklist}
\begin{syntax}
- \cs{timelist}\oarg{rows}\marg{time list} \cs{timelist}\marg{time list}\oarg{rows}
- \cs{weeklist}\oarg{default weeks}\marg{week list} \cs{weeklist}\marg{week list}\oarg{default weeks}
+ \cs{timelist} \oarg{rows} \marg{time list} \cs{timelist} \marg{time list} \oarg{rows}
+ \cs{weeklist} \oarg{default weeks} \marg{week list} \cs{weeklist} \marg{week list} \oarg{default weeks}
\end{syntax}
命令 \cs{timelist} 嘅可選參數可強制設定課程表嘅行數,命令 \cs{weeklist} 嘅可選參數可設定預設嘅星期數目並會喺每個課程盒子嘅右下角顯示. 兩個命令嘅強制參數均接受數組,可分別就系課程表嘅左側添加時間表、喺課程表嘅頂部添加對應寬度比例嘅工作日. 輸入數組嘅用例見Appendix \ref{mwe}.
@@ -58,7 +58,7 @@
\begin{function}{\more}
\begin{syntax}
- \cs{more}\marg{comment}
+ \cs{more} \marg{comment}
\end{syntax}
此命令可喺頁面嘅嘅右下角添加備注.
@@ -66,7 +66,7 @@
\begin{function}{\maketable}
\begin{syntax}
- \cs{maketable}\oarg{keyvals}\marg{title}\oarg{keyvals}
+ \cs{maketable} \oarg{keyvals} \marg{title} \oarg{keyvals}
\end{syntax}
此命令可建置一個空白嘅課程表框架,使喺命令 \cs{timelist},\cs{weeklist} 同 \cs{more} 後,並喺帶有 \cmd{[remember picture, overaly]} 選項嘅 \env{tikz} 環境中執行. 可選引數接受鍵 \keys{\cmdmac~color} \keys{\cmdmac~sem},可分別就喺設置課程表框架嘅背景色同喺頁面嘅嘅右度角添加學期,鍵 \keys{\cmdmac~color} 嘅默認值為 \cmd{gray}. 強制參數可設定標題.
@@ -76,7 +76,7 @@
\begin{function}{\course}
\begin{syntax}
- \cs{course}\oarg{keyvals}\marg{start number}\oarg{keyvals}\marg{end number}\oarg{keyvals}
+ \cs{course} \oarg{keyvals} \marg{start number} \oarg{keyvals} \marg{end number} \oarg{keyvals}
\end{syntax}
\cs{course} 命令可喺當前工作日添加課程盒子,要喺命令 \cs{maketable} 後,並喺帶有 \cmd{remember picture,overaly} 選項嘅 \env{tikzpicture} 環境中執行.
@@ -92,7 +92,7 @@
\begin{function}{\newday}
\begin{syntax}
- \cs{newday}\oarg{integral value}
+ \cs{newday} \oarg{integral value}
\end{syntax}
此命令有一個可選參數,可令其後面添加嘅課程盒子後移 \meta{intergal value} 個工作日. 可選參數嘅默認值為\cmd{1},即後移\cmd{1}個工作日.
@@ -111,24 +111,24 @@
\begin{document}
- \timelist[13]
- {
- 08:05 -> 08:50, 08:55 -> 09:40, 10:00 -> 10:45, 10:50 -> 11:35,
- 11:40 -> 12:25, 13:30 -> 14:15, 14:20 -> 15:05, 15:15 -> 16:00,
- 16:05 -> 16:50, 18:30 -> 19:15, 19:20 -> 20:05, 20:10 -> 20:55
- }
- \weeklist[Weeks 1 - 16]
- {
- Mon -> 4, Tue -> 5, Wed -> 4, Thu -> 6, Fri -> 5
- }
- \more{Author: Mingyu Xia \& Lijun Guo}
-
- \begin{tikzpicture}[remember picture, overlay]
+ \timelist [ 13 ]
+ {
+ 08:05 -> 08:50, 08:55 -> 09:40, 10:00 -> 10:45, 10:50 -> 11:35,
+ 11:40 -> 12:25, 13:30 -> 14:15, 14:20 -> 15:05, 15:15 -> 16:00,
+ 16:05 -> 16:50, 18:30 -> 19:15, 19:20 -> 20:05, 20:10 -> 20:55
+ }
+ \weeklist [ Weeks 1 - 16 ]
+ {
+ Mon -> 4, Tue -> 5, Wed -> 4, Thu -> 6, Fri -> 5
+ }
+ \more { Author: Mingyu Xia \& Lijun Guo }
+
+ \begin{tikzpicture} [ remember picture, overlay ]
\maketable
\course [ subject = Keep on {\TeX}ing ] {10} {11}
\newday
\course [ color = DarkSlateGray, subject = litetable,
- location = Hong Kong, teacher = M.Y. Xia
+ location = Hong Kong, teacher = M.Y. Xia
] {8} {8}
\end{tikzpicture}
diff --git a/macros/latex/contrib/litetable/tex/litetable.cls b/macros/latex/contrib/litetable/tex/litetable.cls
index 556b766c28..864eaec8f8 100644
--- a/macros/latex/contrib/litetable/tex/litetable.cls
+++ b/macros/latex/contrib/litetable/tex/litetable.cls
@@ -1,24 +1,23 @@
-%% ***********************************************************
-%% Copyright 2024 by M.Y. XIA <xiamyphys@gmail.com> *
-%% *
-%% This work may be distributed and/or modified under *
-%% the conditions of the LaTeX Project Public License *
-%% *
-%% http://www.latex-project.org/lppl.txt *
-%% *
-%% either version 1.3c of this license or any later *
-%% version. *
-%% *
-%% This work has the LPPL maintenance status `maintained'. *
-%% *
-% The Current Maintainers of this work are M.Y. XIA & L.J. Guo
-%% *
-%% This work consists of the files litetable.cls, *
-%% and README.md. *
-%% available at https://github.com/xiamyphys/litetable *
-%% ***********************************************************
+%% *********************************************************************
+%% Copyright 2024 by M.Y. XIA <xiamyphys@gmail.com> *
+%% *
+%% This work may be distributed and/or modified under the *
+%% conditions of the LaTeX Project Public License *
+%% *
+%% http://www.latex-project.org/lppl.txt *
+%% *
+%% either version 1.3c of this license or any later version. *
+%% *
+%% This work has the LPPL maintenance status `maintained'. *
+%% *
+%% The Current Maintainers of this work are M.Y. XIA & L.J. Guo *
+%% *
+%% This work consists of the files litetable.cls, *
+%% and README.md. *
+%% available at https://github.com/xiamyphys/litetable *
+%% *********************************************************************
\RequirePackage{xparse}% For TeX Live 2019 - 2020 Compatibility
-\ProvidesExplClass{litetable}{2024/10/01}{3.1B}{Course Schedule}
+\ProvidesExplClass {litetable} {2024/10/09} {3.1C} {Course Schedule}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax
@@ -29,422 +28,432 @@
% Module for texlive 2021 and later (by @ljguo)
\cs_if_exist:NF \clist_put_right:Ne
-{ \cs_generate_variant:Nn \clist_put_right:Nn { Ne } }
+ { \cs_generate_variant:Nn \clist_put_right:Nn { Ne } }
\cs_if_exist:NF \clist_set:Ne
-{ \cs_generate_variant:Nn \clist_set:Nn { Ne } }
+ { \cs_generate_variant:Nn \clist_set:Nn { Ne } }
\cs_if_exist:NT \clist_count:e
-{ \cs_generate_variant:Nn \clist_count:n { e } }
+ { \cs_generate_variant:Nn \clist_count:n { e } }
\cs_if_exist:NF \exp_args:NNNe
-{
- \cs_new:Npn \exp_args:NNNe #1#2#3#4
{
- \exp_after:wN #1
- \exp_after:wN #2
- \exp_after:wN #3
- \tex_expanded:D { {#4} }
+ \cs_new:Npn \exp_args:NNNe #1#2#3#4
+ {
+ \exp_after:wN #1
+ \exp_after:wN #2
+ \exp_after:wN #3
+ \tex_expanded:D { {#4} }
+ }
}
-}
% Module for left -> right data structure (by @ljguo)
\cs_new_protected_nopar:Npn \__litetable_get_left:nN #1#2
-{
- \group_begin:
- \seq_set_split:Nnn \l__litetable_tmpa_seq { -> } { #1 }
- \exp_args:NNNe \group_end: \tl_set:Nn #2
- { \seq_item:Nn \l__litetable_tmpa_seq { 1 } }
-}
+ {
+ \group_begin:
+ \seq_set_split:Nnn \l__litetable_tmpa_seq { -> } {#1}
+ \exp_args:NNNe \group_end: \tl_set:Nn #2
+ { \seq_item:Nn \l__litetable_tmpa_seq { 1 } }
+ }
\cs_new_protected_nopar:Npn \__litetable_get_right:nN #1#2
-{
- \group_begin:
- \seq_set_split:Nnn \l__litetable_tmpa_seq { -> } { #1 }
- \exp_args:NNNe \group_end: \tl_set:Nn #2
- { \seq_item:Nn \l__litetable_tmpa_seq { 2 } }
-}
+ {
+ \group_begin:
+ \seq_set_split:Nnn \l__litetable_tmpa_seq { -> } {#1}
+ \exp_args:NNNe \group_end: \tl_set:Nn #2
+ { \seq_item:Nn \l__litetable_tmpa_seq { 2 } }
+ }
\cs_generate_variant:Nn \__litetable_get_left:nN { e }
\cs_generate_variant:Nn \__litetable_get_right:nN { e }
\int_new:N \l__time_num_int
\dim_new:N \l__time_vunit_dim
\cs_new_protected:Npn \litetable_msg_new:nn #1#2
-{ \msg_new:nnn { litetable} { #1 } { #2 } }
+ { \msg_new:nnn { litetable } {#1} {#2} }
\cs_new_protected:Npn \litetable_msg_warning:n #1
-{ \msg_warning:nn { litetable } { #1 } }
+ { \msg_warning:nn { litetable } {#1} }
\litetable_msg_new:nn { timelist }
-{ \exp_not:N \timelist~extra~time~group(s)~were~ignored }
+ { \exp_not:N \timelist~extra~time~group(s)~were~ignored }
\cs_new_protected_nopar:Npn \litetable_timelist:nn #1#2
-{
- \clist_set:Nn \l__litetable_timelist_clist { #2 }
- \tl_if_empty:nTF { #1 }
- {
- \int_set:Nn \l__time_num_int
- {
- \clist_count:N \l__litetable_timelist_clist
- }
- }
{
- \int_set:Nn \l__time_num_int { #1 }
- \int_compare:nNnTF { #1 } <
- { \clist_count:N \l__litetable_timelist_clist }
- {
- \int_set:Nn \l__time_num_int
+ \clist_set:Nn \l__litetable_timelist_clist {#2}
+ \tl_if_empty:nTF {#1}
{
- \clist_count:N \l__litetable_timelist_clist
+ \int_set:Nn \l__time_num_int
+ { \clist_count:N \l__litetable_timelist_clist }
}
- \litetable_msg_warning:n { timelist }
- } { \int_set:Nn \l__time_num_int { #1 } }
- }
- \dim_set:Nn \l__time_vunit_dim
- {
- \fp_eval:n {1/(2\l__time_num_int+3.5)}\paperheight
+ {
+ \int_set:Nn \l__time_num_int {#1}
+ \int_compare:nNnTF {#1} <
+ { \clist_count:N \l__litetable_timelist_clist }
+ {
+ \int_set:Nn \l__time_num_int
+ { \clist_count:N \l__litetable_timelist_clist }
+ \litetable_msg_warning:n { timelist }
+ }
+ { \int_set:Nn \l__time_num_int {#1} }
+ }
+ \dim_set:Nn \l__time_vunit_dim
+ { \fp_eval:n { 1/( 2\l__time_num_int + 3.5 ) } \paperheight }
}
-}
\NewDocumentCommand \timelist { O{} m O{} }
-{ \litetable_timelist:nn { #1#3 } { #2 } }
+ { \litetable_timelist:nn { #1 #3 } {#2} }
\clist_new:N \l__week_ratio_clist
\clist_new:N \l__week_accum_clist
\int_new:N \l__week_num_int
\dim_new:N \l__week_hunit_dim
\cs_new_protected_nopar:Npn \litetable_weeklist:nn #1#2
-{
- \tl_set:Nn \l__default_weeks_tl { #1 }
- \clist_set:Nn \l__litetable_weeklist_clist { #2 }
- \int_step_inline:nn
- {
- \clist_count:N \l__litetable_weeklist_clist
- }
- {
- \__litetable_get_right:eN
- {
- \clist_item:Nn \l__litetable_weeklist_clist {##1}
- } \l__litetable_tmpb_tl
- \clist_put_right:Ne \l__week_ratio_clist
- {
- \l__litetable_tmpb_tl
- }
- }
- \int_step_inline:nn
{
- \clist_count:N \l__litetable_weeklist_clist
- }
- {
- \clist_clear:N \l__week_accumtmp_clist
- \int_step_inline:nn { ##1 }
- {
- \clist_put_right:Ne \l__week_accumtmp_clist
+ \tl_set:Nn \l__default_weeks_tl {#1}
+ \clist_set:Nn \l__litetable_weeklist_clist {#2}
+ \int_step_inline:nn
+ { \clist_count:N \l__litetable_weeklist_clist }
{
- \clist_item:Nn \l__week_ratio_clist { ####1 }
+ \__litetable_get_right:eN
+ {
+ \clist_item:Nn \l__litetable_weeklist_clist {##1}
+ } \l__litetable_tmpb_tl
+ \clist_put_right:Ne \l__week_ratio_clist
+ { \l__litetable_tmpb_tl }
}
- }
- \clist_put_right:Ne \l__week_accum_clist
- {
- \int_eval:n { \clist_use:Nn \l__week_accumtmp_clist { + } }
- }
- }
- \int_set:Nn \l__week_num_int
- {
- \clist_item:Nn \l__week_accum_clist
- {
- \clist_count:N \l__litetable_weeklist_clist
- }
- }
- \dim_set:Nn \l__week_hunit_dim
- {
- \fp_eval:n {1/\l__week_num_int*14/15}\paperwidth
+ \int_step_inline:nn
+ { \clist_count:N \l__litetable_weeklist_clist }
+ {
+ \clist_clear:N \l__week_accumtmp_clist
+ \int_step_inline:nn {##1}
+ {
+ \clist_put_right:Ne \l__week_accumtmp_clist
+ { \clist_item:Nn \l__week_ratio_clist {####1} }
+ }
+ \clist_put_right:Ne \l__week_accum_clist
+ { \int_eval:n { \clist_use:Nn \l__week_accumtmp_clist { + } } }
+ }
+ \int_set:Nn \l__week_num_int
+ {
+ \clist_item:Nn \l__week_accum_clist
+ { \clist_count:N \l__litetable_weeklist_clist }
+ }
+ \dim_set:Nn \l__week_hunit_dim
+ { \fp_eval:n { 1/\l__week_num_int * 14/15 } \paperwidth }
}
-}
\NewDocumentCommand \weeklist { O{} m O{} }
-{ \litetable_weeklist:nn { #1#3 } { #2 } }
+ { \litetable_weeklist:nn { #1 #3 } {#2} }
\NewDocumentCommand \more { m }
-{ \tl_set:Nn \l__litetable_comment_tl { #1 } }
+ { \tl_set:Nn \l__litetable_comment_tl {#1} }
\int_new:N \l__litetable_week_day_int
-\int_set:Nn \l__litetable_week_day_int {1}
-\NewDocumentCommand \newday { O {1} }
-{ \int_add:Nn \l__litetable_week_day_int { #1 } }
+\int_set:Nn \l__litetable_week_day_int { 1 }
+\NewDocumentCommand \newday { O{1} }
+ { \int_add:Nn \l__litetable_week_day_int {#1} }
\keys_define:nn { litetable / frame }
-{
- sem.tl_set:N = \l__bg_sem_tl,
- color.tl_set:N = \l__bg_color_tl,
- color.initial:n = gray,
-}
-\cs_new_protected_nopar:Npn \litetable_maketable:nn #1
-{
- % Darker Block at top
- \fill [ \l__bg_color_tl!5 ] (current~page.north~west)
- rectangle + (\paperwidth,-1.5\l__time_vunit_dim)
- node [ midway, black, font = \huge\bfseries ] {#1};
- \tl_if_empty:NF { \l__bg_sem_tl }% Semester
- {
- \node [ shift = {(-.02\paperwidth,-.75\l__time_vunit_dim)},
- left, rectangle, fill = DarkBlue!10,
- text = DarkBlue!60, inner~sep = 2ex,
- rounded~corners = 8pt, font = \large
- ] at (current~page.north~east)
- {\ensuremath\rightleftharpoons\ \l__bg_sem_tl};
- }
- % Darker Blocks
- \int_step_inline:nnnn {0} {2} {\l__time_num_int}
- {
- \filldraw [ fill = \l__bg_color_tl!5, draw = gray,
- thick, densely~dashed, line~cap = round
- ]
- ([shift = {(-.4pt,\fp_eval:n {-2*##1-2.5}\l__time_vunit_dim)}]
- current~page.north~west) rectangle +
- ({\paperwidth+.8pt},-2\l__time_vunit_dim);
- }
- % Classes numbering
- \clist_if_empty:NTF {\l__litetable_timelist_clist}
{
- \int_step_inline:nn {\l__time_num_int}
- {
- \node [ shift = {(\paperwidth/30,{\fp_eval:n {
- -2*##1-1.5}\l__time_vunit_dim})
- }, darkgray!80, font = \large\ttfamily\bfseries
- ] at (current~page.north~west) {##1};
- }
+ sem.tl_set:N = \l__bg_sem_tl,
+ color.tl_set:N = \l__bg_color_tl,
+ color.initial:n = gray
}
+\cs_new_protected_nopar:Npn \litetable_maketable:nn #1
{
- \int_step_inline:nn {\l__time_num_int}
- {
- \node [ shift = {(\paperwidth/30,\fp_eval:n {
- -2*##1-1}\l__time_vunit_dim)
- }, darkgray!80, font = \large\ttfamily\bfseries
- ] at (current~page.north~west) {##1};
- }
- % Classes time
- \int_step_inline:nn
- {
- \clist_count:N \l__litetable_timelist_clist
- }
- {
- \__litetable_get_left:eN
+ \fill [ \l__bg_color_tl!5 ]
+ (current~page.north~west) rectangle +
+ (\paperwidth, -1.5\l__time_vunit_dim)
+ node [ midway, black, font = \huge\bfseries ] {#1};
+ \tl_if_empty:NF { \l__bg_sem_tl }
{
- \clist_item:Nn \l__litetable_timelist_clist {##1}
- } \l__litetable_tmpa_tl
- \__litetable_get_right:eN
+ \node [ shift = {(-.02\paperwidth, -.75\l__time_vunit_dim)},
+ left, rectangle, fill = DarkBlue!10, text = DarkBlue!60,
+ inner~sep = 2ex, rounded~corners = 8pt, font = \large
+ ] at (current~page.north~east)
+ { \ensuremath\rightleftharpoons\ \l__bg_sem_tl };
+ }
+ % Darker Blocks
+ \int_step_inline:nnnn { 0 } { 2 } { \l__time_num_int }
{
- \clist_item:Nn \l__litetable_timelist_clist {##1}
- } \l__litetable_tmpb_tl
- \node [ shift = {(\paperwidth/30,\fp_eval:n {
- -1.9-2*##1}\l__time_vunit_dim)
- }, gray, font = \ttfamily ,align = center
- ] at (current~page.north~west)
- {\l__litetable_tmpa_tl\\\l__litetable_tmpb_tl};
- }
- }
- % Weekdays
- \int_step_inline:nn
- {
- \clist_count:N \l__litetable_weeklist_clist
- }
- {
- \__litetable_get_left:eN
- {
- \clist_item:Nn \l__litetable_weeklist_clist {##1}
- } \l__litetable_tmpa_tl
- \node [ font = \large\bfseries,
- shift = {(\fp_eval:n {
- (\clist_item:Nn \l__week_accum_clist {##1}
- -\clist_item:Nn \l__week_ratio_clist {##1}/2)/
- \l__week_num_int*14/15+1/15}\paperwidth,
- -2\l__time_vunit_dim)}
- ] at (current~page.north~west) { \l__litetable_tmpa_tl };
+ \filldraw
+ [ fill = \l__bg_color_tl!5, draw = gray,
+ thick, densely~dashed, line~cap = round
+ ]
+ ([shift = {(-.4pt, \fp_eval:n { - 2 * ##1 - 2.5 } \l__time_vunit_dim)}]
+ current~page.north~west
+ ) rectangle + ({\paperwidth + .8pt}, -2\l__time_vunit_dim);
+ }
+ % Classes numbering
+ \clist_if_empty:NTF { \l__litetable_timelist_clist }
+ {
+ \int_step_inline:nn { \l__time_num_int }
+ {
+ \node
+ [ shift =
+ {(
+ \paperwidth/30,
+ \fp_eval:n { - 2 * ##1 - 1.5 } \l__time_vunit_dim
+ )}, darkgray!80, font = \large\ttfamily\bfseries
+ ] at (current~page.north~west) {##1};
+ }
+ }
+ {
+ \int_step_inline:nn { \l__time_num_int }
+ {
+ \node
+ [ shift =
+ {(
+ \paperwidth/30,
+ \fp_eval:n { - 2 * ##1 - 1 } \l__time_vunit_dim
+ )}, darkgray!80, font = \large\ttfamily\bfseries
+ ] at (current~page.north~west) {##1};
+ }
+ % Classes time
+ \int_step_inline:nn
+ { \clist_count:N \l__litetable_timelist_clist }
+ {
+ \__litetable_get_left:eN
+ {
+ \clist_item:Nn \l__litetable_timelist_clist {##1}
+ } \l__litetable_tmpa_tl
+ \__litetable_get_right:eN
+ {
+ \clist_item:Nn \l__litetable_timelist_clist {##1}
+ } \l__litetable_tmpb_tl
+ \node
+ [ shift =
+ {(
+ \paperwidth/30,
+ \fp_eval:n { -1.9 - 2 * ##1 } \l__time_vunit_dim
+ )}, gray, font = \ttfamily, align = center
+ ] at (current~page.north~west)
+ { \l__litetable_tmpa_tl\\\l__litetable_tmpb_tl };
+ }
+ }
+ % Weekdays
+ \int_step_inline:nn
+ { \clist_count:N \l__litetable_weeklist_clist }
+ {
+ \__litetable_get_left:eN
+ {
+ \clist_item:Nn \l__litetable_weeklist_clist {##1}
+ } \l__litetable_tmpa_tl
+ \node
+ [ shift =
+ {(\fp_eval:n
+ {(
+ \clist_item:Nn \l__week_accum_clist {##1} -
+ \clist_item:Nn \l__week_ratio_clist {##1}/2
+ )/\l__week_num_int * 14/15 + 1/15
+ } \paperwidth, -2\l__time_vunit_dim
+ )},
+ font = \large\bfseries
+ ] at (current~page.north~west) { \l__litetable_tmpa_tl };
+ }
+ % Comment
+ \tl_if_empty:NF \l__litetable_comment_tl
+ {
+ \node [ yshift = .5\l__time_vunit_dim, left = 1ex,
+ darkgray, font = \small\bfseries
+ ] at (current~page.south~east)
+ { \l__litetable_comment_tl };
+ }
+ \tl_gclear:N \l__litetable_comment_tl
}
- % Comment
- \tl_if_empty:NF \l__litetable_comment_tl
+\NewDocumentCommand \maketable { O{} m O{} }
{
- \node [ yshift = .5\l__time_vunit_dim,
- left = 1ex, darkgray, font = \small\bfseries
- ] at (current~page.south~east)
- { \l__litetable_comment_tl };
+ \group_begin:
+ \keys_set:nn { litetable / frame } { #1 #3 }
+ \litetable_maketable:nn {#2}
+ \group_end:
}
- \tl_gclear:N \l__litetable_comment_tl
-}
-\NewDocumentCommand \maketable { O{} m O{} }
-{
- \group_begin:
- \keys_set:nn { litetable / frame } { #1#3 }
- \litetable_maketable:nn { #2 }
- \group_end:
-}
\keys_define:nn { litetable / course }
-{
- color.tl_set:N = \l__course_color_tl,
- color.initial:n = teal,
- subject.tl_set:N = \l__course_subject_tl,
- teacher.tl_set:N = \l__course_teacher_tl,
- location.tl_set:N = \l__course_location_tl,
- weeks.tl_set:N = \l__default_weeks_tl,
- weeks.initial:n = \l__default_weeks_tl,
-}
+ {
+ color.tl_set:N = \l__course_color_tl,
+ color.initial:n = teal,
+ subject.tl_set:N = \l__course_subject_tl,
+ teacher.tl_set:N = \l__course_teacher_tl,
+ location.tl_set:N = \l__course_location_tl,
+ weeks.tl_set:N = \l__default_weeks_tl,
+ weeks.initial:n = \l__default_weeks_tl,
+ }
\dim_new:N \l__course_infoshift_dim
\cs_new_protected_nopar:Npn \__litetable_course_box_aux:nn #1#2
-{
- % Course box fg
- \begin{scope}
- \clip [ preaction = {draw, ultra~thick, \l__course_color_tl!60},
- preaction = {fill, \l__course_color_tl!10},
- rounded~corners = 8pt ]
- ([shift = {(
- \fp_eval:n
- {
- \clist_item:Nn \l__week_accum_clist
- {\l__litetable_week_day_int}-
- \clist_item:Nn \l__week_ratio_clist
- {\l__litetable_week_day_int}
- }\l__week_hunit_dim+\paperwidth/15+1.2pt,
- \fp_eval:n {-.5-2*#1}\l__time_vunit_dim-1.2pt)
- }]current~page.north~west) rectangle + (
- \clist_item:Nn \l__week_ratio_clist {\l__litetable_week_day_int}
- \l__week_hunit_dim-2.4pt,
- \fp_eval:n {2*(#1-#2-1)}\l__time_vunit_dim+2.4pt);
- % Course box bg
- \fill [ \l__course_color_tl!60 ]
- ([shift = {(
- \fp_eval:n {
- \clist_item:Nn \l__week_accum_clist
- {\l__litetable_week_day_int}-
- \clist_item:Nn \l__week_ratio_clist
- {\l__litetable_week_day_int}
- }\l__week_hunit_dim+\paperwidth/15,
- \fp_eval:n {-.5-2*#1}\l__time_vunit_dim)
- }]current~page.north~west) rectangle + (
- \clist_item:Nn \l__week_ratio_clist{\l__litetable_week_day_int}
- \l__week_hunit_dim,-.5\l__time_vunit_dim);
- \end{scope}
- % Course info
- \tl_if_eq:NNTF {#1} {#2}% Single-unit height course box
{
- \bool_if:nTF
- {
- \tl_if_empty_p:N \l__course_location_tl &&
- \tl_if_empty_p:N \l__course_teacher_tl
- }
- {\tl_set:Nn \l_shortcourse_anchor_tl { }}
- {\tl_set:Nn \l_shortcourse_anchor_tl { above }}
- \cs_if_exist:NT {\l__course_subject_tl }
- {
- \node [ shift = {(\fp_eval:n {
- \clist_item:Nn \l__week_accum_clist
- {\l__litetable_week_day_int}-
+ % Course box fg
+ \begin{scope}
+ \clip [ preaction = { draw, ultra~thick, \l__course_color_tl!60 },
+ preaction = { fill, \l__course_color_tl!10 },
+ rounded~corners = 8pt
+ ] ([shift =
+ {(
+ \fp_eval:n
+ {
+ \clist_item:Nn \l__week_accum_clist
+ { \l__litetable_week_day_int } -
+ \clist_item:Nn \l__week_ratio_clist
+ { \l__litetable_week_day_int }
+ } \l__week_hunit_dim + \paperwidth/15 + 1.2pt,
+ \fp_eval:n { - .5 - 2 * #1 } \l__time_vunit_dim - 1.2pt
+ )}
+ ]current~page.north~west) rectangle +
+ (
\clist_item:Nn \l__week_ratio_clist
- {\l__litetable_week_day_int}/2
- }\l__week_hunit_dim+\paperwidth/15,
- \fp_eval:n {-1.75-#1-#2}\l__time_vunit_dim)},
- \l_shortcourse_anchor_tl, \l__course_color_tl!60,
- align = center, font = \large\bfseries
- ] at (current~page.north~west)
- { \l__course_subject_tl };
- }
- \bool_if:nTF
- {
- !\tl_if_empty_p:N \l__course_location_tl &&
- !\tl_if_empty_p:N \l__course_teacher_tl
- }
- {\tl_set:Nn \l_shortcourse_sep_tl { ,~ }}
- {\tl_set:Nn \l_shortcourse_sep_tl { }}
- \node [ shift = {(\fp_eval:n {
- \clist_item:Nn \l__week_accum_clist
- {\l__litetable_week_day_int}-
+ { \l__litetable_week_day_int } \l__week_hunit_dim - 2.4pt,
+ \fp_eval:n { 2 * ( #1 - #2 - 1 ) } \l__time_vunit_dim + 2.4pt
+ );
+ % Course box bg
+ \fill [ \l__course_color_tl!60 ]
+ ([shift =
+ {(
+ \fp_eval:n
+ {
+ \clist_item:Nn \l__week_accum_clist
+ { \l__litetable_week_day_int } -
+ \clist_item:Nn \l__week_ratio_clist
+ { \l__litetable_week_day_int }
+ } \l__week_hunit_dim + \paperwidth/15,
+ \fp_eval:n { - .5 - 2 * #1 } \l__time_vunit_dim
+ )}
+ ]current~page.north~west) rectangle +
+ (
\clist_item:Nn \l__week_ratio_clist
- {\l__litetable_week_day_int}/2
- }\l__week_hunit_dim+\paperwidth/15,
- \fp_eval:n {-1.75-#1-#2}\l__time_vunit_dim)},
- below, \l__course_color_tl!60, align = center
+ { \l__litetable_week_day_int } \l__week_hunit_dim,
+ - .5\l__time_vunit_dim
+ );
+ \end{scope}
+ % Course info
+ \tl_if_eq:NNTF {#1} {#2}% Single-unit height course box
+ {
+ \bool_if:nTF
+ {
+ \tl_if_empty_p:N \l__course_location_tl &&
+ \tl_if_empty_p:N \l__course_teacher_tl
+ }
+ { \tl_set:Nn \l_shortcourse_anchor_tl { } }
+ { \tl_set:Nn \l_shortcourse_anchor_tl { above } }
+ \cs_if_exist:NT { \l__course_subject_tl }
+ {
+ \node
+ [ shift =
+ {(
+ \fp_eval:n
+ {
+ \clist_item:Nn \l__week_accum_clist
+ { \l__litetable_week_day_int } -
+ \clist_item:Nn \l__week_ratio_clist
+ { \l__litetable_week_day_int }/2
+ } \l__week_hunit_dim + \paperwidth/15,
+ \fp_eval:n { -1.75 - #1 - #2 } \l__time_vunit_dim
+ )}, align = center, font = \large\bfseries,
+ \l_shortcourse_anchor_tl, \l__course_color_tl!60
+ ] at (current~page.north~west) { \l__course_subject_tl };
+ }
+ \bool_if:nTF
+ {
+ !\tl_if_empty_p:N \l__course_location_tl &&
+ !\tl_if_empty_p:N \l__course_teacher_tl
+ }
+ { \tl_set:Nn \l_shortcourse_sep_tl { ,~ } }
+ { \tl_set:Nn \l_shortcourse_sep_tl { } }
+ \node
+ [ shift =
+ {(
+ \fp_eval:n
+ {
+ \clist_item:Nn \l__week_accum_clist
+ { \l__litetable_week_day_int } -
+ \clist_item:Nn \l__week_ratio_clist
+ { \l__litetable_week_day_int }/2
+ } \l__week_hunit_dim + \paperwidth/15,
+ \fp_eval:n { - 1.75 - #1 - #2 } \l__time_vunit_dim
+ )}, below, \l__course_color_tl!60, align = center
] at (current~page.north~west)
- {
- \tl_if_exist:NT { \l__course_location_tl }
- { \l__course_location_tl }
- \l_shortcourse_sep_tl
- \tl_if_exist:NT { \l__course_teacher_tl }
- { \l__course_teacher_tl }
- };
- }
- {
- \bool_if:nTF% Multiply-unit height course box
- {
- \tl_if_empty_p:N \l__course_location_tl &&
- \tl_if_empty_p:N \l__course_teacher_tl
- }
- {
- \tl_set:Nn \l_course_anchor_tl {}
- \dim_set:Nn \l__course_infoshift_dim { 0pt }
- }
- {
- \tl_set:Nn \l_course_anchor_tl { above }
- \dim_set:Nn \l__course_infoshift_dim { \l__time_vunit_dim/8 }
- }
- \cs_if_exist:NT { \l__course_subject_tl }
- {
- \node [ font = \large\bfseries, \l_course_anchor_tl,
- shift = {(\fp_eval:n {
- \clist_item:Nn \l__week_accum_clist
- {\l__litetable_week_day_int}-
- \clist_item:Nn \l__week_ratio_clist
- {\l__litetable_week_day_int }/2
- }\l__week_hunit_dim+\paperwidth/15,
- \fp_eval:n {-1.5-#1-#2}\l__time_vunit_dim)},
- yshift = \l__course_infoshift_dim,
- \l__course_color_tl!60, align = center,
- ] at (current~page.north~west)
- { \l__course_subject_tl };
- }
- \bool_if:nTF
- {
- !\tl_if_empty_p:N \l__course_location_tl &&
- !\tl_if_empty_p:N \l__course_teacher_tl
- }
- {
- \tl_set:Nn \l_courseinfo_sep_tl { \\ }
- }
- {
- \tl_set:Nn \l_courseinfo_sep_tl { }
- }
- \node [ below, \l__course_color_tl!60, align = center,
- shift = {(\fp_eval:n {
- \clist_item:Nn \l__week_accum_clist
- {\l__litetable_week_day_int}-
- \clist_item:Nn \l__week_ratio_clist
- {\l__litetable_week_day_int}/2
- }\l__week_hunit_dim+\paperwidth/15,
- \fp_eval:n {-1.625-#1-#2}\l__time_vunit_dim
- )}] at (current~page.north~west)
- {
- \tl_if_exist:NT { \l__course_location_tl }
- { \l__course_location_tl }
- \l_courseinfo_sep_tl
- \tl_if_exist:NT { \l__course_teacher_tl }
- { \l__course_teacher_tl }
- };
- \node [ above~left, \l__course_color_tl!60, outer~sep = .5ex,
- shift = {(
- \clist_item:Nn \l__week_accum_clist
- {\l__litetable_week_day_int}
- \l__week_hunit_dim+\paperwidth/15,
- \fp_eval:n {-2.5-2*#2}\l__time_vunit_dim
- )}] at (current~page.north~west) { \l__default_weeks_tl };
+ {
+ \tl_if_exist:NT { \l__course_location_tl }
+ { \l__course_location_tl }
+ \l_shortcourse_sep_tl
+ \tl_if_exist:NT { \l__course_teacher_tl }
+ { \l__course_teacher_tl }
+ };
+ }
+ {
+ \bool_if:nTF% Multiply-unit height course box
+ {
+ \tl_if_empty_p:N \l__course_location_tl &&
+ \tl_if_empty_p:N \l__course_teacher_tl
+ }
+ {
+ \tl_set:Nn \l_course_anchor_tl { }
+ \dim_set:Nn \l__course_infoshift_dim { 0pt }
+ }
+ {
+ \tl_set:Nn \l_course_anchor_tl { above }
+ \dim_set:Nn \l__course_infoshift_dim { \l__time_vunit_dim/8 }
+ }
+ \cs_if_exist:NT { \l__course_subject_tl }
+ {
+ \node
+ [ shift =
+ {(
+ \fp_eval:n
+ {
+ \clist_item:Nn \l__week_accum_clist
+ { \l__litetable_week_day_int } -
+ \clist_item:Nn \l__week_ratio_clist
+ { \l__litetable_week_day_int }/2
+ } \l__week_hunit_dim + \paperwidth/15,
+ \fp_eval:n { - 1.5 - #1 - #2 } \l__time_vunit_dim+
+ \l__course_infoshift_dim
+ )}, font = \large\bfseries, \l_course_anchor_tl,
+ \l__course_color_tl!60, align = center
+ ] at (current~page.north~west) { \l__course_subject_tl };
+ }
+ \bool_if:nTF
+ {
+ !\tl_if_empty_p:N \l__course_location_tl &&
+ !\tl_if_empty_p:N \l__course_teacher_tl
+ }
+ { \tl_set:Nn \l_courseinfo_sep_tl { \\ } }
+ { \tl_set:Nn \l_courseinfo_sep_tl { } }
+ \node
+ [ shift =
+ {(
+ \fp_eval:n
+ {
+ \clist_item:Nn \l__week_accum_clist
+ { \l__litetable_week_day_int } -
+ \clist_item:Nn \l__week_ratio_clist
+ { \l__litetable_week_day_int }/2
+ } \l__week_hunit_dim + \paperwidth/15,
+ \fp_eval:n { - 1.625 - #1 - #2 } \l__time_vunit_dim
+ )}, below, \l__course_color_tl!60, align = center
+ ] at (current~page.north~west)
+ {
+ \tl_if_exist:NT { \l__course_location_tl }
+ { \l__course_location_tl }
+ \l_courseinfo_sep_tl
+ \tl_if_exist:NT { \l__course_teacher_tl }
+ { \l__course_teacher_tl }
+ };
+ \node
+ [ shift =
+ {(\clist_item:Nn \l__week_accum_clist
+ { \l__litetable_week_day_int }
+ \l__week_hunit_dim + \paperwidth/15,
+ \fp_eval:n { - 2.5 - 2 * #2 } \l__time_vunit_dim
+ )}, above~left, \l__course_color_tl!60, outer~sep = .5ex
+ ] at (current~page.north~west) { \l__default_weeks_tl };
+ }
}
-}
\litetable_msg_new:nn { course }
-{ \exp_not:N \course~box(s)~exceed~workdays~were~ignored }
+ { \exp_not:N \course~box(s)~exceed~workdays~were~ignored }
\NewDocumentCommand \course { O{} m O{} m O{} }
-{
- \group_begin:
- \int_compare:nNnTF {\l__litetable_week_day_int-1} <
- {\clist_count:N \l__litetable_weeklist_clist}
{
- \keys_set:nn { litetable / course } { #1#3#5 }
- \__litetable_course_box_aux:nn { #2 } { #4 }
- }{
- \litetable_msg_warning:n { course }
+ \group_begin:
+ \int_compare:nNnTF { \l__litetable_week_day_int - 1 } <
+ { \clist_count:N \l__litetable_weeklist_clist }
+ {
+ \keys_set:nn { litetable / course } { #1 #3 #5 }
+ \__litetable_course_box_aux:nn {#2} {#4}
+ }
+ { \litetable_msg_warning:n { course } }
+ \group_end:
}
- \group_end:
-}
\endinput
-% End of file litetable.cls \ No newline at end of file
+% End of file litetable.cls