合并边注内容

合并边注内容

每当定义一个概念时,我都会使用 marginnotes(有时在 mdframed 环境中)在边缘处书写,例如:

\documentclass{article}
\usepackage{marginnote,tikz,mdframed}
\usepackage{amsthm}

\newmdtheoremenv[linecolor=black]{definition}{Definition}

\newcommand{\defi}[1]{%
  \marginnote{\tiny #1}%
  \emph{#1}}

\begin{document}

\begin{definition}
An \defi{apple} is a fruit, a \defi{mirror} is an object 
and a \defi{fish} is an animal.
\end{definition}
\end{document}

唉,当在同一行定义两个或更多事物时,我遇到了问题---在示例中,“苹果”,“镜子”和“鱼”在边缘重叠。

我知道这是一个功能,但想知道是否可以将两次调用的内容合并到 marginnote 中。

(如果将 marginnote 替换为 marginpar ,则会得到“浮动值丢失”的结果。)

理想情况下,我会在页边空白处写上“苹果、镜子、鱼”

我想知道是否可以更改 marginnote 以便

  • 当到达 a 时\marginnote,它的参数会附加到某个列表(标记?)...理想情况下,添加一些分隔符,例如,);
  • 当排版边注时,它会将此标记列表重置为空

我也知道回忆录的高级旁注功能,但我必须坚持使用文章。


作为最后的手段,如果这不可能的话,我正在考虑以下措施:

  • 每次\defi调用它时都会附加到以逗号分隔的定义列表中;
  • 使用类似 everypage 的东西然后调用 tikzpicture 将列表覆盖在文档的边缘并重置列表内容

编辑:@TeXnician 提出了一个类似的问题边注自动连接但是 David 的答案有副作用,即在 mdframed 框内添加了注释。(我没有设法运行 Tobi 的答案,但我猜我可能会遇到相同的 Float(s) 丢失问题。)

答案1

您可以尝试类似这样的方法。它仅检查定义(它们的开始)是否在同一行和同一页上。

\documentclass{article}
\usepackage{marginnote}
\usepackage{zref-savepos,zref-abspage}
\usepackage{expl3}


\ExplSyntaxOn\makeatletter
\int_new:N \g_tassio_note_int
\seq_new:N\g_tassio_note_seq

\newcommand{\defi}[1]{%
  \int_gincr:N \g_tassio_note_int
  \bool_if:nTF
  {
   \int_compare_p:n 
    {
     \zposy{tassionotepos\int_eval:n{\g_tassio_note_int}} 
     =  
     \zposy{tassionotepos\int_eval:n{\g_tassio_note_int +1}}
    }
   &&
   \int_compare_p:n  
   {
    \zref@extractdefault { tassionotepage\int_eval:n{\g_tassio_note_int } }{abspage}{-1}
    =
    \zref@extractdefault { tassionotepage\int_eval:n{\g_tassio_note_int +1} }{abspage}{-1}
   }
  }
   {
    \seq_gput_left:Nn \g_tassio_note_seq {#1}
   }
   {
    \seq_gput_left:Nn \g_tassio_note_seq {#1}
    \marginnote{\tiny \seq_use:Nn \g_tassio_note_seq {,~}}%
    \seq_gclear:N \g_tassio_note_seq
   } 
  \zref@label {tassionotepage\int_use:N\g_tassio_note_int}\zsaveposy {tassionotepos\int_use:N\g_tassio_note_int}
  \emph{#1}}

\ExplSyntaxOff\makeatother

\begin{document}
An \defi{apple} is a fruit, a \defi{mirror} is an object
and a \defi{fish} is an animal.
\\ \defi{duck} 


\newpage \defi{snowmann}

\end{document}

在此处输入图片描述

相关内容