在页边空白处列出日期的标题命令

在页边空白处列出日期的标题命令

我想在 LaTeX 中保存某种日记,在这种情况下,我需要如下命令:

\entry{日期}{标题}

从而满足以下条件:

  • 每个“日记条目”对应日记的一个章节(假设日记使用文档类书)并从新的一页开始;
  • 日期列在标题左边距的边注上;
  • 标题正好从左边距开始(因此与下面的文本对齐)。

这样,我最终可以在目录中列出所有日记条目。对我来说不太重要但有用的是控制条目标题和条目第一句之间的间距(假设这个垂直距离等于\parskip)。

欢迎所有想法、问题和建议。

答案1

这是一个使用article类并手动设置标题的选项。目录条目以\sections 形式插入,您可以使用tocloft, 如果需要的话:

在此处输入图片描述

\documentclass{article}

\usepackage[paper=a5paper]{geometry}% Document layout
\usepackage{graphicx}
\usepackage{lipsum}

\makeatletter
\newcommand{\entry}[2]{% \entry{<date>}{<title>}
  \clearpage
  \noindent\leavevmode
  \addcontentsline{toc}{section}{#2}% Add to ToC
  \makebox[0pt][r]{\smash{\rotatebox[origin=r]{90}{\@datefont\strut #1\hspace*{-.5\baselineskip}}}\hspace{\datedist}}%
  {\@titlefont #2\par}%
  \vspace{\titleskip}
  \leavevmode\noindent
}
\newlength{\datedist}
\newcommand{\setdatedist}{\setlength{\datedist}}
\newcommand{\datefont}[1]{\gdef\@datefont{#1}}
\newcommand{\titlefont}[1]{\gdef\@titlefont{#1}}
\newlength{\titleskip}
\newcommand{\settitleskip}{\setlength{\titleskip}}
\makeatother

% Defaults
\datefont{\scshape}
\titlefont{\large\bfseries\sffamily}
\setdatedist{1em}
\settitleskip{\parskip}

% If you want to format the ToC entries...
\usepackage{tocloft}
\renewcommand{\cftsecfont}{\normalfont}

\begin{document}

\tableofcontents

\entry{\today}{Today}
\lipsum[1]

\entry{2017-06-01}{Tomorrow}
\lipsum[1-2]

\entry{July 1st, 2016}{Yesterday}
\lipsum[1-3]

\end{document}

已添加自定义更改

  • 日期偏移到边距的距离(通过\setdatedist{<len>});

  • 日期字体(通过\datefont{<font>});

  • 标题字体(通过\titlefont{<font>});和

  • 标题条目下方的垂直跳过(通过\settitleskip{<len>})。

相关内容