如何将旁注放在可用的空白处,而不仅仅是在页边空白处

如何将旁注放在可用的空白处,而不仅仅是在页边空白处

我正在创建一个显示文档标准模板的文档。我想为模板占位符添加一些杂项注释。例如

[date1]   [COMMENT: Please use only dates obtained from
[date2]   the Center for Dates.]
[date3]

由于日期列表右侧会有很多空白,我希望评论出现在那里。这样更贴近主题,节省空间。我找到的最接近我想要的是这样,\marginpar{}但它并没有完全解决问题。

我怎样才能在 LaTeX 中做到这一点?

答案1

这种布局的难点在于,日期的打印网格与注释的网格不同,也就是说,表格环境不适合排版这种布局。在某种程度上,注释被排版为“侧边脚注”!

在此处输入图片描述

为了方便作者输入行,我们提供了一个用户命令:

\adddate{date..}{Please ....}

我们创建一个列表来保存所有数据。然后我们遍历列表并使用两个小页面进行排版。添加一些盐和胡椒以及一些 LaTeX 内核黑魔法命令,我们得到以下最简版本:

\documentclass{article}
\makeatletter
\def\listone{}
\def\adddate#1#2{
   \ifx\@empty\listone
       \g@addto@macro{\listone}{#1}
       \else \g@addto@macro{\listone}{,#1}
   \fi
   \expandafter\def\csname#1\endcsname{\footnotesize #2}
}

\parindent0pt
\begin{document}
% add some data 
\adddate{date1}{1 Please use only dates obtained from the Center for Dates.}
\adddate{date2}{2 Please use original dates.}
\adddate{date3}{3 Please use original dates.}
% print the data
% define a macro for this for convenience
% if you want
\begin{minipage}[t]{2.5cm}
\@for\next:=\listone\do{%
    \next \par
}
\end{minipage}
\begin{minipage}[t]{3cm}
\@for\next:=\listone\do{%
    \@nameuse\next \par
}
\end{minipage}
\end{document}

如果您要广泛使用此类代码,可以添加额外的宏来保存循环的代码。

相关内容