![使用 ConTeXt 的引文宏](https://linux22.com/image/249923/%E4%BD%BF%E7%94%A8%20ConTeXt%20%E7%9A%84%E5%BC%95%E6%96%87%E5%AE%8F.png)
考虑以下例子(背景这个问题)。
\setupbibtex[database={library},sort=author]
\setuppublications[alternative=apa]
%\define[1]\reference{\cite[data][#1]}
\starttext
\cite[data][Bohr:1923tl]
%\reference{Bohr:1923tl}
\section{References}
\placepublications[criterium=all]
\stoptext
通过 Mk-IV 运行后显示出预期的行为:
只需通过取消注释来定义宏define
- 甚至没有使用它 - 就会破坏它。(def
也无济于事)。
如何定义引用宏?
答案1
详细阐述一下我的评论:\reference
Context 用户界面宏到 pdf 超链接功能(好奇:它在类似的命令中定义strc-ref.mkvi)。它也可内部使用,例如在宏中\thebibtexpublicationlistelement
,它排版参考书目列表的单个条目(参见圣经-bib.mkiv)。
因此,重新定义\reference
是一个坏主意™:它肯定会破坏自动生成的参考文献,损坏的参考书目是附带损害。如果您使用\define
,Context 会在日志文件中给您一个提示:
system > command \reference is already defined
选择一个无害的宏标识符:大写例如,这将确保宏永远不会与任何内部函数发生冲突。因此,\Reference
这是更好的选择。