![实验室笔记本的自定义“列表”命令](https://linux22.com/image/308971/%E5%AE%9E%E9%AA%8C%E5%AE%A4%E7%AC%94%E8%AE%B0%E6%9C%AC%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E2%80%9C%E5%88%97%E8%A1%A8%E2%80%9D%E5%91%BD%E4%BB%A4.png)
我用 LaTeX 保存了博士论文的实验笔记。我将其设置为每个“项目”都有自己的章节。
当我在笔记本中进行新记录时,我使用自定义的“记录命令”:
\newcommand{\entry}[2]{%
\marginnote{#1}%
}
第一个字段是日期,第二个字段是条目内容的简要说明,例如
\entry{2015-04-08}{Information on geospatial data}
有没有办法为“条目”命令创建一个按章节分隔的“列表”功能,以便我可以快速概览我执行了哪些任务/实验以及何时执行了哪些任务/实验,而无需深入研究文档?这将包括字段#1
和#2
。
或者有更好的方法来设置它?如果可能的话,我宁愿使用命令,而不必切换到环境。
答案1
像这样吗?
我使用了标准book
类,修改了外观(但没有修改逻辑)\entry
和tocloft
包,以便自动将数据输入到.lab
包含日期和注释的文件中。
这是使用\cft.....
提供的各种命令排版的tocloft
。
此外,输出中每个章节后面都有一个空的分隔线\listoflabentries
。
\documentclass{book}
\usepackage{xpatch}
\usepackage{tocloft}
\usepackage{tcolorbox}
\usepackage{marginnote}
\newcommand{\listoflabentriesname}{List of Entries}
\newlistof[chapter]{labentries}{lab}{\listoflabentriesname}
\setlength{\cftlabentriesnumwidth}{3cm}
%%% no dots
\renewcommand{\cftlabentriesdotsep}{\cftnodots}
%% Stolen for tocloft documentation
\newlength{\mylen}
\setlength{\mylen}{0.5em}
\renewcommand{\cftlabentriespresnum}{\hfill} % note the double `l'
\renewcommand{\cftlabentriesaftersnum}{\hspace*{\mylen}}
\addtolength{\cftlabentriesnumwidth}{\mylen}
\newcommand{\entry}[2]{%
\refstepcounter{labentries}
\marginnote{#1}
\begin{tcolorbox}[colback=yellow]
#2
\end{tcolorbox}
\renewcommand{\thelabentries}{\bfseries #1}
% Adding the entry to the \jobname.lab file
\addcontentsline{lab}{labentries}{\protect\numberline{\thelabentries}\bfseries#2}
}
\makeatletter
\xpatchcmd{\@chapter}{%
\addtocontents{lof}{\protect\addvspace{10\p@}}}{%
\addtocontents{lab}{\protect\addvspace{10\p@}}
\addtocontents{lof}{\protect\addvspace{10\p@}}
}{\typeout{Patch success}}{}
\makeatother
\begin{document}
\listoflabentries
\chapter{First}
\entry{2015-04-08}{Information on geospatial data}
\chapter{Second}
\entry{Stardate 5934}{Captain's log: Data becomes sillier every day}
\entry{Stardate 5934.6}{Captain's log: Date with Dr. Beverly Crusher quite disappointing. Don't know what to do now}
\end{document}