2024-09-27 11:34:18 +08:00
|
|
|
|
\usepackage{tasks}
|
|
|
|
|
\usepackage[framemethod=TikZ]{mdframed}
|
|
|
|
|
% \usepackage[tikz]{bclogo}
|
|
|
|
|
\usepackage{fontawesome5}
|
2024-10-05 21:39:44 +08:00
|
|
|
|
\usepackage{underscore}
|
|
|
|
|
\usepackage{booktabs}
|
|
|
|
|
\usepackage[l3]{csvsimple}
|
2024-09-27 11:34:18 +08:00
|
|
|
|
|
|
|
|
|
\usepackage{amssymb, amsfonts, amstext, amsmath, amsopn, amsthm}
|
|
|
|
|
\usepackage{booktabs}
|
|
|
|
|
\usepackage{hyperref}
|
|
|
|
|
\usepackage{fancyhdr}
|
|
|
|
|
\usepackage{enumitem}
|
|
|
|
|
\usepackage{totpages}
|
|
|
|
|
\usepackage{mylatex}
|
|
|
|
|
\usepackage{subfiles}
|
|
|
|
|
|
|
|
|
|
\title{《数据库系统原理与实践》作业}
|
|
|
|
|
\author{岳锦鹏}
|
|
|
|
|
\newcommand{\mysignature}{10213903403 岳锦鹏}
|
|
|
|
|
\date{2024年9月11日}
|
|
|
|
|
\setlist[1]{listparindent=\parindent}
|
|
|
|
|
\setlist[2]{label=\textbf{\alph{enumii}.},listparindent=\parindent}
|
|
|
|
|
\setlist[3]{label=\textbf{\alph{enumii}.},listparindent=\parindent}
|
|
|
|
|
\definecolor{shadecolor}{RGB}{204,232,207}
|
|
|
|
|
\definecolor{verificationColor}{RGB}{85,206,255} % 这颜色误差确实有点大啊,目前手动调的
|
|
|
|
|
\setitemize[1]{label=\textbullet}
|
|
|
|
|
\settasks{label=\Alph*.}
|
|
|
|
|
\newmdenv[%
|
|
|
|
|
frametitle={%
|
|
|
|
|
\tikz[]
|
|
|
|
|
\node[anchor=east,rectangle,fill=verificationColor]
|
|
|
|
|
{ \faIcon{search}\ 验证一下};}, %
|
|
|
|
|
% frametitlerule=true, %
|
|
|
|
|
% frametitlebelowskip=10pt, %
|
|
|
|
|
roundcorner=5pt, %
|
|
|
|
|
innertopmargin=10pt,linecolor=verificationColor,%
|
|
|
|
|
linewidth=2pt,topline=true, %
|
|
|
|
|
frametitleaboveskip=\dimexpr-\ht\strutbox\relax,
|
2024-10-05 21:39:44 +08:00
|
|
|
|
]{verification}
|
|
|
|
|
|
|
|
|
|
\setminted{breaklines=true}
|
|
|
|
|
|
|
|
|
|
% 将minted的外框修复为framed,修复换行的问题
|
|
|
|
|
\setlength{\FrameRule}{0pt}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\ExplSyntaxOn
|
|
|
|
|
% \debug_on:n {all}
|
|
|
|
|
\newcommand{\choice}[3][4]{
|
|
|
|
|
\seq_clear:N \l_tmpa_seq
|
|
|
|
|
\tl_clear:N \l_tmpa_tl
|
|
|
|
|
% 这种情况还是re.split好用,search和findall都不好用
|
|
|
|
|
\regex_split:nnNT {[\c{par}\ ]+[A-Z]\ } {#2} \l_tmpa_seq {
|
|
|
|
|
\seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl
|
|
|
|
|
\tl_put_right:Nn \l_tmpa_tl {\begin{tasks}[](#1)}
|
|
|
|
|
\seq_map_indexed_inline:Nn \l_tmpa_seq {
|
|
|
|
|
\tl_if_eq:nnTF {##1}{#3} {
|
|
|
|
|
\tl_set:Nn \l_tmpb_tl {##2}
|
|
|
|
|
% \tl_show:N \l_tmpb_tl
|
|
|
|
|
\regex_replace_once:nnNTF {\c{mint}} {\c{mint}[frame=single]}\l_tmpb_tl {
|
|
|
|
|
\tl_put_right:Nn \l_tmpa_tl {\task}
|
|
|
|
|
\tl_put_right:No \l_tmpa_tl {\l_tmpb_tl}
|
|
|
|
|
}{
|
|
|
|
|
\tl_put_right:Nn \l_tmpa_tl {\task \fbox {##2}}
|
|
|
|
|
}
|
|
|
|
|
} {
|
|
|
|
|
\tl_put_right:Nn \l_tmpa_tl {\task ##2}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
\tl_put_right:Nn \l_tmpa_tl {\end{tasks}}
|
|
|
|
|
% 唉弄半天还是这种好用,token list就直接手动插入,这就完全不用考虑在环境中的扩展了
|
|
|
|
|
\l_tmpa_tl
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
% https://zhuanlan.zhihu.com/p/557120394
|
|
|
|
|
\tl_const:Nn \c_csv_blank_line { \par }
|
|
|
|
|
|
|
|
|
|
\cs_set:Npn \__csv_read:nV #1#2 {
|
|
|
|
|
|
|
|
|
|
\ior_open:Nn \g_tmpa_ior {#1}
|
|
|
|
|
\int_gzero:N \g_tmpa_int
|
|
|
|
|
\tl_clear:N \g_tmpa_tl
|
|
|
|
|
\tl_clear:N \l_tmpa_tl
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\bool_until_do:nn {\ior_if_eof_p:N \g_tmpa_ior}{
|
|
|
|
|
\ior_get:NN \g_tmpa_ior \l_csv_line_tl
|
|
|
|
|
\int_gincr:N \g_tmpa_int % 行计数
|
|
|
|
|
\tl_clear:N \g_tmpb_tl
|
|
|
|
|
|
|
|
|
|
\tl_if_eq:NNF \l_csv_line_tl \c_csv_blank_line % 判断空行
|
|
|
|
|
{
|
|
|
|
|
\seq_set_split:NnV \l_tmpa_seq {,} \l_csv_line_tl
|
|
|
|
|
\int_gzero:N \g_tmpb_int
|
|
|
|
|
\tl_gset:Nn \rownum {\int_use:N \g_tmpa_int} %行号接口
|
|
|
|
|
\seq_map_inline:Nn \l_tmpa_seq {
|
|
|
|
|
\int_gincr:N \g_tmpb_int % 列计数
|
|
|
|
|
% 提供列接口
|
|
|
|
|
% \tl_gset:cn {col \int_to_roman:n \g_tmpb_int}{##1}
|
|
|
|
|
\int_compare:nNnTF \g_tmpb_int = 1 { % 判断首列
|
|
|
|
|
\tl_put_right:Nn \g_tmpb_tl {##1}
|
|
|
|
|
}{
|
|
|
|
|
\tl_put_right:Nn \g_tmpb_tl {& ##1}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
\tl_put_right:Nn \g_tmpb_tl {\\} % 一行结束
|
|
|
|
|
\int_compare:nNnT \g_tmpa_int = 1 { % 判断首行
|
|
|
|
|
\tl_set:Nx \l_tmpa_tl {\prg_replicate:nn \g_tmpb_int c}
|
|
|
|
|
\tl_show:N \l_tmpa_tl
|
|
|
|
|
\tl_put_right:Nn \g_tmpa_tl {\begin{tabular}}
|
|
|
|
|
\tl_put_right:Nx \g_tmpa_tl {{\tl_use:N \l_tmpa_tl}}
|
|
|
|
|
\tl_put_right:Nn \g_tmpa_tl {\toprule}
|
|
|
|
|
}
|
|
|
|
|
\tl_show:N \g_tmpa_tl
|
|
|
|
|
\tl_put_right:Nx \g_tmpa_tl {\tl_use:N \g_tmpb_tl}
|
|
|
|
|
\int_compare:nNnT \g_tmpa_int = 1 {
|
|
|
|
|
\tl_put_right:Nn \g_tmpa_tl {\midrule}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
\tl_put_right:Nn \g_tmpa_tl {\bottomrule \end{tabular}}
|
|
|
|
|
\tl_use:N \g_tmpa_tl
|
|
|
|
|
|
|
|
|
|
\ior_close:N \g_tmpa_ior
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
\newcommand{\readcsv}[2]{ % L2命令
|
|
|
|
|
\__csv_read:nV {#1}{#2}
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-09 21:28:21 +08:00
|
|
|
|
% 用 \csvautotabular[#1]{rawfile.csv} 不行
|
|
|
|
|
% 用 \csvstyle{every csv}{#1} 也不行
|
|
|
|
|
% 在 csv环境外用\csvstyle{every csv}{separator=tab}就可以
|
2024-10-05 21:39:44 +08:00
|
|
|
|
\newenvironment{csv}{
|
|
|
|
|
\VerbatimEnvironment
|
|
|
|
|
\begin{VerbatimOut}[codes={\catcode`\^^I=12},firstline,lastline]{rawfile.csv}%
|
|
|
|
|
}{
|
|
|
|
|
\end{VerbatimOut}%
|
|
|
|
|
% \readcsv {rawfile.csv}{}
|
|
|
|
|
\csvautotabular{rawfile.csv}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
\ExplSyntaxOff
|