我正在尝试使用 LaTeX 中最佳的“用户界面”创建以下结构:
---------------------------------------------
| Week 1 | 1. Topic 1 |
| | 2. Topic 2 |
---------------------------------------------
| Week 2 | 1. Topic 3 |
| | 2. Topic 4 |
---------------------------------------------
当然,我可以使用嵌套的enumerate
来创建它tabular
,但是它看起来很丑陋,并且很难维护所有的&
和\\
字符。
我需要的是一种清晰地定义此结构的方法,以便代码看起来很漂亮。唯一的要求是编号、表格结构,当然还有跨页大纲。如果有可用的包,我很乐意修改它。(我在 CTAN 上找到了 courseoutline 包,但它没有每周主题细分。)
答案1
我构建了一个自定义环境,其中包含美观的表格。结果将是:
\documentclass{article}
\usepackage{etoolbox}
\usepackage{booktabs}
\newcounter{a}
\newcounter{b}[a]
\newbool{firstline}
\newenvironment{mytabular}{%
\setcounter{a}{0}%
\setcounter{b}{0}%
\booltrue{firstline}%
\begin{tabular}{ll}
\toprule}
{\\ \bottomrule\end{tabular}}
\newcommand{\mitem}[2][]{%
\ifbool{firstline}{}{\ifblank{#1}{\\\cmidrule{2-2}}{\\\midrule}}%
\global\boolfalse{firstline}%
#1 \ifblank{#1}{}{\stepcounter{a}\thea}%
\addtocounter{b}{1} %
&\theb. #2%
}
\newcommand{\witem}[1]{\mitem[Week]{#1}}
\begin{document}
\begin{mytabular}
\mitem[Week]{Subject}
\mitem{Another subject}
\mitem{And another}
\witem{Usage of witem}
\end{mytabular}
\end{document}
或者如果你不喜欢这种表格样式,你可以使用这个:
\documentclass{article}
\usepackage{etoolbox}
\newcounter{a}
\newcounter{b}[a]
\newbool{firstline}
\newenvironment{mytabular}{%
\setcounter{a}{0}%
\setcounter{b}{0}%
\booltrue{firstline}%
\begin{tabular}{|l|l|}
\hline}
{\\ \hline\end{tabular}}
\newcommand{\mitem}[2][]{%
\ifbool{firstline}{}{\ifblank{#1}{\\\cline{2-2}}{\\\hline}}%
\global\boolfalse{firstline}%
#1 \ifblank{#1}{}{\stepcounter{a}\thea}%
\addtocounter{b}{1} %
&\theb. #2%
}
\newcommand{\witem}[1]{\mitem[Week]{#1}}
\begin{document}
\begin{mytabular}
\mitem[Week]{Subject}
\mitem{Another subject}
\mitem{And another}
\witem{Usage of witem}
\end{mytabular}
\end{document}